Пример #1
0
//////////////////////////////////////////////////////////////////////////
// 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);
}
Пример #2
0
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);
}
Пример #3
0
		std::string Utf8ToMultiByte( const std::string& sSrc )
		{
			return Utf8ToMultiByte( sSrc.c_str(), (_U32)( sSrc.size() ) );
		}