GNU CommonC++
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Related Functions

ost::URLStream Class Reference

A URL processing version of TCPStream. More...

#include <url.h>

Inheritance diagram for ost::URLStream:
ost::TCPStream ost::Socket

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 Member Functions

 URLStream (Family family=IPV4, timeout_t timer=0)
 Construct an instance of URL stream.
URLStreamgetline (char *buffer, size_t len)
 Line parsing with conversion.
Error get (const char *url, size_t buffer=512)
 Get URL data from a named stream of a known buffer size.
Error get (size_t buffer=512)
 Get URL data from a named stream of a known buffer size.
Error submit (const char *url, const char **vars, size_t buffer=512)
 Submit URL with vars passed as argument array.
Error post (const char *url, const char **vars, size_t buffer=512)
 Post URL vars with post method.
Error post (const char *url, MIMEMultipartForm &form, size_t buffer=512)
 Post URL with MIME multipart form.
Error head (const char *url, size_t buffer=512)
 Used to fetch header information for a resource.
void close ()
 Close the URL stream for a new connection.
void setReferer (const char *str)
 Set the referer url.
void setHost (const char *str)
 Set the host for the url.
void setAddress (const char *str)
 Set the address for the url.
void setCookie (const char *str)
 Set the cookie to pass.
void setUser (const char *str)
 Set user id for the url.
void setPassword (const char *str)
 Set password for the url.
void setAuthentication (Authentication a, const char *str=NULL)
 Set authentication type for the url.
void setProxyUser (const char *str)
 Set proxy user id for the url.
void setProxyPassword (const char *str)
 Set proxy password for the url.
void setProxyAuthentication (Authentication a, const char *str=NULL)
 Set proxy authentication type for the url.
void setPragma (const char *str)
 Set the pragmas.
void setProxy (const char *host, tpport_t port)
 Set the proxy server used.
void setAgent (const char *str)
 Set the agent.
Method getMethod (void)
 Get url method (and protocol) employed.
void setTimeout (timeout_t to)
 Set socket timeout characteristics for processing URL requests.
void setFollow (bool enable)
 Specify url following.
void setProtocol (Protocol pro)
 Specify http protocol level being used.
void setLocalInterface (const char *intf)
 Specify local interface to use.

Protected Member Functions

Error sendHTTPHeader (const char *url, const char **vars, size_t bufsize)
 Send http header to server.
int underflow (void)
 Called if stream buffer needs refilling.
virtual int aRead (char *buffer, size_t len, timeout_t timer)
 Derived method for async or timed I/O function on url stream.
virtual int aWrite (char *buffer, size_t len, timeout_t timer)
 Derived method for async or timed I/O function on url stream.
virtual void httpHeader (const char *header, const char *value)
 Derived method to receive and parse http "headers".
virtual char ** extraHeader (void)
 A virtual to insert additional header info into the request.

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)
__EXPORT char * urlEncode (const char *source, char *dest, size_t size)
__EXPORT char * b64Decode (char *src, char *dest=NULL)
__EXPORT char * b64Encode (const char *source, char *dest, size_t size)
__EXPORT size_t b64Encode (const unsigned char *src, size_t srcsize, char *dst, size_t dstsize)
__EXPORT size_t b64Decode (const char *src, unsigned char *dst, size_t dstsize)
__EXPORT String b64Encode (const String &src)
__EXPORT String b64Decode (const String &src)
__EXPORT String b64Encode (const unsigned char *src, size_t srcsize)
__EXPORT size_t b64Decode (const String &src, unsigned char *dst, size_t dstsize)

Detailed Description

A URL processing version of TCPStream.

Author:
David Sugar <dyfet@ostel.com> C++ url processing stream class.
Examples:

urlfetch.cpp, and xmlfetch.cpp.


Member Enumeration Documentation

Type of authentication.

Enumerator:
authAnonymous 
authBasic 

Encoding used in transfer.

Enumerator:
encodingBinary 
encodingChunked 

Return error for url fetch.

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

Reimplemented from ost::Socket.

Type of fetch.

Enumerator:
methodHttpGet 
methodHttpPut 
methodHttpPost 
methodHttpPostMultipart 
methodFtpGet 
methodFtpPut 
methodFileGet 
methodFilePut 

http protocol version

Enumerator:
protocolHttp1_0 
protocolHttp1_1 

Constructor & Destructor Documentation

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

Construct an instance of URL stream.

Parameters:
familyprotocol to use.
timerfor default timeout on I/O operations.

Member Function Documentation

virtual 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:
bufferto read stream data into.
lenof bytes to read from stream.
timerto wait for data in milliseconds.
virtual 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:
bufferto write stream data from.
lenof bytes to write to stream.
timerto wait for data in milliseconds.
void ost::URLStream::close ( )

Close the URL stream for a new connection.

virtual 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 ( const char *  url,
size_t  buffer = 512 
)

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

Returns:
url error code.
Parameters:
urlname of resource.
buffersize of buffer.
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:
buffersize of buffer.
URLStream& ost::URLStream::getline ( char *  buffer,
size_t  len 
)

Line parsing with conversion.

Returns:
URLStream object reference.
Parameters:
bufferto store.
lenmaximum buffer size.
Method ost::URLStream::getMethod ( void  ) [inline]

Get url method (and protocol) employed.

Returns:
url method in effect.
Error ost::URLStream::head ( const char *  url,
size_t  buffer = 512 
)

Used to fetch header information for a resource.

Returns:
url error code.
Parameters:
urlname of resource.
buffersize of buffer.
virtual void ost::URLStream::httpHeader ( const char *  header,
const char *  value 
) [protected, virtual]

Derived method to receive and parse http "headers".

Parameters:
headerkeyword.
valueheader keyword value.
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:
urlname of resource being posted.
varsto set in post.
buffersize of buffer.
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:
urlname of resource being posted.
formmulti-part resource.
buffersize to use.
Error ost::URLStream::sendHTTPHeader ( const char *  url,
const char **  vars,
size_t  bufsize 
) [protected]

Send http header to server.

Parameters:
urlbase to send header to
varsto post or use in get method
bufsizeof stream buffering to use
Returns:
success or class error
void ost::URLStream::setAddress ( const char *  str) [inline]

Set the address for the url.

Parameters:
straddress in the URL.
void ost::URLStream::setAgent ( const char *  str) [inline]

Set the agent.

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

Set authentication type for the url.

Parameters:
aauthentication.
strstring.
void ost::URLStream::setCookie ( const char *  str) [inline]

Set the cookie to pass.

Parameters:
strcookie string.
void ost::URLStream::setFollow ( bool  enable) [inline]

Specify url following.

Set to false to disable following of relocation requests.

Parameters:
enabletrue to enable following.
void ost::URLStream::setHost ( const char *  str) [inline]

Set the host for the url.

Parameters:
strhost address.
void ost::URLStream::setLocalInterface ( const char *  intf) [inline]

Specify local interface to use.

Parameters:
intfLocal interface name
void ost::URLStream::setPassword ( const char *  str) [inline]

Set password for the url.

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

Set the pragmas.

Parameters:
strpragma setting.
void ost::URLStream::setProtocol ( Protocol  pro) [inline]

Specify http protocol level being used.

Parameters:
proprotocol level.
void ost::URLStream::setProxy ( const char *  host,
tpport_t  port 
)

Set the proxy server used.

Parameters:
hostproxy host.
portproxy port.
void ost::URLStream::setProxyAuthentication ( Authentication  a,
const char *  str = NULL 
)

Set proxy authentication type for the url.

Parameters:
aauthentication.
strstring.
void ost::URLStream::setProxyPassword ( const char *  str) [inline]

Set proxy password for the url.

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

Set proxy user id for the url.

Parameters:
struser id.
void ost::URLStream::setReferer ( const char *  str)

Set the referer url.

Parameters:
strreferer 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:
totimeout to set.

Reimplemented from ost::TCPStream.

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

Set user id for the url.

Parameters:
struser 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:
urlname of resource.
varsto set.
buffersize 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 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:
srcsource buffer
destdestination buffer. If NULL src is used
__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:
srcsource string
__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:
srcsource string
dstdestination octet buffer
dstsizedestination buffer size
__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:
srcsource string
dstdestination octet buffer
dstsizedestination buffer size
__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:
srcsource buffer
srcsizesource 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:
sourcesource string
destdestination octet buffer
sizedestination buffer size
__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:
srcsource buffer
srcsizesource buffer size
dstdestination buffer
dstsizedestination 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:
srcsource string
__EXPORT char * urlDecode ( char *  source,
char *  dest = NULL 
) [related]

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

Parameters:
sourcestring
destdestination buffer. If NULL source is used
__EXPORT char * urlEncode ( const char *  source,
char *  dest,
size_t  size 
) [related]

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

Parameters:
sourcestring
destdestination buffer. Do not overlap with source
sizedestination buffer size.

Member Data Documentation


The documentation for this class was generated from the following file: