add DEBUG switch and fix win build error
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "CurlHttpClient.h"
|
||||
#include "Utils.h"
|
||||
#include <cassert>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
@@ -124,6 +125,10 @@ CurlHttpClient::makeRequest(const HttpRequest &request) {
|
||||
curl_easy_setopt(curlHandle_, CURLOPT_WRITEFUNCTION, recvBody);
|
||||
setCUrlProxy(curlHandle_, proxy());
|
||||
|
||||
if (GetEnv("DEBUG") == "sdk") {
|
||||
curl_easy_setopt(curlHandle_, CURLOPT_VERBOSE, 1L);
|
||||
}
|
||||
|
||||
CURLcode res = curl_easy_perform(curlHandle_);
|
||||
switch (res) {
|
||||
case CURLE_OK: {
|
||||
|
||||
@@ -44,7 +44,7 @@ std::string HmacSha1Signer::generate(const std::string & src,
|
||||
}my_blob;
|
||||
|
||||
DWORD kbLen = sizeof(my_blob) + secret.size();
|
||||
my_blob * kb = reinterpret_cast<my_blob *>LocalAlloc(LPTR, kbLen);
|
||||
my_blob * kb = (my_blob *)LocalAlloc(LPTR, kbLen);
|
||||
kb->hdr.bType = PLAINTEXTKEYBLOB;
|
||||
kb->hdr.bVersion = CUR_BLOB_VERSION;
|
||||
kb->hdr.reserved = 0;
|
||||
@@ -63,12 +63,10 @@ std::string HmacSha1Signer::generate(const std::string & src,
|
||||
|
||||
CryptAcquireContext(&hProv, NULL,
|
||||
MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_NEWKEYSET);
|
||||
CryptImportKey(hProv,
|
||||
reinterpret_cast<BYTE*>(kb), kbLen, 0, CRYPT_IPSEC_HMAC_KEY, &hKey);
|
||||
CryptImportKey(hProv, (BYTE*)kb, kbLen, 0, CRYPT_IPSEC_HMAC_KEY, &hKey);
|
||||
CryptCreateHash(hProv, CALG_HMAC, hKey, 0, &hHmacHash);
|
||||
CryptSetHashParam(hHmacHash,
|
||||
HP_HMAC_INFO, reinterpret_cast<BYTE*>&HmacInfo, 0);
|
||||
CryptHashData(hHmacHash, reinterpret_cast<BYTE*>(src.c_str()), src.size(), 0);
|
||||
CryptSetHashParam(hHmacHash, HP_HMAC_INFO, (BYTE*)&HmacInfo, 0);
|
||||
CryptHashData(hHmacHash, (BYTE*)(src.c_str()), src.size(), 0);
|
||||
CryptGetHashParam(hHmacHash, HP_HASHVAL, pbHash, &dwDataLen, 0);
|
||||
|
||||
LocalFree(kb);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "Utils.h"
|
||||
#include <sstream>
|
||||
#include <algorithm>
|
||||
#include <stdlib.h>
|
||||
#ifdef _WIN32
|
||||
#include <Windows.h>
|
||||
#else
|
||||
@@ -31,9 +32,9 @@ std::string AlibabaCloud::GenerateUuid() {
|
||||
char *data;
|
||||
UUID uuidhandle;
|
||||
UuidCreate(&uuidhandle);
|
||||
UuidToString(&uuidhandle, reinterpret_cast<RPC_CSTR*>&data);
|
||||
UuidToString(&uuidhandle, reinterpret_cast<RPC_CSTR*>(&data));
|
||||
std::string uuid(data);
|
||||
RpcStringFree(reinterpret_cast<RPC_CSTR*>&data);
|
||||
RpcStringFree(reinterpret_cast<RPC_CSTR*>(&data));
|
||||
return uuid;
|
||||
#else
|
||||
uuid_t uu;
|
||||
@@ -72,7 +73,7 @@ std::string AlibabaCloud::ComputeContentMD5(const char * data, size_t size) {
|
||||
|
||||
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
|
||||
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
|
||||
CryptHashData(hHash, reinterpret_cast<BYTE*>(data), size, 0);
|
||||
CryptHashData(hHash, (BYTE*)(data), size, 0);
|
||||
CryptGetHashParam(hHash, HP_HASHVAL, pbHash, &dwDataLen, 0);
|
||||
|
||||
CryptDestroyHash(hHash);
|
||||
@@ -186,3 +187,26 @@ std::string AlibabaCloud::canonicalizedHeaders(
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
std::string AlibabaCloud::GetEnv(const std::string env) {
|
||||
#ifdef _WIN32
|
||||
char* buf = nullptr;
|
||||
size_t sz = 0;
|
||||
if (_dupenv_s(&buf, &sz, env.c_str()) == 0 && buf != nullptr) {
|
||||
std::string var(buf);
|
||||
free(buf);
|
||||
return var;
|
||||
} else {
|
||||
if (buf) {
|
||||
free(buf);
|
||||
}
|
||||
return std::string();
|
||||
}
|
||||
#else
|
||||
char* var = getenv(env.c_str());
|
||||
if (var) {
|
||||
return std::string(var);
|
||||
}
|
||||
return std::string();
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -33,5 +33,6 @@ std::string UrlDecode(const std::string &src);
|
||||
std::string canonicalizedQuery(const std::map <std::string,
|
||||
std::string> ¶ms);
|
||||
std::string canonicalizedHeaders(const HttpMessage::HeaderCollection &headers);
|
||||
std::string GetEnv(const std::string env);
|
||||
} // namespace AlibabaCloud
|
||||
#endif // CORE_SRC_UTILS_H_
|
||||
|
||||
@@ -76,7 +76,12 @@ string base64_encode(const unsigned char *src, size_t len) {
|
||||
|
||||
string imageBase64(string file) {
|
||||
|
||||
FILE* img = fopen(file.c_str(), "rb");
|
||||
FILE* img = nullptr;
|
||||
#ifdef _WIN32
|
||||
fopen_s(&img, file.c_str(), "rb");
|
||||
#else
|
||||
img = fopen(file.c_str(), "rb");
|
||||
#endif
|
||||
if (!img) {
|
||||
perror("open file error");
|
||||
return "";
|
||||
@@ -166,8 +171,14 @@ int main(int argc, char** argv) {
|
||||
|
||||
char dir[1024];
|
||||
utils.get_dir_exec(dir, nullptr);
|
||||
#ifdef _WIN32
|
||||
// windows binary has an extra Release/Debug/... dir
|
||||
string image1_path = string(dir) + "\\..\\1.jpg";
|
||||
string image2_path = string(dir) + "\\..\\2.jpg";
|
||||
#else
|
||||
string image1_path = string(dir) + "1.jpg";
|
||||
string image2_path = string(dir) + "2.jpg";
|
||||
#endif
|
||||
picList[base64_encode((u8_t*)jpg1.c_str(), jpg1.size())] = imageBase64(image1_path);
|
||||
picList[base64_encode((u8_t*)jpg2.c_str(), jpg2.size())] = imageBase64(image2_path);
|
||||
|
||||
|
||||
@@ -23,9 +23,11 @@ int main(int argc, char** argv) {
|
||||
request.setDomain("nlp.cn-shanghai.aliyuncs.com");
|
||||
request.setResourcePath("/nlp/api/wordsegment/general");
|
||||
request.setHttpMethod(HttpRequest::Post);
|
||||
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a bad choice 专用数据线\"}";
|
||||
|
||||
request.setContent(data, strlen(data));
|
||||
// if windows, Chinese character will result in build error.
|
||||
const std::string data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a good choice.\"}";
|
||||
|
||||
request.setContent(data.c_str(), data.size());
|
||||
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
|
||||
request.setHeaderParameter("Accept", "application/json");
|
||||
request.setVersion("2018-04-08");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "../../core/src/Utils.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace AlibabaCloud;
|
||||
@@ -60,4 +60,15 @@ namespace {
|
||||
const std::string decoded = UrlDecode(encoded);
|
||||
EXPECT_TRUE(decoded == url);
|
||||
}
|
||||
|
||||
TEST(Utils, GetEnv) {
|
||||
const std::string var1 = GetEnv("PATH");
|
||||
EXPECT_FALSE(var1.empty());
|
||||
const std::string var2 = GetEnv("NOT_EXISTS_PATH");
|
||||
EXPECT_TRUE(var2.empty());
|
||||
#ifndef _WIN32
|
||||
setenv("SDK", "ttt", 1);
|
||||
EXPECT_TRUE(GetEnv("SDK") == "ttt");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user