Exemplo n.º 1
0
static void QBox_Token_ret(QBox_Token* self, QBox_Json* root, QBox_Error* err)
{
	QBox_Int64 expiry;
	const char* accessToken = QBox_Json_GetString(root, "access_token", NULL);
	const char* refreshToken = QBox_Json_GetString(root, "refresh_token", NULL);

	if (accessToken == NULL || refreshToken == NULL) {
		err->code = 9998;
		err->message = "unexcepted response";
	} else {
		expiry = QBox_Seconds() + QBox_Json_GetInt64(root, "expires_in", 0);
		QBox_Token_set(self, accessToken, refreshToken, expiry);
	}
}
Exemplo n.º 2
0
static QBox_Error QBox_callex(CURL* curl, QBox_Buffer *resp, QBox_Json** ret, QBox_Bool simpleError)
{
	QBox_Error err;
	CURLcode curlCode;
	long httpCode;
	QBox_Json* root;

	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, QBox_Buffer_Fwrite);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp);

	curlCode = curl_easy_perform(curl);

	if (curlCode == 0) {
		curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
		if (QBox_Buffer_Len(resp) != 0) {
			root = cJSON_Parse(QBox_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 = QBox_Json_GetString(root, "error", g_statusCodeError);
			}
		} else {
			err.message = "OK";
		}
	} else {
		*ret = NULL;
		err.code = curlCode;
		err.message = "curl_easy_perform error";
	}

	return err;
}
Exemplo n.º 3
0
Arquivo: io.c Projeto: hzgnpu/c-sdk
static QBox_Error QBox_Io_call(
	QBox_Client* self, QBox_Io_PutRet* ret, struct curl_httppost* formpost, char* action)
{
	QBox_Error err;

	CURL* curl = QBox_Client_reset(self);
	char* url = QBox_String_Concat2(QBOX_UP_HOST, "/upload");
	struct curl_slist* headers = curl_slist_append(NULL, "Expect:");

	curl_easy_setopt(curl, CURLOPT_URL, url);
	curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

	err = QBox_callex(curl, &self->b, &self->root, QBox_False, &self->respHeader);
	if (err.code == 200 && ret != NULL) {
		ret->hash = QBox_Json_GetString(self->root, "hash", NULL);
	}

	curl_formfree(formpost);
	free(action);
	free(url);

	return err;
}