All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
QoreHttpClientObject.h
/* -*- mode: c++; indent-tabs-mode: nil -*- */
/*
QoreHttpClientObject.h
Qore Programming Language
Copyright (C) 2006 - 2014 QoreTechnologies
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef QORE_HTTP_CLIENT_OBJECT_H_
#define QORE_HTTP_CLIENT_OBJECT_H_
#include <qore/common.h>
#include <qore/QoreSocketObject.h>
#define HTTPCLIENT_DEFAULT_PORT 80
#define HTTPCLIENT_DEFAULT_HOST "localhost"
#define HTTPCLIENT_DEFAULT_TIMEOUT 300000
#define HTTPCLIENT_DEFAULT_MAX_REDIRECTS 5
class Queue;
class QoreHttpClientObject : public QoreSocketObject {
private:
struct qore_httpclient_priv *http_priv;
DLLLOCAL QoreHttpClientObject(const QoreHttpClientObject&);
DLLLOCAL QoreHttpClientObject& operator=(const QoreHttpClientObject&);
protected:
DLLEXPORT void lock();
DLLEXPORT void unlock();
public:
DLLEXPORT QoreHttpClientObject();
DLLEXPORT virtual ~QoreHttpClientObject();
DLLEXPORT int setOptions(const QoreHashNode *opts, ExceptionSink* xsink);
DLLEXPORT void setDefaultPort(int prt);
DLLEXPORT void setDefaultPath(const char *pth);
DLLEXPORT const char* getDefaultPath() const;
DLLEXPORT const char* getConnectionPath() const;
DLLEXPORT void addProtocol(const char *prot, int port, bool ssl = false);
DLLEXPORT void setTimeout(int to);
DLLEXPORT int getTimeout() const;
DLLEXPORT void setEncoding(const QoreEncoding *qe);
DLLEXPORT const QoreEncoding *getEncoding() const;
DLLEXPORT int setHTTPVersion(const char* version, ExceptionSink* xsink);
DLLEXPORT const char* getHTTPVersion() const;
DLLEXPORT void setHTTP11(bool h11);
DLLEXPORT bool isHTTP11() const;
DLLEXPORT int setURL(const char *url, ExceptionSink *xsink);
DLLEXPORT QoreStringNode *getURL();
DLLEXPORT void setUserPassword(const char *user, const char *pass);
DLLEXPORT void clearUserPassword();
DLLEXPORT int setProxyURL(const char *proxy, ExceptionSink *xsink);
DLLEXPORT QoreStringNode *getProxyURL();
DLLEXPORT void clearProxyURL();
DLLEXPORT void setProxyUserPassword(const char *user, const char *pass);
DLLEXPORT void clearProxyUserPassword();
DLLEXPORT void setSecure(bool is_secure);
DLLEXPORT bool isSecure() const;
DLLEXPORT void setProxySecure(bool is_secure);
DLLEXPORT bool isProxySecure() const;
DLLEXPORT void setMaxRedirects(int max);
DLLEXPORT int getMaxRedirects() const;
DLLEXPORT int connect(ExceptionSink *xsink);
DLLEXPORT void disconnect();
DLLEXPORT QoreHashNode *send(const char *meth, const char *path, const QoreHashNode *headers, const void *data, unsigned size, bool getbody, QoreHashNode *info, ExceptionSink *xsink);
DLLEXPORT AbstractQoreNode *get(const char *path, const QoreHashNode *headers, QoreHashNode *info, ExceptionSink *xsink);
DLLEXPORT QoreHashNode *head(const char *path, const QoreHashNode *headers, QoreHashNode *info, ExceptionSink *xsink);
DLLEXPORT AbstractQoreNode *post(const char *path, const QoreHashNode *headers, const void *data, unsigned size, QoreHashNode *info, ExceptionSink *xsink);
DLLEXPORT void setDefaultHeaderValue(const char *header, const char *val);
using AbstractPrivateData::deref;
DLLEXPORT virtual void deref(ExceptionSink *xsink);
DLLEXPORT void setConnectTimeout(int ms);
DLLEXPORT int getConnectTimeout() const;
DLLEXPORT int setNoDelay(bool nodelay);
DLLEXPORT void setEventQueue(Queue *cbq, ExceptionSink *xsink);
DLLEXPORT bool getNoDelay() const;
DLLEXPORT bool isConnected() const;
DLLEXPORT void clearWarningQueue(ExceptionSink* xsink);
DLLEXPORT void setWarningQueue(ExceptionSink* xsink, int64 warning_ms, int64 warning_bs, class Queue* wq, AbstractQoreNode* arg, int64 min_ms = 1000);
DLLEXPORT QoreHashNode* getUsageInfo() const;
DLLEXPORT void clearStats();
DLLLOCAL static void static_init();
DLLLOCAL void cleanup(ExceptionSink *xsink);
};
#endif
QoreHttpClientObject::clearProxyUserPassword
DLLEXPORT void clearProxyUserPassword()
clears the username and password for the proxy connection
QoreHttpClientObject::head
DLLEXPORT QoreHashNode * head(const char *path, const QoreHashNode *headers, QoreHashNode *info, ExceptionSink *xsink)
sends an HTTP &quot;HEAD&quot; method and returns the headers returned, the caller owns the QoreHashNode refere...
QoreEncoding
defines string encoding functions in Qore
Definition: QoreEncoding.h:72
QoreHttpClientObject::isProxySecure
DLLEXPORT bool isProxySecure() const
returns the SSL proxy connection parameter flag
QoreHttpClientObject::getURL
DLLEXPORT QoreStringNode * getURL()
returns the connection parameters as a URL, caller owns the reference count returned ...
QoreHttpClientObject::connect
DLLEXPORT int connect(ExceptionSink *xsink)
opens a connection and returns a code giving the result
QoreHashNode
This is the hash or associative list container type in Qore, dynamically allocated only...
Definition: QoreHashNode.h:41
QoreHttpClientObject::isSecure
DLLEXPORT bool isSecure() const
returns the SSL connection parameter flag
QoreHttpClientObject::setOptions
DLLEXPORT int setOptions(const QoreHashNode *opts, ExceptionSink *xsink)
set options with a hash, returns -1 if an exception was thrown, 0 for OK
QoreHttpClientObject::QoreHttpClientObject
DLLEXPORT QoreHttpClientObject()
creates the QoreHttpClientObject object
AbstractQoreNode
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:47
QoreHttpClientObject::setTimeout
DLLEXPORT void setTimeout(int to)
sets the connection and response packet timeout value in milliseconds
QoreHttpClientObject::getMaxRedirects
DLLEXPORT int getMaxRedirects() const
returns the value of the max_redirects option
QoreHttpClientObject::setDefaultPath
DLLEXPORT void setDefaultPath(const char *pth)
sets the default path
QoreHttpClientObject::setProxyURL
DLLEXPORT int setProxyURL(const char *proxy, ExceptionSink *xsink)
sets the proxy URL
QoreHttpClientObject::addProtocol
DLLEXPORT void addProtocol(const char *prot, int port, bool ssl=false)
adds a protocol
QoreHttpClientObject::~QoreHttpClientObject
virtual DLLEXPORT ~QoreHttpClientObject()
destroys the object and frees all associated memory
QoreHttpClientObject::setURL
DLLEXPORT int setURL(const char *url, ExceptionSink *xsink)
sets the connection URL
QoreHttpClientObject::setDefaultPort
DLLEXPORT void setDefaultPort(int prt)
sets the default port
QoreStringNode
Qore&#39;s string value type, reference counted, dynamically-allocated only.
Definition: QoreStringNode.h:40
QoreHttpClientObject::setHTTP11
DLLEXPORT void setHTTP11(bool h11)
sets or clears HTTP 1.1 protocol compliance
QoreHttpClientObject::setConnectTimeout
DLLEXPORT void setConnectTimeout(int ms)
sets the connect timeout in ms
QoreHttpClientObject::post
DLLEXPORT AbstractQoreNode * post(const char *path, const QoreHashNode *headers, const void *data, unsigned size, QoreHashNode *info, ExceptionSink *xsink)
sends an HTTP &quot;POST&quot; message to the remote server and returns the message body of the response...
QoreHttpClientObject::getNoDelay
DLLEXPORT bool getNoDelay() const
returns the value of the TCP_NODELAY flag on the object
QoreHttpClientObject::setDefaultHeaderValue
DLLEXPORT void setDefaultHeaderValue(const char *header, const char *val)
sets the value of a default header to send with every outgoing message
QoreHttpClientObject::setUserPassword
DLLEXPORT void setUserPassword(const char *user, const char *pass)
sets the username and password for the connection
AbstractPrivateData::deref
virtual DLLLOCAL void deref()
decrements the reference count of the object without the possibility of throwing a Qore-language exce...
Definition: AbstractPrivateData.h:57
QoreHttpClientObject::setHTTPVersion
DLLEXPORT int setHTTPVersion(const char *version, ExceptionSink *xsink)
sets the http version from a string
QoreHttpClientObject::setMaxRedirects
DLLEXPORT void setMaxRedirects(int max)
sets the max_redirects option
QoreHttpClientObject::isConnected
DLLEXPORT bool isConnected() const
returns the connection status of the object
QoreHttpClientObject::getHTTPVersion
DLLEXPORT const char * getHTTPVersion() const
returns the http version as a string (either &quot;1.0&quot; or &quot;1.1&quot;)
QoreHttpClientObject::setEncoding
DLLEXPORT void setEncoding(const QoreEncoding *qe)
sets the default encoding for the object
QoreHttpClientObject::disconnect
DLLEXPORT void disconnect()
disconnects from the remote server
QoreHttpClientObject::getTimeout
DLLEXPORT int getTimeout() const
returns the connection and response packet timeout value in milliseconds
ExceptionSink
container for holding Qore-language exception information and also for registering a &quot;thread_exit&quot; ca...
Definition: ExceptionSink.h:35
QoreHttpClientObject
provides a way to communicate with HTTP servers using Qore data structures
Definition: QoreHttpClientObject.h:42
QoreHttpClientObject::setProxySecure
DLLEXPORT void setProxySecure(bool is_secure)
sets the SSL flag for use in the next connection to the proxy
QoreHttpClientObject::getProxyURL
DLLEXPORT QoreStringNode * getProxyURL()
returns the proxy connection parameters as a URL (or 0 if there is none), caller owns the reference c...
QoreHttpClientObject::setNoDelay
DLLEXPORT int setNoDelay(bool nodelay)
sets the TCP_NODELAY flag on the object
QoreHttpClientObject::getConnectionPath
DLLEXPORT const char * getConnectionPath() const
returns the current connection path or 0 if none is set
QoreHttpClientObject::getDefaultPath
DLLEXPORT const char * getDefaultPath() const
returns the default path or 0 if none is set
QoreHttpClientObject::getConnectTimeout
DLLEXPORT int getConnectTimeout() const
returns the connect timeout in ms, negative numbers mean no timeout
QoreHttpClientObject::getEncoding
DLLEXPORT const QoreEncoding * getEncoding() const
returns the default encoding for the object
QoreHttpClientObject::isHTTP11
DLLEXPORT bool isHTTP11() const
returns true if HTTP 1.1 protocol compliance has been set
QoreHttpClientObject::setSecure
DLLEXPORT void setSecure(bool is_secure)
sets the SSL flag for use in the next connection
common.h
QoreHttpClientObject::clearUserPassword
DLLEXPORT void clearUserPassword()
clears the username and password for the connection
QoreHttpClientObject::setEventQueue
DLLEXPORT void setEventQueue(Queue *cbq, ExceptionSink *xsink)
sets the event queue, must be already referenced before call
QoreHttpClientObject::setProxyUserPassword
DLLEXPORT void setProxyUserPassword(const char *user, const char *pass)
sets the username and password for the proxy connection
QoreHttpClientObject::send
DLLEXPORT QoreHashNode * send(const char *meth, const char *path, const QoreHashNode *headers, const void *data, unsigned size, bool getbody, QoreHashNode *info, ExceptionSink *xsink)
sends a message to the remote server and returns the entire response as a hash, caller owns the QoreH...
QoreHttpClientObject::clearProxyURL
DLLEXPORT void clearProxyURL()
clears the proxy URL