forked from soutade/libgourou
Support HTTP error codes != 200 (exception) and cookies in drmprocessorclientimpl
This commit is contained in:
parent
69865e005b
commit
e05639c09d
|
@ -120,6 +120,7 @@ namespace gourou
|
||||||
CLIENT_OSSL_ERROR,
|
CLIENT_OSSL_ERROR,
|
||||||
CLIENT_CRYPT_ERROR,
|
CLIENT_CRYPT_ERROR,
|
||||||
CLIENT_DIGEST_ERROR,
|
CLIENT_DIGEST_ERROR,
|
||||||
|
CLIENT_HTTP_ERROR
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DRM_REMOVAL_ERROR {
|
enum DRM_REMOVAL_ERROR {
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define OPENSSL_NO_DEPRECATED 1
|
#define OPENSSL_NO_DEPRECATED 1
|
||||||
|
|
||||||
|
@ -60,6 +61,14 @@ DRMProcessorClientImpl::DRMProcessorClientImpl():
|
||||||
if (!deflt)
|
if (!deflt)
|
||||||
EXCEPTION(gourou::CLIENT_OSSL_ERROR, "Error, OpenSSL default provider not available");
|
EXCEPTION(gourou::CLIENT_OSSL_ERROR, "Error, OpenSSL default provider not available");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
strcpy(cookiejar, "C:\\temp\\libgourou_cookie_jar_XXXXXX");
|
||||||
|
#else
|
||||||
|
strcpy(cookiejar, "/tmp/libgourou_cookie_jar_XXXXXX");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mkstemp(cookiejar);
|
||||||
}
|
}
|
||||||
|
|
||||||
DRMProcessorClientImpl::~DRMProcessorClientImpl()
|
DRMProcessorClientImpl::~DRMProcessorClientImpl()
|
||||||
|
@ -71,6 +80,8 @@ DRMProcessorClientImpl::~DRMProcessorClientImpl()
|
||||||
if (deflt)
|
if (deflt)
|
||||||
OSSL_PROVIDER_unload(deflt);
|
OSSL_PROVIDER_unload(deflt);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
unlink(cookiejar);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Digest interface */
|
/* Digest interface */
|
||||||
|
@ -227,6 +238,7 @@ std::string DRMProcessorClientImpl::sendHTTPRequest(const std::string& URL, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookiejar);
|
||||||
|
|
||||||
if (POSTData.size())
|
if (POSTData.size())
|
||||||
{
|
{
|
||||||
|
@ -291,6 +303,12 @@ std::string DRMProcessorClientImpl::sendHTTPRequest(const std::string& URL, cons
|
||||||
if (res != CURLE_OK)
|
if (res != CURLE_OK)
|
||||||
EXCEPTION(gourou::CLIENT_NETWORK_ERROR, "Error " << curl_easy_strerror(res));
|
EXCEPTION(gourou::CLIENT_NETWORK_ERROR, "Error " << curl_easy_strerror(res));
|
||||||
|
|
||||||
|
long http_code = 400;
|
||||||
|
curl_easy_getinfo (curl, CURLINFO_RESPONSE_CODE, &http_code);
|
||||||
|
|
||||||
|
if (http_code >= 400)
|
||||||
|
EXCEPTION(gourou::CLIENT_HTTP_ERROR, "HTTP Error code " << http_code);
|
||||||
|
|
||||||
if ((downloadedBytes >= DISPLAY_THRESHOLD || replyData.size() >= DISPLAY_THRESHOLD) &&
|
if ((downloadedBytes >= DISPLAY_THRESHOLD || replyData.size() >= DISPLAY_THRESHOLD) &&
|
||||||
gourou::logLevel >= gourou::LG_LOG_WARN)
|
gourou::logLevel >= gourou::LG_LOG_WARN)
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
|
@ -136,6 +136,8 @@ private:
|
||||||
#else
|
#else
|
||||||
void *legacy, *deflt;
|
void *legacy, *deflt;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char cookiejar[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user