QBox_Error QBox_Token_ExchangeByRefreshToken(QBox_Token** token, const char* refreshToken) { QBox_Error err; *token = QBox_Token_new(); err = QBox_Token_refresh(*token, refreshToken); if (err.code != 200) { QBox_Token_Release(*token); } return err; }
static void QBox_PasswordAuth_Release(void* self1) { QBox_PasswordAuth* self = (QBox_PasswordAuth*)self1; if (self->authHeader != NULL) { curl_slist_free_all((struct curl_slist*)self->authHeader); self->authHeader = NULL; } if (self->token != NULL) { QBox_Token_Release(self->token); self->token = NULL; } free(self); }
QBox_Error QBox_Token_ExchangeByPassword(QBox_Token** token, const char* user, const char* passwd) { char* params; char* userEsc; char* passwdEsc; int fuserEsc, fpasswdEsc; CURL* curl; QBox_Error err; QBox_Json* root = NULL; userEsc = QBox_QueryEscape(user, &fuserEsc); passwdEsc = QBox_QueryEscape(passwd, &fpasswdEsc); params = QBox_String_Concat( "client_id=", QBOX_CLIENT_ID, "&client_secret=", QBOX_CLIENT_SECRET, "&grant_type=password&username="******"&password=", passwdEsc, NULL); if (fuserEsc) { free(userEsc); } if (fpasswdEsc) { free(passwdEsc); } curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); curl_easy_setopt(curl, CURLOPT_URL, QBOX_TOKEN_ENDPOINT); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, params); err = QBox_call(curl, QBox_initBufSize, &root, QBox_True); curl_easy_cleanup(curl); free(params); if (err.code == 200) { *token = QBox_Token_new(); QBox_Token_ret(*token, root, &err); if (err.code != 200) { QBox_Token_Release(*token); } } if (root != NULL) { cJSON_Delete(root); } return err; }
int main() { QBox_Error err; QBox_Token* token; QBox_Client client; QBox_RS_PutAuthRet putAuthRet; QBox_RS_PutRet putRet; QBox_RS_GetRet getRet; QBox_RS_StatRet statRet; char* hash; QBox_Zero(client); QBox_Global_Init(-1); printf("QBox_Token_ExchangeByPassword\n"); err = QBox_Token_ExchangeByPassword(&token, "*****@*****.**", "test"); if (err.code != 200) { printf("QBox_Token_ExchangeByPassword failed: %d - %s\n", err.code, err.message); goto lzDone; } QBox_Client_InitByPassword(&client, token, 1024); QBox_Token_Release(token); QBox_RS_Delete(&client, "Bucket", "rs_demo.c"); printf("QBox_RS_PutFile\n"); err = QBox_RS_PutFile(&client, &putRet, "Bucket", "rs/demo.c", "application/octet-stream", __FILE__, ""); if (err.code != 200) { printf("QBox_RS_PutFile failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Get\n"); err = QBox_RS_Get(&client, &getRet, "Bucket", "rs/demo.c", NULL); if (err.code != 200) { printf("QBox_RS_Get failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_PutAuth\n"); err = QBox_RS_PutAuth(&client, &putAuthRet); if (err.code != 200) { printf("QBox_RS_PutAuth failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RSCli_PutFile\n"); err = QBox_RSCli_PutFile(NULL, putAuthRet.url, "Bucket", "rs_demo.c", "application/octet-stream", __FILE__, "", "key=rs_demo.c"); if (err.code != 200) { printf("QBox_RS_PutFile failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Get\n"); err = QBox_RS_Get(&client, &getRet, "Bucket", "rs_demo.c", NULL); if (err.code != 200) { printf("QBox_RS_Get failed: %d - %s\n", err.code, err.message); goto lzDone; } hash = strdup(getRet.hash); printf("QBox_RS_GetIfNotModified: %s\n", hash); err = QBox_RS_GetIfNotModified(&client, &getRet, "Bucket", "rs_demo.c", NULL, hash); free(hash); if (err.code != 200) { printf("QBox_RS_GetIfNotModified failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Stat\n"); err = QBox_RS_Stat(&client, &statRet, "Bucket", "rs_demo.c"); if (err.code != 200) { printf("QBox_RS_Stat failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Publish\n"); err = QBox_RS_Publish(&client, "Bucket", "iovip.qbox.me/Bucket"); if (err.code != 200) { printf("QBox_RS_Publish failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Unpublish\n"); err = QBox_RS_Unpublish(&client, "iovip.qbox.me/Bucket"); if (err.code != 200) { printf("QBox_RS_Unpublish failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Delete\n"); err = QBox_RS_Delete(&client, "Bucket", "rs_demo.c"); if (err.code != 200) { printf("QBox_RS_Delete failed: %d - %s\n", err.code, err.message); goto lzDone; } printf("QBox_RS_Drop\n"); err = QBox_RS_Drop(&client, "Bucket"); if (err.code != 200) { printf("QBox_RS_Drop failed: %d - %s\n", err.code, err.message); goto lzDone; } lzDone: QBox_Client_Cleanup(&client); QBox_Global_Cleanup(); return 0; }