예제 #1
0
static void clientIoGet(const char* dntoken)
{
	const char text[] = "Hello, world!";
	char* url = Qiniu_String_Concat("http://", domain, "/", key, "?token=", dntoken, NULL);

	long code, httpCode;
	CURL* curl = curl_easy_init();
	Qiniu_Buffer resp;
	Qiniu_Buffer respHeader;

	Qiniu_Buffer_Init(&resp, 1024);
	Qiniu_Buffer_Init(&respHeader, 1024);

	printf("url: %s\n", url);

	curl_easy_setopt(curl, CURLOPT_URL, url);
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Qiniu_Buffer_Fwrite);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resp);
	curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, Qiniu_Buffer_Fwrite);
	curl_easy_setopt(curl, CURLOPT_HEADERDATA, &respHeader);

	code = curl_easy_perform(curl);

	printf("\n%s", Qiniu_Buffer_CStr(&respHeader));
	CU_ASSERT(code == 0);

	curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
	CU_ASSERT(httpCode == 200);

	CU_ASSERT_STRING_EQUAL(Qiniu_Buffer_CStr(&resp), text);

	curl_easy_cleanup(curl);
}
예제 #2
0
static void clientIoPutBuffer(const char* uptoken)
{
	Qiniu_Error err;
	Qiniu_Client client;
	Qiniu_Rio_PutExtra extra;
	Qiniu_Rio_PutRet putRet;
	Qiniu_Seq seq;
	Qiniu_ReaderAt in;
	Qiniu_Int64 fsize = testFsize;

	Qiniu_Client_InitNoAuth(&client, 1024);

	Qiniu_Zero(extra);
	extra.bucket = bucket;
	extra.notify = notify;
	extra.notifyErr = notifyErr;
	extra.chunkSize = 1024;

	in = Qiniu_SeqReaderAt(&seq, fsize, 10, '0', 0);

	err = Qiniu_Rio_Put(&client, &putRet, uptoken, key, in, fsize, &extra);

	printf("\n%s", Qiniu_Buffer_CStr(&client.respHeader));
	printf("hash: %s\n", putRet.hash);

	CU_ASSERT(err.code == 200);
	CU_ASSERT_STRING_EQUAL(putRet.hash, "FoErrxvY99fW7npWmVii0RncWKme");

	Qiniu_Client_Cleanup(&client);
}
예제 #3
0
static void clientIoGet(const char* url)
{
	Qiniu_Eq eq;
	Qiniu_Seq seq;
	Qiniu_Int64 fsize = testFsize;
	Qiniu_Reader in = Qiniu_SeqReader(&seq, (size_t)fsize, 10, '0', 0);
	Qiniu_Writer w = Qiniu_EqWriter(&eq, in);

	long code, httpCode;
	CURL* curl = curl_easy_init();
	Qiniu_Buffer respHeader;
	Qiniu_Buffer_Init(&respHeader, 1024);

	printf("url: %s\n", url);

	curl_easy_setopt(curl, CURLOPT_URL, url);
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, w.Write);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, w.self);
	curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, Qiniu_Buffer_Fwrite);
	curl_easy_setopt(curl, CURLOPT_HEADERDATA, &respHeader);

	code = curl_easy_perform(curl);

	printf("\n%s", Qiniu_Buffer_CStr(&respHeader));
	printf("\ncurl.code: %d, eq.result: %d\n", (int)code, eq.result);
	CU_ASSERT(code == 0);

	curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
	CU_ASSERT(httpCode == 200);

	CU_ASSERT(Qiniu_Is(&eq));

	curl_easy_cleanup(curl);
}
예제 #4
0
Qiniu_Error Qiniu_callex(CURL* curl, Qiniu_Buffer *resp, Qiniu_Json** ret, Qiniu_Bool simpleError, Qiniu_Buffer *resph)
{
	Qiniu_Error err;
	CURLcode curlCode;
	long httpCode;
	Qiniu_Json* root;

	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, Qiniu_Buffer_Fwrite);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp);
	if (resph != NULL) {
		curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, Qiniu_Buffer_Fwrite);
		curl_easy_setopt(curl, CURLOPT_WRITEHEADER, resph);
	}

	curlCode = curl_easy_perform(curl);

	if (curlCode == 0) {
		curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
		if (Qiniu_Buffer_Len(resp) != 0) {
			root = cJSON_Parse(Qiniu_Buffer_CStr(resp));
		} else {
			root = NULL;
		}
		*ret = root;
		err.code = (int)httpCode;
		if (httpCode / 100 != 2) {
			if (simpleError) {
				err.message = g_statusCodeError;
			} else {
				err.message = Qiniu_Json_GetString(root, "error", g_statusCodeError);
			}
		} else {
			err.message = "OK";
		}
	} else {
		*ret = NULL;
		err.code = curlCode;
		err.message = "curl_easy_perform error";
	}

	printf("code %d\n", err.code);

	return err;
}
예제 #5
0
static void clientIoPutFile(const char* uptoken)
{
	Qiniu_Error err;
	Qiniu_Client client;
	Qiniu_Io_PutExtra extra;
	Qiniu_Io_PutRet putRet;

	Qiniu_Client_InitNoAuth(&client, 1024);

	Qiniu_Zero(extra);
	extra.bucket = bucket;

	err = Qiniu_Io_PutFile(&client, &putRet, uptoken, key, __FILE__, &extra);
	CU_ASSERT(err.code == 200);

	printf("\n%s\n", Qiniu_Buffer_CStr(&client.respHeader));
	printf("hash: %s\n", putRet.hash);

	Qiniu_Client_Cleanup(&client);
}
예제 #6
0
static void clientIoPutBuffer(const char* uptoken)
{
	const char text[] = "Hello, world!";

	Qiniu_Error err;
	Qiniu_Client client;
	Qiniu_Io_PutExtra extra;
	Qiniu_Io_PutRet putRet;

	Qiniu_Client_InitNoAuth(&client, 1024);

	Qiniu_Zero(extra);
	extra.bucket = bucket;

	err = Qiniu_Io_PutBuffer(&client, &putRet, uptoken, key, text, sizeof(text)-1, &extra);

	printf("\n%s", Qiniu_Buffer_CStr(&client.respHeader));
	printf("hash: %s\n", putRet.hash);

	CU_ASSERT(err.code == 200);
	CU_ASSERT_STRING_EQUAL(putRet.hash, "FpQ6cC0G80WZruH42o759ylgMdaZ");

	Qiniu_Client_Cleanup(&client);
}
예제 #7
0
void debug_log(Qiniu_Client *client, Qiniu_Error err) {
	printf("\nerror code: %d, message: %s\n", err.code, err.message);
	printf("response header:\n%s", Qiniu_Buffer_CStr(&client->respHeader));
	printf("response body:\n%s", Qiniu_Buffer_CStr(&client->b));
	printf("\n\n\n");
}