C library for SOAP (Simple Object Access Protocol)


Common stuff
[nanoHTTP]


Modules

 Header Fields
 HTTP status-codes

Data Structures

struct  hpair
struct  _content_type
struct  part_t
struct  attachments_t

Defines

#define NHTTP_ARG_CERT   "-NHTTPcert"
#define NHTTP_ARG_CERTPASS   "-NHTTPcertpass"
#define NHTTP_ARG_CA   "-NHTTPCA"
#define SAVE_STR(str)   ((str==0)?("(null)"):(str))
#define BOUNDARY_LENGTH   18
#define MAX_HEADER_SIZE   4256
#define MAX_FILE_BUFFER_SIZE   4256
#define REQUEST_MAX_PATH_SIZE   1024
#define RESPONSE_MAX_DESC_SIZE   1024

Typedefs

typedef struct hpair hpair_t
typedef enum _http_version http_version_t
typedef struct _content_type content_type_t
typedef enum _hreq_method hreq_method_t

Enumerations

enum  _http_version { HTTP_1_0, HTTP_1_1 }
enum  _hreq_method {
  HTTP_REQUEST_POST, HTTP_REQUEST_GET, HTTP_REQUEST_OPTIONS, HTTP_REQUEST_HEAD,
  HTTP_REQUEST_PUT, HTTP_REQUEST_DELETE, HTTP_REQUEST_TRACE, HTTP_REQUEST_CONNECT,
  HTTP_REQUEST_UNKOWN
}

Functions

hpair_t * hpairnode_new (const char *key, const char *value, hpair_t *next)
hpair_t * hpairnode_parse (const char *str, const char *delim, hpair_t *next)
void hpairnode_free (hpair_t *pair)
void hpairnode_free_deep (hpair_t *pair)
char * hpairnode_get (hpair_t *pair, const char *key)
char * hpairnode_get_ignore_case (hpair_t *pair, const char *key)
hpair_t * hpairnode_copy (const hpair_t *src)
hpair_t * hpairnode_copy_deep (const hpair_t *src)
void hpairnode_dump_deep (const hpair_t *pairs)
void hpairnode_dump (const hpair_t *pair)
content_type_t * content_type_new (const char *content_type_str)
void content_type_free (content_type_t *ct)
struct part_t * part_new (const char *id, const char *filename, const char *content_type, const char *transfer_encoding, struct part_t *next)
void part_free (struct part_t *part)
struct attachments_t * attachments_new (void)
void attachments_free (struct attachments_t *message)
void attachments_add_part (struct attachments_t *attachments, struct part_t *part)

Define Documentation

#define BOUNDARY_LENGTH   18

#define MAX_FILE_BUFFER_SIZE   4256

#define MAX_HEADER_SIZE   4256

#define NHTTP_ARG_CA   "-NHTTPCA"

#define NHTTP_ARG_CERT   "-NHTTPcert"

Common commandline arguments for client and server.

#define NHTTP_ARG_CERTPASS   "-NHTTPcertpass"

#define REQUEST_MAX_PATH_SIZE   1024

#define RESPONSE_MAX_DESC_SIZE   1024

#define SAVE_STR ( str   )     ((str==0)?("(null)"):(str))


Typedef Documentation

typedef struct _content_type content_type_t

Object representation of the content-type field in a HTTP header:

Example:

    Content-Type: text/xml; key="value" key2="value2' ...
 * 

See also:
HEADER_CONTENT_TYPE

typedef struct hpair hpair_t

hpairnode_t represents a pair (key, value) pair. This is also a linked list.

The set of common methods for HTTP/1.1 is defined below. Although this set can be expanded, additional methods cannot be assumed to share the same semantics for separately extended clients and servers.

The Host request-header field MUST accompany all HTTP/1.1 requests.

See also:
HTTP_HEADER_HOST

Indicates the version of the used HTTP protocol.


Enumeration Type Documentation

The set of common methods for HTTP/1.1 is defined below. Although this set can be expanded, additional methods cannot be assumed to share the same semantics for separately extended clients and servers.

The Host request-header field MUST accompany all HTTP/1.1 requests.

See also:
HTTP_HEADER_HOST
Enumerator:
HTTP_REQUEST_POST  The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line. POST is designed to allow a uniform method to cover the following functions:
  • Annotation of existing resources;
  • Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles;
  • Providing a block of data, such as the result of submitting a form, to a data-handling process;
  • Extending a database through an append operation.
HTTP_REQUEST_GET  The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.
HTTP_REQUEST_OPTIONS  The OPTIONS method represents a request for information about the communication options available on the request/response chain identified by the Request-URI. This method allows the client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.
HTTP_REQUEST_HEAD  The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response. The metainformation contained in the HTTP headers in response to a HEAD request SHOULD be identical to the information sent in response to a GET request. This method can be used for obtaining metainformation about the entity implied by the request without transferring the entity-body itself. This method is often used for testing hypertext links for validity, accessibility, and recent modification.
HTTP_REQUEST_PUT  The PUT method requests that the enclosed entity be stored under the supplied Request-URI. If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server. If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new resource by the requesting user agent, the origin server can create the resource with that URI. If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request. If the resource could not be created or modified with the Request-URI, an appropriate error response SHOULD be given that reflects the nature of the problem. The recipient of the entity MUST NOT ignore any Content-* (e.g. Content-Range) headers that it does not understand or implement and MUST return a 501 (Not Implemented) response in such cases.
HTTP_REQUEST_DELETE  The DELETE method requests that the origin server delete the resource identified by the Request-URI. This method MAY be overridden by human intervention (or other means) on the origin server. The client cannot be guaranteed that the operation has been carried out, even if the status code returned from the origin server indicates that the action has been completed successfully. However, the server SHOULD NOT indicate success unless, at the time the response is given, it intends to delete the resource or move it to an inaccessible location.
HTTP_REQUEST_TRACE  The TRACE method is used to invoke a remote, application-layer loop-back of the request message. The final recipient of the request SHOULD reflect the message received back to the client as the entity-body of a 200 (OK) response. The final recipient is either the origin server or the first proxy or gateway to receive a Max-Forwards value of zero (0) in the request (see section 14.31). A TRACE request MUST NOT include an entity.
HTTP_REQUEST_CONNECT  This specification reserves the method name CONNECT for use with a proxy that can dynamically switch to being a tunnel (e.g. SSL tunneling [44]).
HTTP_REQUEST_UNKOWN 

Indicates the version of the used HTTP protocol.

Enumerator:
HTTP_1_0 
HTTP_1_1 


Function Documentation

void attachments_add_part ( struct attachments_t *  attachments,
struct part_t *  part 
)

void attachments_free ( struct attachments_t *  message  ) 

Free a attachment. Create attachments with MIME

See also:
mime_get_attachments

struct attachments_t* attachments_new ( void   )  [read]

void content_type_free ( content_type_t *  ct  ) 

Frees the given content_type_t object

content_type_t* content_type_new ( const char *  content_type_str  ) 

Parses the given string and creates a new ccontent_type_t object.

Parameters:
content_type_str the string representation of the content-type field in a HTTP header.
Returns:
A newly created content_type_t object. Free this object with content_type_free();
See also:
content_type_free

hpair_t* hpairnode_copy ( const hpair_t *  src  ) 

This function will create a new pair and fills the (key,value) fields of a given pair. Note that the 'next' field will not be copied.

Parameters:
src the source pair object to copy.
Returns:
a newly created pair with the same (key,value) pairs as in 'src'. This fields will be cloned. The'next' field will be set to NULL.
See also:
hpairnode_copy_deep

hpair_t* hpairnode_copy_deep ( const hpair_t *  src  ) 

Clones the hole linked list.

Parameters:
src the source pair object to copy from
Returns:
the first object in the linked list.
See also:
hpairnode_copy

void hpairnode_dump ( const hpair_t *  pair  ) 

Dumps the pair specified.

void hpairnode_dump_deep ( const hpair_t *  pairs  ) 

Dumps a set of pairs.

See also:
hpairnode_dump

void hpairnode_free ( hpair_t *  pair  ) 

Frees a given pair.

Parameters:
pair the pair to free

void hpairnode_free_deep ( hpair_t *  pair  ) 

Makes a deep free operation. All pairnodes, beginning with the given pari, in the linked list will be destroyed.

Parameters:
pair the pair to start to free the linked list

char* hpairnode_get ( hpair_t *  pair,
const char *  key 
)

Returns the (key,value) pair, which key is the given 'key'.

Parameters:
pair the first pair to start to search from.
key key to find the in the pair.
Returns:
if a value will be found, this function will

the value (do not free this string) or NULL if no pair was found with the key 'key'.

char* hpairnode_get_ignore_case ( hpair_t *  pair,
const char *  key 
)

Returns the (key,value) pair, which key is the given 'key'. The case will be ignored while comparing the key strings.

Parameters:
pair the first pair to start to search from.
key key to find the in the pair.
Returns:
if a value will be found, this function will

the value (do not free this string) or NULL if no pair was found with the key 'key'.

hpair_t* hpairnode_new ( const char *  key,
const char *  value,
hpair_t *  next 
)

Creates a new pair with the given parameters. Both strings key and value will be cloned while creating the pair.

Parameters:
key the key of the (key,value) pair
value the value of the (key,value) pair
next next pair node in the linked list
Returns:
A newly crated hpair_t object. Use hpair_free() or hpair_free_deep() to free the pair.

hpair_t* hpairnode_parse ( const char *  str,
const char *  delim,
hpair_t *  next 
)

Creates a new pair from a given string. This function will split 'str' with the found first delimiter 'delim'. The 'value' field of the newly created pair will have the value "", if no delimiter was found/ Whitespaces (' ') will be removed from the beginnig of the parsed value.

Parameters:
str A string to parse
delim a delimiter to use while splitting into key,value
next next pair node in the linked list
Returns:
A newly crated hpair_t object. Use hpair_free() or hpair_free_deep() to free the pair.

void part_free ( struct part_t *  part  ) 

struct part_t* part_new ( const char *  id,
const char *  filename,
const char *  content_type,
const char *  transfer_encoding,
struct part_t *  next 
) [read]


csoap project homepage: http://csoap.sourceforge.net