Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Examples  

ost::URLStream Class Reference

A URL processing version of TCPStream. C++ url processing stream class. More...

#include <url.h>

Inheritance diagram for ost::URLStream::

ost::TCPStream std::streambuf ost::Socket std::iostream List of all members.

Public Types

enum  Error {
  errSuccess = 0, errUnreachable, errMissing, errDenied,
  errInvalid, errForbidden, errUnauthorized, errRelocated,
  errFailure, errTimeout, errInterface
}
 Return error for url fetch. More...

enum  Authentication { authAnonymous = 0, authBasic }
 Type of authentication. More...

enum  Encoding { encodingBinary = 0, encodingChunked }
 Encoding used in transfer. More...

enum  Method {
  methodHttpGet, methodHttpPut, methodHttpPost, methodHttpPostMultipart,
  methodFtpGet, methodFtpPut, methodFileGet, methodFilePut
}
 Type of fetch. More...

enum  Protocol { protocolHttp1_0, protocolHttp1_1 }
 http protocol version. More...


Public Methods

 URLStream (Family family=IPV4, timeout_t timer=0)
 Construct an instance of URL stream. More...

URLStream& getline (char *buffer, size_t len)
 Line parsing with conversion. More...

Error get (const char *url, size_t buffer=512)
 Get URL data from a named stream of a known buffer size. More...

Error get (size_t buffer=512)
 Get URL data from a named stream of a known buffer size. More...

Error submit (const char *url, const char **vars, size_t buffer=512)
 Submit URL with vars passed as argument array. More...

Error post (const char *url, const char **vars, size_t buffer=512)
 Post URL vars with post method. More...

Error post (const char *url, MIMEMultipartForm &form, size_t buffer=512)
 Post URL with MIME multipart form. More...

Error head (const char *url, size_t buffer=512)
 Used to fetch header information for a resource. More...

void close ()
 Close the URL stream for a new connection. More...

void setReferer (const char *str)
 Set the referer url. More...

void setHost (const char *str)
 Set the host for the url. More...

void setAddress (const char *str)
 Set the address for the url. More...

void setCookie (const char *str)
 Set the cookie to pass. More...

void setUser (const char *str)
 Set user id for the url. More...

void setPassword (const char *str)
 Set password for the url. More...

void setAuthentication (Authentication a, const char *str=NULL)
 Set authentication type for the url. More...

void setProxyUser (const char *str)
 Set proxy user id for the url. More...

void setProxyPassword (const char *str)
 Set proxy password for the url. More...

void setProxyAuthentication (Authentication a, const char *str=NULL)
 Set proxy authentication type for the url. More...

void setPragma (const char *str)
 Set the pragmas. More...

void setProxy (const char *host, tpport_t port)
 Set the proxy server used. More...

void setAgent (const char *str)
 Set the agent. More...

Method getMethod (void)
 Get url method (and protocol) employed. More...

void setTimeout (timeout_t to)
 Set socket timeout characteristics for processing URL requests. More...

void setFollow (bool enable)
 Specify url following. More...

void setProtocol (Protocol pro)
 Specify http protocol level being used. More...

void setLocalInterface (const char *intf)
 Specify local interface to use. More...


Protected Methods

Error sendHTTPHeader (const char *url, const char **vars, size_t bufsize)
 Send http header to server. More...

int underflow (void)
 Called if stream buffer needs refilling. More...

virtual int aRead (char *buffer, size_t len, timeout_t timer)
 Derived method for async or timed I/O function on url stream. More...

virtual int aWrite (char *buffer, size_t len, timeout_t timer)
 Derived method for async or timed I/O function on url stream. More...

virtual void httpHeader (const char *header, const char *value)
 Derived method to receive and parse http "headers". More...

virtual char** extraHeader (void)
 A virtual to insert additional header info into the request. More...


Protected Attributes

ost::String m_host
ost::String m_address

Related Functions

(Note that these are not member functions.)

__EXPORT char * urlDecode (char *source, char *dest=NULL)
 Decode an url parameter (ie "%20" -> " "). More...

__EXPORT char * urlEncode (const char *source, char *dest, size_t size)
 Encode an url parameter (ie " " -> "+"). More...

__EXPORT char * b64Decode (char *src, char *dest=NULL)
 Decode a string using base64 coding. More...

__EXPORT char * b64Encode (const char *source, char *dest, size_t size)
 Encode a string using base64 coding. More...

__EXPORT size_t b64Encode (const unsigned char *src, size_t srcsize, char *dst, size_t dstsize)
 Encode a octet stream using base64 coding. More...

__EXPORT size_t b64Decode (const char *src, unsigned char *dst, size_t dstsize)
 Decode a string using base64 coding. More...

__EXPORT String b64Encode (const String &src)
 Encode a STL string using base64 coding into a STL string. More...

__EXPORT String b64Decode (const String &src)
 Decode a STL string using base64 coding into an STL String. More...

__EXPORT String b64Encode (const unsigned char *src, size_t srcsize)
 Encode a octet stream using base64 coding into a STL string. More...

__EXPORT size_t b64Decode (const String &src, unsigned char *dst, size_t dstsize)
 Decode a string using base64 coding. More...


Detailed Description

A URL processing version of TCPStream. C++ url processing stream class.

Author:
David Sugar <dyfet@ostel.com>


Member Enumeration Documentation

enum ost::URLStream::Authentication
 

Type of authentication.

Enumeration values:
authAnonymous  
authBasic  

enum ost::URLStream::Encoding
 

Encoding used in transfer.

Enumeration values:
encodingBinary  
encodingChunked  

enum ost::URLStream::Error
 

Return error for url fetch.

Enumeration values:
errSuccess  
errUnreachable  
errMissing  
errDenied  
errInvalid  
errForbidden  
errUnauthorized  
errRelocated  
errFailure  
errTimeout  
errInterface  

Reimplemented from ost::Socket.

enum ost::URLStream::Method
 

Type of fetch.

Enumeration values:
methodHttpGet  
methodHttpPut  
methodHttpPost  
methodHttpPostMultipart  
methodFtpGet  
methodFtpPut  
methodFileGet  
methodFilePut  

enum ost::URLStream::Protocol
 

http protocol version.

Enumeration values:
protocolHttp1_0  
protocolHttp1_1  


Constructor & Destructor Documentation

ost::URLStream::URLStream ( Family family = IPV4,
timeout_t timer = 0 )
 

Construct an instance of URL stream.

Parameters:
family   protocol to use.
timer   for default timeout on I/O operations.


Member Function Documentation

int ost::URLStream::aRead ( char * buffer,
size_t len,
timeout_t timer ) [protected, virtual]
 

Derived method for async or timed I/O function on url stream.

Returns:
number of bytes read or < 0 for error.
Parameters:
buffer   to read stream data into.
len   of bytes to read from stream.
timer   to wait for data in milliseconds.

int ost::URLStream::aWrite ( char * buffer,
size_t len,
timeout_t timer ) [protected, virtual]
 

Derived method for async or timed I/O function on url stream.

Returns:
number of bytes written or < 0 for error.
Parameters:
buffer   to write stream data from.
len   of bytes to write to stream.
timer   to wait for data in milliseconds.

void ost::URLStream::close ( void )
 

Close the URL stream for a new connection.

char ** ost::URLStream::extraHeader ( void ) [protected, virtual]
 

A virtual to insert additional header info into the request.

Returns:
array of header attributes to add.

Error ost::URLStream::get ( size_t buffer = 512 )
 

Get URL data from a named stream of a known buffer size.

Requesting URL defined in previous calls of setAddress() and setHost() functions.

Returns:
url error code.
Parameters:
buffer   size of buffer.

Error ost::URLStream::get ( const char * url,
size_t buffer = 512 )
 

Get URL data from a named stream of a known buffer size.

Returns:
url error code.
Parameters:
url   name of resource.
buffer   size of buffer.

Method ost::URLStream::getMethod ( void ) [inline]
 

Get url method (and protocol) employed.

Returns:
url method in effect.

URLStream & ost::URLStream::getline ( char * buffer,
size_t len )
 

Line parsing with conversion.

Returns:
URLStream object reference.
Parameters:
buffer   to store.
len   maximum buffer size.

Error ost::URLStream::head ( const char * url,
size_t buffer = 512 )
 

Used to fetch header information for a resource.

Returns:
url error code.
Parameters:
url   name of resource.
buffer   size of buffer.

void ost::URLStream::httpHeader ( const char * header,
const char * value ) [protected, virtual]
 

Derived method to receive and parse http "headers".

Parameters:
header   keyword.
value   header keyword value.

Error ost::URLStream::post ( const char * url,
MIMEMultipartForm & form,
size_t buffer = 512 )
 

Post URL with MIME multipart form.

Returns:
success or error code.
Parameters:
url   name of resource being posted.
form   multi-part resource.
buffer   size to use.

Error ost::URLStream::post ( const char * url,
const char ** vars,
size_t buffer = 512 )
 

Post URL vars with post method.

Returns:
success or error code.
Parameters:
url   name of resource being posted.
vars   to set in post.
buffer   size of buffer.

Error ost::URLStream::sendHTTPHeader ( const char * url,
const char ** vars,
size_t bufsize ) [protected]
 

Send http header to server.

Parameters:
url   base to send header to
vars   to post or use in get method
bufsize   of stream buffering to use
Returns:
success or class error

void ost::URLStream::setAddress ( const char * str ) [inline]
 

Set the address for the url.

Parameters:
str   address in the URL.

void ost::URLStream::setAgent ( const char * str ) [inline]
 

Set the agent.

Parameters:
str   agent value.

void ost::URLStream::setAuthentication ( Authentication a,
const char * str = NULL )
 

Set authentication type for the url.

Parameters:
a   authentication.
str   string.

void ost::URLStream::setCookie ( const char * str ) [inline]
 

Set the cookie to pass.

Parameters:
str   cookie string.

void ost::URLStream::setFollow ( bool enable ) [inline]
 

Specify url following.

Set to false to disable following of relocation requests.

Parameters:
enable   true to enable following.

void ost::URLStream::setHost ( const char * str ) [inline]
 

Set the host for the url.

Parameters:
str   host address.

void ost::URLStream::setLocalInterface ( const char * intf ) [inline]
 

Specify local interface to use.

Parameters:
intf   Local interface name

void ost::URLStream::setPassword ( const char * str ) [inline]
 

Set password for the url.

Parameters:
str   password.

void ost::URLStream::setPragma ( const char * str ) [inline]
 

Set the pragmas.

Parameters:
str   pragma setting.

void ost::URLStream::setProtocol ( Protocol pro ) [inline]
 

Specify http protocol level being used.

Parameters:
pro   protocol level.

void ost::URLStream::setProxy ( const char * host,
tpport_t port )
 

Set the proxy server used.

Parameters:
host   proxy host.
port   proxy port.

void ost::URLStream::setProxyAuthentication ( Authentication a,
const char * str = NULL )
 

Set proxy authentication type for the url.

Parameters:
a   authentication.
str   string.

void ost::URLStream::setProxyPassword ( const char * str ) [inline]
 

Set proxy password for the url.

Parameters:
str   password.

void ost::URLStream::setProxyUser ( const char * str ) [inline]
 

Set proxy user id for the url.

Parameters:
str   user id.

void ost::URLStream::setReferer ( const char * str )
 

Set the referer url.

Parameters:
str   referer string.

void ost::URLStream::setTimeout ( timeout_t to ) [inline]
 

Set socket timeout characteristics for processing URL requests.

Set to 0 for no default timeouts.

Parameters:
to   timeout to set.

Reimplemented from ost::TCPStream.

void ost::URLStream::setUser ( const char * str ) [inline]
 

Set user id for the url.

Parameters:
str   user id.

Error ost::URLStream::submit ( const char * url,
const char ** vars,
size_t buffer = 512 )
 

Submit URL with vars passed as argument array.

This submit assumes "GET" method. Use "post" member to perform post.

Returns:
url error code.
Parameters:
url   name of resource.
vars   to set.
buffer   size of buffer.

int ost::URLStream::underflow ( void ) [protected]
 

Called if stream buffer needs refilling.

Returns:
number of bytes refilled or error if < 0

Reimplemented from ost::TCPStream.


Friends And Related Function Documentation

__EXPORT size_t b64Decode ( const String & src,
unsigned char * dst,
size_t dstsize ) [related]
 

Decode a string using base64 coding.

Destination size should be at least strlen(src)/4*3. Destination are not string terminated (It's just a octet stream).

Returns:
number of octets written into destination buffer
Parameters:
src   source string
dst   destination octet buffer
dstsize   destination buffer size

__EXPORT String b64Decode ( const String & src ) [related]
 

Decode a STL string using base64 coding into an STL String.

Destination size should be at least strlen(src)/4*3. Destination are not string terminated (It's just a octet stream).

Returns:
decoded string
Parameters:
src   source string

__EXPORT size_t b64Decode ( const char * src,
unsigned char * dst,
size_t dstsize ) [related]
 

Decode a string using base64 coding.

Destination size should be at least strlen(src)/4*3. Destination are not string terminated (It's just a octet stream).

Returns:
number of octets written into destination buffer
Parameters:
src   source string
dst   destination octet buffer
dstsize   destination buffer size

__EXPORT char * b64Decode ( char * src,
char * dest = NULL ) [related]
 

Decode a string using base64 coding.

Destination size should be at least strlen(src)+1. Destination will be a string, so is always terminated . This function is deprecated, base64 can use binary source, not only string use overloaded b64Decode.

Returns:
string coded
Parameters:
src   source buffer
dest   destination buffer. If NULL src is used

__EXPORT String b64Encode ( const unsigned char * src,
size_t srcsize ) [related]
 

Encode a octet stream using base64 coding into a STL string.

Returns:
base 64 encoded string
Parameters:
src   source buffer
srcsize   source buffer size

__EXPORT String b64Encode ( const String & src ) [related]
 

Encode a STL string using base64 coding into a STL string.

Returns:
base 64 encoded string
Parameters:
src   source string

__EXPORT size_t b64Encode ( const unsigned char * src,
size_t srcsize,
char * dst,
size_t dstsize ) [related]
 

Encode a octet stream using base64 coding.

Destination size should be at least (srcsize+2)/3*4+1. Destination will be a string, so is always terminated (unless you pass dstsize == 0).

Returns:
size of string written not counting terminator
Parameters:
src   source buffer
srcsize   source buffer size
dst   destination buffer
dstsize   destination buffer size

__EXPORT char * b64Encode ( const char * source,
char * dest,
size_t size ) [related]
 

Encode a string using base64 coding.

Destination size should be at least strlen(src)/4*3+1. Destination is string terminated. This function is deprecated, coded stream can contain terminator character use overloaded b64Encode instead.

Returns:
destination buffer
Parameters:
source   source string
dest   destination octet buffer
size   destination buffer size

__EXPORT char * urlDecode ( char * source,
char * dest = NULL ) [related]
 

Decode an url parameter (ie "%20" -> " ").

Parameters:
source   string
dest   destination buffer. If NULL source is used

__EXPORT char * urlEncode ( const char * source,
char * dest,
size_t size ) [related]
 

Encode an url parameter (ie " " -> "+").

Parameters:
source   string
dest   destination buffer. Do not overlap with source
size   destination buffer size.


Member Data Documentation

ost::String ost::URLStream::m_address [protected]
 

ost::String ost::URLStream::m_host [protected]
 


The documentation for this class was generated from the following file:
Generated at Sat May 12 18:59:49 2007 for GNU CommonC++ by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001