1.修复SSL connect error 问题
2.修复hos_create_bucket时,出现bucekt already exits的问题 3.修复upload时,远端地址无法解析的问题
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <aws/s3/model/PutObjectRequest.h>
|
||||
#include <aws/s3/model/CreateBucketRequest.h>
|
||||
#include <aws/core/auth/AWSCredentials.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <mutex>
|
||||
#include <sys/stat.h>
|
||||
@@ -26,51 +27,63 @@ static void PutObjectAsyncFinished(const Aws::S3::S3Client* s3Client,
|
||||
}
|
||||
else {
|
||||
std::cout << "Error: PutObjectAsyncFinished: " <<
|
||||
outcome.GetError().GetMessage() << std::endl;
|
||||
outcome.GetError() << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
hos_client_handle hos_client_init(const char *endpoint, const char *accesskeyid, const char *secretkey)
|
||||
{
|
||||
if (!endpoint || !accesskeyid || !secretkey)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
Aws::SDKOptions options;
|
||||
Aws::InitAPI(options);
|
||||
|
||||
hos_client_handle handle = NULL;
|
||||
Aws::Client::ClientConfiguration config;
|
||||
Aws::Auth::AWSCredentials credentials(accesskeyid, secretkey);
|
||||
std::cout << "accesskeyid: " << credentials.GetAWSAccessKeyId() << "\n" << std::endl;
|
||||
std::cout << "secretkey: " << credentials.GetAWSSecretKey() << "\n" << std::endl;
|
||||
//std::cout << "accesskeyid: " << credentials.GetAWSAccessKeyId() << "\n" << std::endl;
|
||||
//std::cout << "secretkey: " << credentials.GetAWSSecretKey() << "\n" << std::endl;
|
||||
|
||||
config.endpointOverride = endpoint;
|
||||
config.verifySSL = false;
|
||||
config.enableEndpointDiscovery = true;
|
||||
|
||||
handle = new Aws::S3::S3Client(credentials, config);
|
||||
handle = new Aws::S3::S3Client(credentials, config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
|
||||
return handle;
|
||||
}
|
||||
|
||||
bool hos_create_bucket(hos_client_handle handle, const char *bucket)
|
||||
int hos_create_bucket(hos_client_handle handle, const char *bucket)
|
||||
{
|
||||
if (!bucket)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
Aws::S3::S3Client& s3Client = *(Aws::S3::S3Client *) handle;
|
||||
Aws::S3::Model::CreateBucketRequest createBucketRequest;
|
||||
createBucketRequest.SetBucket(bucket);
|
||||
std::cout << "bucket name: " << createBucketRequest.GetBucket() << "\n" << std::endl;
|
||||
//std::cout << "bucket name: " << createBucketRequest.GetBucket() << "\n" << std::endl;
|
||||
|
||||
Aws::S3::Model::CreateBucketOutcome createBucketOutcome = s3Client.CreateBucket(createBucketRequest);
|
||||
|
||||
if (!createBucketOutcome.IsSuccess())
|
||||
{
|
||||
std::cout << "Failed to create bucket: " << bucket << "\n" << createBucketOutcome.GetError() << std::endl;
|
||||
return false;
|
||||
Aws::S3::S3Errors errorcode = createBucketOutcome.GetError().GetErrorType();
|
||||
if (errorcode != Aws::S3::S3Errors::BUCKET_ALREADY_OWNED_BY_YOU)
|
||||
{
|
||||
//std::cout << "Failed to create bucket: " << bucket << "\n" << createBucketOutcome.GetError() << std::endl;
|
||||
return errorcode;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool hos_upload_async(hos_client_handle handle, const char *bucket, const char *object)
|
||||
{
|
||||
const Aws::S3::S3Client &s3Client = (Aws::S3::S3Client&) handle;
|
||||
Aws::S3::S3Client& s3Client = *(Aws::S3::S3Client *) handle;
|
||||
struct stat buffer;
|
||||
|
||||
std::unique_lock<std::mutex> lock(upload_mutex);
|
||||
@@ -85,7 +98,15 @@ bool hos_upload_async(hos_client_handle handle, const char *bucket, const char *
|
||||
request.SetBucket(bucket);
|
||||
request.SetKey(object);
|
||||
|
||||
s3Client.PutObjectAsync(request, PutObjectAsyncFinished);
|
||||
const std::shared_ptr<Aws::IOStream> input_data =
|
||||
Aws::MakeShared<Aws::FStream>("SampleAllocationTag", object, std::ios_base::in | std::ios_base::binary);
|
||||
|
||||
request.SetBody(input_data);
|
||||
|
||||
std::shared_ptr<Aws::Client::AsyncCallerContext> context =
|
||||
Aws::MakeShared<Aws::Client::AsyncCallerContext>("PutObjectAllocationTag");
|
||||
context->SetUUID(object);
|
||||
s3Client.PutObjectAsync(request, PutObjectAsyncFinished, context);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -96,7 +117,7 @@ void hos_client_close(hos_client_handle handle)
|
||||
return;
|
||||
}
|
||||
|
||||
delete (Aws::S3::S3Client*)&handle;
|
||||
delete (Aws::S3::S3Client *)handle;
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user