diff options
author | Eli Linden <eli@lindenlab.com> | 2010-04-07 10:27:10 -0700 |
---|---|---|
committer | Eli Linden <eli@lindenlab.com> | 2010-04-07 10:27:10 -0700 |
commit | de62c3378171a69ff9a39f2f626f1b1d33d0763f (patch) | |
tree | 053883ba8ae6d02460736ed8a786f1913761b00d /indra/llmessage/llurlrequest.h | |
parent | 25df7aca29074b6ae7f108c91673be117522bfc9 (diff) | |
parent | 3ecec85feb4e9878b32f5737ab8e35747360f138 (diff) |
Merge
Diffstat (limited to 'indra/llmessage/llurlrequest.h')
-rw-r--r-- | indra/llmessage/llurlrequest.h | 68 |
1 files changed, 58 insertions, 10 deletions
diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h index 69fd22e592..cb3c466440 100644 --- a/indra/llmessage/llurlrequest.h +++ b/indra/llmessage/llurlrequest.h @@ -44,8 +44,6 @@ #include "lliopipe.h" #include "llchainio.h" #include "llerror.h" -#include <openssl/x509_vfy.h> -#include "llcurl.h" extern const std::string CONTEXT_REQUEST; @@ -74,8 +72,6 @@ class LLURLRequest : public LLIOPipe { LOG_CLASS(LLURLRequest); public: - - typedef int (* SSLCertVerifyCallback)(X509_STORE_CTX *ctx, void *param); /** * @brief This enumeration is for specifying the type of request. */ @@ -129,7 +125,7 @@ public: * */ void setURL(const std::string& url); - std::string getURL() const; + /** * @brief Add a header to the http post. * @@ -147,9 +143,8 @@ public: * Set whether request will check that remote server * certificates are signed by a known root CA when using HTTPS. */ - void setSSLVerifyCallback(SSLCertVerifyCallback callback, void * param); + void checkRootCertificate(bool check); - /** * @brief Return at most size bytes of body. * @@ -194,7 +189,6 @@ public: * @brief Give this pipe a chance to handle a generated error */ virtual EStatus handleError(EStatus status, LLPumpIO* pump); - protected: /** @@ -223,8 +217,6 @@ protected: S32 mRequestTransferedBytes; S32 mResponseTransferedBytes; - static CURLcode _sslCtxCallback(CURL * curl, void *sslctx, void *param); - private: /** * @brief Initialize the object. Called during construction. @@ -372,6 +364,62 @@ protected: }; +/** + * @class LLURLRequestClientFactory + * @brief Template class to build url request based client chains + * + * This class eases construction of a basic sd rpc client. Here is an + * example of it's use: + * <code> + * class LLUsefulService : public LLService { ... }<br> + * LLService::registerCreator(<br> + * "useful",<br> + * LLService::creator_t(new LLURLRequestClientFactory<LLUsefulService>))<br> + * </code> + * + * This class should work, but I never got around to using/testing it. + * + */ +#if 0 +template<class Client> +class LLURLRequestClientFactory : public LLChainIOFactory +{ +public: + LLURLRequestClientFactory(LLURLRequest::ERequestAction action) {} + LLURLRequestClientFactory( + LLURLRequest::ERequestAction action, + const std::string& fixed_url) : + mAction(action), + mURL(fixed_url) + { + } + virtual bool build(LLPumpIO::chain_t& chain, LLSD context) const + { + lldebugs << "LLURLRequestClientFactory::build" << llendl; + LLIOPipe::ptr_t service(new Client); + chain.push_back(service); + LLURLRequest* http(new LLURLRequest(mAction)); + LLIOPipe::ptr_t http_pipe(http); + // *FIX: how do we know the content type? + //http->addHeader("Content-Type: text/llsd"); + if(mURL.empty()) + { + chain.push_back(LLIOPipe::ptr_t(new LLContextURLExtractor(http))); + } + else + { + http->setURL(mURL); + } + chain.push_back(http_pipe); + chain.push_back(service); + return true; + } + +protected: + LLURLRequest::ERequestAction mAction; + std::string mURL; +}; +#endif /** * External constants |