## nanohttp

nanohttp —

## Synopsis

    void        xmlNanoHTTPInit                 (void);
    void        xmlNanoHTTPCleanup              (void);
    void        xmlNanoHTTPScanProxy            (const char *URL);
    int         xmlNanoHTTPFetch                (const char *URL,
                                                 const char *filename,
                                                 char **contentType);
    void*       xmlNanoHTTPMethod               (const char *URL,
                                                 const char *method,
                                                 const char *input,
                                                 char **contentType,
                                                 const char *headers,
                                                 int ilen);
    void*       xmlNanoHTTPMethodRedir          (const char *URL,
                                                 const char *method,
                                                 const char *input,
                                                 char **contentType,
                                                 char **redir,
                                                 const char *headers,
                                                 int ilen);
    void*       xmlNanoHTTPOpen                 (const char *URL,
                                                 char **contentType);
    void*       xmlNanoHTTPOpenRedir            (const char *URL,
                                                 char **contentType,
                                                 char **redir);
    int         xmlNanoHTTPReturnCode           (void *ctx);
    const char* xmlNanoHTTPAuthHeader           (void *ctx);
    int         xmlNanoHTTPRead                 (void *ctx,
                                                 void *dest,
                                                 int len);
    int         xmlNanoHTTPSave                 (void *ctxt,
                                                 const char *filename);
    void        xmlNanoHTTPClose                (void *ctx);

## Description

## Details

### xmlNanoHTTPInit ()

    void        xmlNanoHTTPInit                 (void);

Initialize the HTTP protocol layer. Currently it just checks for proxy informations

### xmlNanoHTTPCleanup ()

    void        xmlNanoHTTPCleanup              (void);

Cleanup the HTTP protocol layer.

### xmlNanoHTTPScanProxy ()

    void        xmlNanoHTTPScanProxy            (const char *URL);

(Re)Initialize the HTTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like http://myproxy/ or http://myproxy:3128/ A NULL URL cleans up proxy informations.

`URL` : | The proxy URL used to initialize the proxy context

### xmlNanoHTTPFetch ()

    int         xmlNanoHTTPFetch                (const char *URL,
                                                 const char *filename,
                                                 char **contentType);

This function try to fetch the indicated resource via HTTP GET and save it's content in the file.

`URL` : | The URL to load
`filename` : | the filename where the content should be saved
`contentType` : | if available the Content-Type information will be returned at that location
Returns : | -1 in case of failure, 0 incase of success. The contentType, if provided must be freed by the caller

### xmlNanoHTTPMethod ()

    void*       xmlNanoHTTPMethod               (const char *URL,
                                                 const char *method,
                                                 const char *input,
                                                 char **contentType,
                                                 const char *headers,
                                                 int ilen);

This function try to open a connection to the indicated resource via HTTP using the given `method`, adding the given extra headers and the input buffer for the request content.

`URL` : | The URL to load
`method` : | the HTTP method to use
`input` : | the input string if any
`contentType` : | the Content-Type information IN and OUT
`headers` : | the extra headers
`ilen` : | input length

### xmlNanoHTTPMethodRedir ()

    void*       xmlNanoHTTPMethodRedir          (const char *URL,
                                                 const char *method,
                                                 const char *input,
                                                 char **contentType,
                                                 char **redir,
                                                 const char *headers,
                                                 int ilen);

This function try to open a connection to the indicated resource via HTTP using the given `method`, adding the given extra headers and the input buffer for the request content.

`URL` : | The URL to load
`method` : | the HTTP method to use
`input` : | the input string if any
`contentType` : | the Content-Type information IN and OUT
`redir` : | the redirected URL OUT
`headers` : | the extra headers
`ilen` : | input length

### xmlNanoHTTPOpen ()

    void*       xmlNanoHTTPOpen                 (const char *URL,
                                                 char **contentType);

This function try to open a connection to the indicated resource via HTTP GET.

`URL` : | The URL to load
`contentType` : | if available the Content-Type information will be returned at that location

### xmlNanoHTTPOpenRedir ()

    void*       xmlNanoHTTPOpenRedir            (const char *URL,
                                                 char **contentType,
                                                 char **redir);

This function try to open a connection to the indicated resource via HTTP GET.

`URL` : | The URL to load
`contentType` : | if available the Content-Type information will be returned at that location
`redir` : | if available the redirected URL will be returned

### xmlNanoHTTPReturnCode ()

    int         xmlNanoHTTPReturnCode           (void *ctx);

Get the latest HTTP return code received

`ctx` : | the HTTP context
Returns : | the HTTP return code for the request.

### xmlNanoHTTPAuthHeader ()

    const char* xmlNanoHTTPAuthHeader           (void *ctx);

Get the authentication header of an HTTP context

`ctx` : | the HTTP context
Returns : | the stashed value of the WWW-Authenticate or Proxy-Authenticate header.

### xmlNanoHTTPRead ()

    int         xmlNanoHTTPRead                 (void *ctx,
                                                 void *dest,
                                                 int len);

This function tries to read `len` bytes from the existing HTTP connection and saves them in `dest`. This is a blocking call.

`ctx` : | the HTTP context
`dest` : | a buffer
`len` : | the buffer length
Returns : | the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.

### xmlNanoHTTPSave ()

    int         xmlNanoHTTPSave                 (void *ctxt,
                                                 const char *filename);

This function saves the output of the HTTP transaction to a file It closes and free the context at the end

`ctxt` : | the HTTP context
`filename` : | the filename where the content should be saved
Returns : | -1 in case of failure, 0 incase of success.

### xmlNanoHTTPClose ()

    void        xmlNanoHTTPClose                (void *ctx);

This function closes an HTTP context, it ends up the connection and free all data related to it.

`ctx` : | the HTTP context