MMA_Http_AutoRedirect
MMA_Http_AutoRedirect (V51) [I....], ULONG
DESCRIPTION
Specifies allowed number of HTTP redirections. A non-zero value instructs the object to automatically follow redirection responses (30x) from the server instead of reporting error and failing in OM_NEW. The tag initializes redirection counter. If the counter is greater than zero, and server responds with 30x code, the header is searched for "Location" field. If this field is found, its contents is used as a new target, the request is resent and the counter decremented. If there is no "Location" for 30x response, or the counter reaches 0, OM_NEW will fail. Default value for this tag is 10
NOTES
To disable redirections, just set the tag to 0. Avoid setting this tag to big values (more than 50), as in case of redirection loop, your thread will stuck in OM_NEW until the loop downs the counter to 0.
MMA_Http_ExtendedLog
MMA_Http_ExtendedLog (V51.4) [I....], BOOL
DESCRIPTION
The tag controls how many connection details are sent to the log. The default value for this tag is FALSE. It means the only connection details revealed are target host and port number. If it is set to TRUE, the object dumps complete request and response headers
MMA_Http_ExtraHeaderFields
MMA_Http_ExtraHeaderFields (V51.4) [I....], STRPTR*
DESCRIPTION
This attribute allows to pass additional fields to the HTTP request header sent. Similarly to MMA_Http_Header, the attribute value is an address of a table containing pointers to NULL-terminated strings. Every even string, starting from 0, contains a keyword, every odd string contains the value. The table is terminated by NULL pointer. Note that the class does not perform any verification of RFC 2616 conformance on strings passed. Keyword string must not contain colon separator or any whitespaces. The value string must not contain CR LF sequence. Additional header fields are appended to the header after standard four: "Host", "Accept-Encoding", "User-Agent" and "Connection". An object creates copies of all the strings in the table, so both the table itself and strings need not to be static
EXAMPLE
STRPTR MyFields[] = {
"If-Modified-Since", "Tue, 8 Apr 2008 00:00:01 GMT"
"Range", "bytes=0-999",
NULL };
/* then somewhere in NewObject()... */
MMA_Http_ExtraHeaderFields, (ULONG)MyFields
SEE ALSO
MMA_Http_Header
MMA_Http_Header (V51) [..G.Q], STRPTR*
DESCRIPTION
This attribte gives access to the complete HTTP response header. The header is already parsed and returned as keyword-value pairs. The returned value is an address of table of pointers to stings. The first string (index 0) is the first keyword, the second one (index 1) is the value of this keyword. The third element (index 2) is the second keyword and so on. The table is terminated by NULL pointer. The header is parsed according to RFC 2616 including multiline fields (multiline fields are unfolded according to RFC 822 and returned as plain strings
NOTES
The first line of the response, returned by MMA_Http_Response is not included in the table returned by MMA_Http_Header.
SEE ALSO
MMA_Http_HeaderEntries
MMA_Http_HeaderEntries (V51) [..G.Q], ULONG
DESCRIPTION
Number of entries returned by MMA_Http_Header. The first line of header is not counted here, as it is retured separately by MMA_Http_Response. The NULL element placed as the last table entry is not counted as well
MMA_Http_NetProcess
MMA_Http_NetProcess (V51) [..G.Q], struct Process*
DESCRIPTION
The attribute returns a pointer to the Process structure of network subprocess of a http.stream object. It can be used to send CTRL-C signal to the process to break network operation. Note that you cannot break network operations in OM_NEW this way, use MMA_TaskName for this
MMA_Http_NoFailOnHttpError
MMA_Http_NoFailOnHttpError (V51.12) [I....], BOOL
DESCRIPTION
When set to TRUE at init, will not cause object creation to fail in case of HTTP 4xx or 5xx response code. Object is created normally, an error page returned by server is available at object's output. Returned HTTP header is available via MMA_Http_Header, MMA_Http_Response, MMA_Http_ResponseCode and MMM_Http_GetHeaderEntry(). Defaults to FALSE
SEE ALSO
MMA_Http_PostData
MMA_Http_PostData (V51.13) [I....], struct TagItem*
DESCRIPTION
The attribute specifies data to be sent in a POST request. As such it is ignored if MMA_Http_RequestType is set to GET, or not given. Application specifies POST data as "tag stream". Formatting data according to the request type is done by the object. Following tags are recognized inside the tag stream: - MMA_Http_PostData_Name - starts a data field (ending the previous one if present) and specifies its name. Tag value should be a NULL- terminated string. This tag is required. - MMA_Http_PostData_Charset - specifies text character set for the whole request. Tag value should be IANA number of the encoding (charsets.library can be used to convert between IANA number and charset name). This tag is optional and defaults to the system encoding. Note that system encoding depends on selected locale and may be other than ISO-8859-1. This tag may be placed anywhere in the taglist. If specified multiple times, only the first one is taken into account. - TAG_END - ends the tag stream. Textual fields - MMA_Http_PostData_Value - tag value should be a NULL-terminated string. This tag is required. - MMA_Http_PostData_FieldCharset - allows for overriding charset for a single field. It is only possible for multipart posts. Using this tag in an url encoded post will cause the constructor to fail with MMERR_WRONG_DATA error. Binary fields - MMA_Http_PostData_Binary - The tag value is a pointer to data. This tag is required. - MMA_Http_PostData_Length - The tag value is the length of data pointed by MMA_Http_PostData_Binary in bytes. This tag is required. - MMA_Http_PostData_MimeType - used for posting binary data. The tag value is a NULL-terminated string specifying MIME type for binary data. The tag is optional and defaults to "application/octet-stream". NULL value is allowed, the default is used in this case. - MMA_Http_PostData_FileName - Specifies a local filename. May be a real file name (if data are loaded from file), or some made up name if data are generated. It is passed in "Content-Disposition" field of the part header. The tag is optional. If not specified, it defaults to a randomly generated string of 15 lowercase letters. NULL value is allowed, the randomly generated name is used in this case. Binary fields are allowed only if MMA_Http_RequestType is set to MMV_Http_RequestType_PostMulti. For other POST request types the constructor will fail with MMERR_WRONG_ARGUMENTS error. A textual field is specified in the following way (triangle brackets are used for required elements, square brackets for optional ones): <MMA_Http_PostData_Name, <string>,> <MMA_Http_PostData_Value, <string>,> A binary field specification: <MMA_Http_PostData_Name, <string>,> <MMA_Http_PostData_Binary, <pointer>,> <MMA_Http_PostData_Length, <number>,> [MMA_Http_PostData_MimeType, <string>] [MMA_Http_PostData_FileName, <string>] [MMA_Http_PostData_FieldCharset, <number>] Tag order inside a single field section (it means after MMA_Http_PostData_Name) is not important. Textual tags used for binary field and vice versa are ignored with exception of: - Both MMA_Http_PostData_Value and MMA_Http_PostData_Binary in one field section. Constructor fails with MMERR_WRONG_ARGUMENTS error. - MMA_Http_PostData_FieldCharset when POST type is URL encoded. Constructor fails with MMERR_WRONG_ARGUMENTS error. In the raw post mode (when MMA_Http_RequestType is set to MMV_Http_RequestType_PostDirect), only three tags are recognized, each of them is also required: - MMA_Http_PostData_Binary - pointer to raw POST data. - MMA_Http_PostData_Length - length of raw POST data in bytes. - MMA_Http_PostData_MimeType - type of data, it is placed in the HTTP request header as "Content-Type" field. Note that if text data are raw posted and charset specification is required, charset should be specified directly in this attribute, for example "text/plain; charset=utf-8". Charset tags have no effect for raw posts. For raw posts, only the first occurence of the above tags is taken into account, duplicates are ignored silently
NOTES
Ommiting this tag for POST request, passing a NULL value or an empty taglist is allowed and results in a POST request without body. Such a request may be rejected by HTTP server however.
EXAMPLES
Sending a JPEG image with title and author's name:
UBYTE *imagedata; /* points to JPEG image data */
struct TagItem postdata[] = {
{ MMA_Http_PostData_Name, "author" },
{ MMA_Http_PostData_Value, "Joe Average" },
{ MMA_Http_PostData_Name, "title" },
{ MMA_Http_PostData_Value, "A View From My Window" },
{ MMA_Http_PostData_Name, "image" },
{ MMA_Http_PostData_Binary, imagedata },
{ MMA_Http_PostData_Length, 2377735 }, /* just an example */
{ MMA_Http_PostData_MimeType, "image/jpeg" },
{ TAG_END, 0 }
};
stream = NewObject(NULL, "http.stream",
/* ... */
MMA_Http_RequestType, MMV_Http_RequestType_PostMulti,
MMA_Http_PostData, postdata,
/* ... */
TAG_END);
SEE ALSO
MMA_Http_ProxyPort
MMA_Http_ProxyPort (V51) [I....], ULONG
DESCRIPTION
Specifies a port, which proxy is connected on. If proxy is not specified, this attribute is ignored. The default value for this tag is 8080 (usual port for HTTP proxies
SEE ALSO
MMA_Http_ProxyServer
MMA_Http_ProxyServer (V51) [I....], STRPTR
DESCRIPTION
If not NULL, this attribute instructs http.stream object to connect to the destination host not directly, but via specified HTTP proxy. The default value for this tag is NULL (no proxy). The string passed need not to be static, as a copy is created
SEE ALSO
MMA_Http_RequestType
MMA_Http_RequestType (V51.13) [I....], LONG
DESCRIPTION
Selects the HTTP request type. One of three values is accepted: - MMV_Http_RequestType_Get - the default value. Sends a GET request with no data in the request body. - MMV_Http_RequestType_PostUrl - sends a POST request with data stored in application/x-www-form-urlencoded format. This request type is recommended for sending short textual data. The http.stream class does not allow sending binary data with this type of request. - MMV_Http_RequestType_PostMulti - sends a POST request with data stored in multipart/form-data format. Should be used for sending binary data and large chunks of text. For short text data it is less effective than x-www-form-urlencoded. - MMV_Http_RequestType_PostDirect - sends a raw POST request, a single binary block with specified MIME type is sent as request body. Any other value causes the constructor to fail with MMERR_WRONG_ARGUMENTS error
SEE ALSO
MMA_Http_Response
MMA_Http_Response (V51) [..G.Q], STRPTR
DESCRIPTION
Returns a read-only string containing the first line of HTTP response header. This line consists of HTTP version supported by server, three digit result code and textual result description, for example: HTTP/1.1 200 OK or HTTP/1.1 404 Not Found An application can analyse this line, inform user and take appropriate action. For list of result codes see HTTP protocol specification (RFC 2616
MMA_Http_ResponseCode
MMA_Http_ResponseCode (V51.8) [I.G.Q], ULONG
DESCRIPTION
Returns HTTP response code as a number. This attribute can be also specified for OM_NEW. The tag value in this case is a pointer to an ULONG variable, where the response code will be stored (it works similarly to MMA_ErrorCode
SEE ALSO
multimedia.class/MMA_ErrorCode
MMA_Http_UserAgent
MMA_Http_UserAgent (V51) [I....], STRPTR
DESCRIPTION
Allows application for identifying itself in HTTP 'User-Agent' header field. Note that string passed does not form the field contents alone. A string "/http.stream x.x (MorphOS x.x)" is appended to the one passed, where 'xx' are replaced by actual version of http.stream class and MorphOS. So for example if an application specifies: "SuperNetMumboJumbo 6.2" the complete 'User-Agent' field may be: "SuperNetMumboJumbo 6.2/http.stream 51.7 (MorphOS 2.0)" The default value for this attribute is "unknown". The string passed need not to be static, it is copied internally
NOTES
Supplied string must conform RFC 2616. It must not contain newlines.
MMA_Http_UserAgentOverride
MMA_Http_UserAgentOverride (V51.4) [I....], STRPTR
DESCRIPTION
This attribute completely overrides "User-Agent" field contents in the HTTP request header. Using this attribute is not recommended as it allows for breaking RFC 2616 recommendations. The RFC document suggests using the name composed of an application name and a name of library or component responsible for HTTP protocol handling. MMA_Http_UserAgent follows this convention and should be preferred. There are conditions however, when "User-Agent" spoofing cannot be avoided, that is why MMA_Http_UserAgentOverride exists. The attribute takes precedence over MMA_Http_UserAgent if both are specified, unless it is set to NULL. If set to NULL, it is just ignored. An object creates a copy of string passed, so it needs not to be static
EXAMPLE
/* some browser spoofing (somewhere in NewObject()) */ MMA_Http_UserAgentOverride, (ULONG)"Mozilla/5.0 (Windows; U; " "Windows NT 5.1; pl; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13", SEE_ALSO MMA_Http_UserAgent
MMA_StreamLength
MMA_StreamLength (V50) [I.G.Q], UQUAD*
DESCRIPTION
Returns stream length in bytes. If "Content-Length" field is found in the response header, it is used as stream length. If not found, zero is returned. It can happen if either server is not HTTP/1.1 compliant, or server uses chunked transfer. Zero means unknown length. When passed to OM_NEW, this attribute specifies "artificial" stream length, which can be used to limit the amount of data fetched. Passing zero value to OM_NEW means no limit, and zero is the default value
NOTES
64-bit attribute, in OM_GET pass a pointer to an UQUAD variable, in MMM_GetPort pass pointer to UQUAD as well or use MediaGetPort64() macro. If the attribute is specified for OM_NEW and is lower than the real stream length (or the real stream length is unknown), the value specified for OM_NEW is returned on query.
MMA_StreamName
MMA_StreamName (V50) [I.G.Q], STRPTR
DESCRIPTION
Name of http.stream is URL to the resource, but without leading "http://". It is not needed, as http.stream supports only HTTP protocol. Default TCP port is 80. Other ports are supported via "hostname:port" syntax. Note that http.stream DOES NOT perform so called "percent encoding" (see RFC 3986), an application must do it itself if needed. New in V51.7: When MMA_Http_AutoRedirect is not zero, and the object is redirected with permanent redirection ("301 Moved permanenty"), the attribute is updated. Then when queried with OM_GET or MMM_GetPort, returns the URL after redirection, not the initial one. This is an easy way for update permanently moved links in an application
EXAMPLE
A few examples of good HTTP stream names: any.host.com/files/pic4.jpg useful.things.net:3000/pub/archive.zip www.morphzone.org localhost/~user7
MMA_StreamPosBytes
MMA_StreamPosBytes (V50) [..G.Q], UQUAD*
DESCRIPTION
Returns current stream pointer in bytes
NOTES
64-bit attribute, in OM_GET pass a pointer to an UQUAD variable, in MMM_GetPort pass pointer to UQUAD as well or use MediaGetPort64() macro.
MMA_StreamSeekable
MMA_StreamSeekable (V50) [..G.Q], BOOL
DESCRIPTION
Returns FALSE always, as current version of http.stream does not support seeking
MMA_TaskName
MMA_TaskName (V51.9) [I.G.Q], STRPTR
DESCRIPTION
This attribute specifies or returns the name of the network subprocess created by an object. The subprocess performs some network operations in OM_NEW, like name resolving, estabilishing a connection and sending request. As an application cannot get MMA_Http_NetProcess attribute until the object is created, there is no way to break mentioned network operations. MMA_TaskName allows application to specify network process name, then the process can be found with FindTask(), and application can send CTRL-C signal while the object is still in OM_NEW. Of course the application must be multithreaded to be able to do this (one thread creates object, another sends signal
MMA_TaskPriority
MMA_TaskPriority (V50) [I.G.Q], BYTE
DESCRIPTION
Priority of object's network subtask. Defaults to 0. Allowed range is from -128 to +9 including
NOTES
Do not change without a reason.
MMA_URIStreamName
MMA_URIStreamName (V52) [I.G.Q], STRPTR
DESCRIPTION
Name of http.stream is URL to the resource, including the URI scheme. Default http:// port is 80 and https:// port is 443. Other ports are supported via "hostname:port" syntax. Note that http.stream DOES NOT perform so called "percent encoding" (see RFC 3986), an application must do it itself if needed. This attribute is similar to MMA_StreamName except that it always includes the scheme
EXAMPLE
A few examples of good HTTP stream names: http://any.host.com/files/pic4.jpg https://useful.things.net:3000/pub/archive.zip https://morph.zone http://localhost/~user7
MMM_Http_GetHeaderEntry
Returns header value for given keyword. (V50)
SYNOPSIS
value = (STRPTR)DoMethod(obj, MMM_Http_GetHeaderEntry, STRPTR keyword);
DESCRIPTION
Searches parsed HTTP response header table for given keyword and returns a pointer to its value (read-only string
INPUTS
- obj, object to perform the method on. - keyword, a string which is matched against header field names
RESULT
- value, NULL-terminated string containing header field contents, or NULL
pointer if the field is not found. Returned string is read-only
MMM_Pull
Reads a block of data from stream to a buffer. (V50)
SYNOPSIS
bytes = DoMethod(obj, MMM_Pull, ULONG port, APTR buffer, ULONG length);
DESCRIPTION
Loads specified number of bytes into a buffer starting from current read pointer. This method is synchronous, it means an application is in wait state until all required data arrive, or operation is stopped because of error or break signal. MMM_Pull in progress can be stopped by sending CTRL-C signal to the object's network task
INPUTS
- obj, object to perform the method on.
- port, must be 0, as it is the only port of a http.stream object.
- buffer, a memory buffer for read data, must be allocated with
MediaAllocMem().
- length, amount of data to be read in bytes
RESULT
- bytes, number of bytes read actually. Secondary error information available via MMA_ErrorCode attribute: - MMERR_WRONG_ARGUMENTS - port is not 0, NULL buffer. - MMERR_RESOURCE_MISSING - message to the subtask cannot be sent. - MMERR_IO_ERROR - read operation failed because of network layer error
background
NOTES
MMA_StreamHandle is not supported for HTTP streams.
HISTORY
51.18 (01.05.2014)
- Added support for posting raw data with
MMV_Http_RequestType_PostDirect.
51.17 (21.12.2013)
- If HTTP redirection is done to a different scheme (like 'https:') the
class no more treats it as local URI but reports it to the log and fails
to construct an object.
51.16 (04.06.2013)
- Fixed bug of not clearing chunked transfer mode on redirection. If the
first, redirection response was chunked, and the redirected response
was not, the class still attempted to handle it as chunked.
51.15 (16.02.2012)
- Fixed error reporting for servers using HTTP/1.0 style without chunked
transfer. The server does not send "Content-Length" header, but simply
closes the socket on its side after sending data. Now the MMM_Pull()
method returns number of bytes received and sets MMERR_END_OF_DATA
error code.
51.14 (18.01.2012)
- Accepts "ICY xxx" response additionally to "HTTP/1.1 xxx" one to support
shoutcast servers.
51.13 (29.12.2010)
- Added: Full support for POST requests.
51.12 (29.01.2010)
- Added: MMA_Http_NoFailOnHttpError attribute.
51.11 (27.03.2009)
- Fixed: PutReadRequest() must not use a message port allocated in OM_NEW()
as a reply port, because it fails, when read is performed by other process
than the object creator (for example audio.output player process). A
dynamically created port is used instead (similarly as in file.stream).
51.10 (03.09.2008)
- Fixed: A read from 0x00000000 was generated when MMA_Http_ExtraHeaderField
was not specified.
51.9 (09.05.2008)
- Removed: MMA_Http_NetProcessName duplicated functionality of generic
MMA_TaskName.
51.8 (07.05.2008)
- Added: MMA_Http_ResponseCode.
- Changed: MMA_StreamName is updated only for permanent redirections.
- Fixed: MMA_StreamName has been not initialized if there was no permanent
redirection.
- Changed: Simplified network thread shutdown. Uses just a ReadMsg with
a new CMD_EXIT instead of separate signal.
51.7 (06.05.2008)
- Added MMM_GetPort().
- MMA_Http_NetProcessName is now gettable.
- MMA_TaskPriority is now gettable.
- MMA_StreamName returns redirected URL instead of initial one.
- Autodocs fixes and cleanups.
51.6 (05.05.2008)
- HTTP automatic redirection works.
- MMA_StreamPosBytes works.
- All (let's pray) memory leaks fixed.
51.5 (30.04.2008)
- Changed meaning of MMA_Http_AutoRedirect to number of redirections
allowed.
51.4 (15.04.2008)
- Major rewrite. Taglist-based request header processing.
- Fixed: sending requests worked by luck until a request was smaller than
MTU. Now proper sending loop.
- Added: MMA_Http_ExtraHeaderFields.
- Added: MMA_Http_UserAgentOverride.
- Fixed: When server returned a response with broken header containing a
field with no value, all following fields were discarded. Now such
broken fields are returned with empty string as the value.
- Added: MMA_Http_ExtendedLog.
- Fixed: MMA_Http_UserAgent: the string contains operating system tag
(with version), also better RFC 2616 conformance.
51.3 (21.08.2006)
- Fixed debug, problems with '%' in URL.
50.16 (22.11.2004)
- Implemented MMA_TaskPriority/DTSA_TaskPriority with 0 as default.
50.15 (11.10.2004)
- Query tags accessible via the class base.
- Fixed class description in query tags ("HTTP/1.1").
50.14 (15.09.2004)
- Removed MediaLog() call from FreeResources(), this function may be
called with MultimediaBase uninitialized.
50.13 (13.09.2004)
- Fixed possible busylooping with some HTTP/1.0 streams.
50.12 (08.09.2004)
- Fixed bug with servers neither using chunked transfer nor passing
Contents-Length field, now these are loaded properly.
- Added HTTP proxy support (DTSA_Http_ProxyServer and
DTSA_Http_ProxyPort).
50.11 (05.09.2004)
- http.stream objects are now fully thread safe (pointers may be passed
and shared between processes system-wide). Note that there is one
exception: object must be disposed by the process which created it.
- Fixed long standing bug in library init code. If InitResources()
failed, but allocated some resources, they were never freed.
50.10 (04.09.2004)
- Added DTSA_Http_NetProcessName attribute (init only). It specifies a
name of http.stream network process ("http.stream n", where 'n' is an
ordinal number of stream, is the default). Using this tag an
application is able to break OM_NEW stalled in network functions (by
sending break signal to the process of specified name).
50.9 (03.09.2004)
- Bug fixed: If recv() was terminated by break singal before any data
were received, -1 was returned as an amount of data. Now 0 is returned
as it should.
50.8 (29.08.2004)
- Modification in header parser, now the class accepts also broken
servers using single LF as header field delimiter instead or CRLF.
50.7 (29.08.2004)
- Task counter incrementing protected with ClassBase semaphore. [piru]
50.6 (26.08.2004)
- Network thread now handles CTRL-C signal properly. Subsequent read
requests return 0 with STRERR_NO_CONNECTION.
- Object returns proper STRERR_TIMEOUT when timeout error occurs on
Connect().
- Added DTSA_Http_NetProcess attribute. An application can obtain a
pointer to created network process. Sending CTRL-C signal to this
process is a way for immediate termination of network operations.
- Subtask sets its pr_WindowPtr to -1 to avoid Intuition requesters from
ramlib, when bsdsocket.library cannot be found.
50.5 (18.08.2004)
- Fixed bug in OM_NEW, if Task() failed, error code from result message
could be used after the message has been freed by Task(). In some rare
conditions object could be created without Task() running.
50.4 (19.07.2004)
- Implemented DTSA_CurrentSize (gettable) for streams with
"Content-Length" specified.
50.3 (18.07.2004)
- Implemented header parser.
- Added gettable attributes:
DTSA_Http_Response - returns read-only string, the first line of server
response, for example "HTTP/1.1 200 OK" or "HTTP/1.1 404 Not Found".
DTSA_Http_Header - returns a NULL-terminated table of pointers to
strings. Strings are parsed entries of HTTP response header. Strings
forms name-value pairs, the first string is header entry name, the
second is its value. Strings are read-only.
DTSA_Http_HdrEntries - returns the number of name-value pairs returned
by DTSA_Http_Header.
- Added "Connection: close" entry to request header, it ensures proper
interaction with servers using persistent connections.
50.2 (17.07.2004)
- Fixed "User-Agent" contents to be a single token conforming to RFC2616.
50.1 (17.07.2004)
- Initial release.
DESCRIPTION
The class provides Reggae API for data accessible on the Internet via HTTP/1.1 protocol. Every object of http.stream class creates a separate task. The task is accessing files using TCP/IP stack with bsdsocket.lib- rary interface. A http.stream object can be safely shared between tasks (all operations are semaphore protected) with one important exception: object must be disposed by the task which created it. An object has only one input port (number 0). Port format is MMF_STREAM. The http.stream class handles GET and POST requests. For POST-ing form data ones, both application/x-www-form-urlencoded and multipart/form-data encapsulations are supported. Binary file uploads are supported too, as well as raw posts with choosen MIME type. From version 51.14, http.stream class can also handle Shoutcast streams. It sends HTTP request, but accepts ICY responses. Most Shoutcast servers accept plain HTTP requests. Note that Shoutcast specific request header fields may be added by application with MMA_Http_ExtraHeaderFields. Shoutcast specific fields in the response may be examined with MMA_Http_Header and MMM_Http_GetHeaderEntry().
NEW ATTRIBUTES
Attributes applicability:
I - may be set at creation time.
S - may be set on an existing object.
G - may be get from an object.
P - may be set for an object's port.
Q - may be queried from an object's port.
MMA_StreamLength (V50) [I.G.Q], UQUAD*
MMA_TaskPriority (V50) [I.G.Q], BYTE, optional on init
MMA_TaskName (V51.9) [I.G.Q], STRPTR, optional on init
MMA_StreamName (V50) [I.G.Q], STRPTR, it or MMA_URIStreamName required on init
MMA_URIStreamName (V52) [I.G.Q], STRPTR, it or MMA_StreamName required on init
MMA_StreamSeekable (V50) [..G.Q], BOOL
MMA_ErrorCode (V51) [I.G..], ULONG, optional on init
MMA_StreamPosBytes (V51) [..G.Q], UQUAD*
MMA_Http_Response (V51) [..G.Q], STRPTR
MMA_Http_Header (V51) [..G.Q], STRPTR*
MMA_Http_HeaderEntries (V51) [..G.Q], ULONG
MMA_Http_NetProcess (V51) [..G.Q], struct Process*
MMA_Http_UserAgent (V51) [I....], STRPTR, optional on init
MMA_Http_ProxyServer (V51) [I....], STRPTR, optional on init
MMA_Http_ProxyPort (V51) [I....], ULONG, optional on init
MMA_Http_AutoRedirect (V51) [I....], ULONG, optional on init
MMA_Http_ExtraHeaderFields (V51.4) [I....], STRPTR*, optional on init
MMA_Http_UserAgentOverride (V51.4) [I....], STRPTR, optional on init
MMA_Http_ExtendedLog (V51.4) [I....], BOOL, optional on init
MMA_Http_ResponseCode (V51.8) [I.G.Q], ULONG
MMA_Http_NoFailOnHttpError (V51.12) [I....], BOOL, optional on init
MMA_Http_RequestType (V51.13) [I....], LONG, optional
MMA_Http_PostData (V51.13) [I....], struct TagItem*, optional
NEW METHODS
MMM_Pull(port, buffer, length) (V50) MMM_Seek(port, type, position) (V50) MMM_Http_GetHeaderEntry(entry) (V51)