////////////////////////////////////////////////////////////////////////// // list server void ListServiceTask::handle_curl_completed( const std::string& response, long status ) { ListServiceResult* ret = new ListServiceResult; ret->status = status; std::string display_name = ""; std::string id = ""; if (status == 200) { try { Json::Value json_root; Json::Value json_value; Json::Reader json_reader; if (json_reader.parse(response.c_str(), json_root)) { json_value = json_root["Owner"]; if (!json_value.empty()) { display_name = json_value["DisplayName"].asString(); id = json_value["ID"].asString(); } json_value = json_root["Buckets"]; if (!json_value.empty()) { for (unsigned int i = 0; i < json_value.size(); ++ i) { unsigned long long consumed_bytes = json_value[i]["ConsumedBytes"].asUInt(); std::string creation_date = json_value[i]["CreationDate"].asString(); std::string name = json_value[i]["Name"].asString(); ListServiceItem bucket_item; bucket_item.bytes = consumed_bytes; bucket_item.name = string2CString(Utf8ToMultiByte(name)); bucket_item.date = string2CString(creation_date); ret->items.push_back(bucket_item); } } } } catch (...) { ret->status = 999; } } ret->display_name = string2CString(display_name); ret->id = string2CString(id); AfxGetApp()->GetMainWnd()->PostMessage(WM_MAINDLG_ListServiceResult, (WPARAM)0, (LPARAM)ret); }
void ListBucketTask::handle_curl_completed( const std::string& response, long status ) { ListBucketResult* ret = new ListBucketResult; ret->status = status; if (status == 200) { try { Json::Value json_root; Json::Value json_value; Json::Reader json_reader; if (json_reader.parse(response.c_str(), json_root)) { json_value = json_root["CommonPrefixes"]; if (!json_value.empty()) { for (unsigned int i = 0; i < json_value.size(); ++ i) { std::string name = json_value[i]["Prefix"].asString(); ListBucketItem item; item.is_dir = true; item.name = string2CString(Utf8ToMultiByte(name)); ret->items.push_back(item); } } json_value = json_root["Contents"]; if (!json_value.empty()) { for (unsigned int i = 0; i < json_value.size(); ++ i) { std::string name = json_value[i]["Name"].asString(); std::string sha1 = json_value[i]["SHA1"].asString(); std::string md5 = json_value[i]["MD5"].asString(); std::string date = json_value[i]["Last-Modified"].asString(); std::string owner = json_value[i]["Owner"].asString(); unsigned long long size = json_value[i]["Size"].asUInt(); ListBucketItem item; item.is_dir = false; item.name = string2CString(Utf8ToMultiByte(name)); item.sha1 = string2CString(sha1); item.md5 = string2CString(md5); item.date = string2CString(date); item.owner = string2CString(owner); item.size = size; ret->items.push_back(item); } } } } catch (...) { ret->status = 999; } } ret->buckname = _buckname; ret->foldername = _prefix; AfxGetApp()->GetMainWnd()->PostMessage(WM_MAINDLG_ListBucketResult, (WPARAM)0, (LPARAM)ret); }
std::string Utf8ToMultiByte( const std::string& sSrc ) { return Utf8ToMultiByte( sSrc.c_str(), (_U32)( sSrc.size() ) ); }