S3ConnectionPtr s3connect() { AWSConnectionFactory* factory = AWSConnectionFactory::getInstance(); S3ConnectionPtr s3conn = factory->createS3Connection(get_access_key(), get_secret_key()); return s3conn; }
int s3objecttest(int argc, char** argv) { AWSConnectionFactory* lFactory = AWSConnectionFactory::getInstance(); std::cout << "Testing libaws version " << lFactory->getVersion() << std::endl; char* lAccessKeyId = getenv("AWS_ACCESS_KEY"); char* lSecretAccessKey = getenv("AWS_SECRET_ACCESS_KEY"); if (lAccessKeyId == 0 || lSecretAccessKey == 0) { std::cerr << "Environment variables (i.e. AWS_ACCESS_KEY or AWS_SECRET_ACCESS_KEY) not set" << std::endl; return 1; } S3ConnectionPtr lS3Rest = lFactory->createS3Connection(lAccessKeyId, lSecretAccessKey); int lReturnCode; try { lReturnCode = createbucket(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; lReturnCode = put(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; lReturnCode = listbucket(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; lReturnCode = getobject(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; lReturnCode = deleteobject(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; lReturnCode = deletebucket(lS3Rest.get()); if (lReturnCode != 0) return lReturnCode; } catch (AWSConnectionException& e) { std::cerr << e.what() << std::endl; return 2; } lFactory->shutdown(); return 0; }
int main ( int argc, char** argv ) { char* lBucketName = 0; char* lPrefix = 0; char* lMarker = 0; char* lDelimiter = 0; int lMaxKeys = 0; char* lAction = 0; char* lAccessKeyId = 0; char* lSecretAccessKey = 0; char* lFileName = 0; char* lKey = 0; int c; opterr = 0; AWSConnectionFactory* lFactory = AWSConnectionFactory::getInstance(); while ((c = getopt (argc, argv, "hi:k:a:n:f:p:mx:d:s:")) != -1) switch (c) { case 'i': lAccessKeyId = optarg; break; case 's': lSecretAccessKey = optarg; break; case 'a': lAction = optarg; break; case 'n': lBucketName = optarg; break; case 'p': lPrefix = optarg; break; case 'm': lMarker = optarg; break; case 'd': lDelimiter = optarg; break; case 'x': lMaxKeys = atoi(optarg); break; case 'f': lFileName = optarg; break; case 'k': lKey = optarg; break; case 'h': { usage(lFactory); exit(1); exit(1); } case '?': if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); exit(1); default: exit(1); } if (!lAccessKeyId) lAccessKeyId = getenv("AWS_ACCESS_KEY"); if (!lSecretAccessKey) lSecretAccessKey = getenv("AWS_SECRET_ACCESS_KEY"); if (!lAccessKeyId) { std::cerr << "No Access Key given" << std::endl; std::cerr << "Either use -i as a command line argument or set AWS_ACCESS_KEY as an environmental variable" << std::endl; exit(1); } if (!lSecretAccessKey) { std::cerr << "No Secret Access Key given" << std::endl; std::cerr << "Either use -s as a command line argument or set AWS_SECRET_ACCESS_KEY as an environmental variable" << std::endl; exit(1); } S3ConnectionPtr lS3Rest = lFactory->createS3Connection(lAccessKeyId, lSecretAccessKey); if (!lAction) { std::cerr << "No Action parameter specified." << std::endl; std::cerr << "Use -a as a command line argument" << std::endl; exit(1); } std::string lActionString(lAction); if ( lActionString.compare ( "list" ) == 0 ) { listBuckets(lS3Rest); } else if ( lActionString.compare ( "create" ) == 0 ) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } createBucket(lS3Rest, lBucketName); } else if ( lActionString.compare ( "delete" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } deleteBucket(lS3Rest, lBucketName); } else if ( lActionString.compare ( "entries" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } listBucket(lS3Rest, lBucketName, lPrefix==0?"":lPrefix, lMarker==0?"":lMarker, lDelimiter==0?"":lDelimiter, lMaxKeys==0?-1:lMaxKeys); } else if ( lActionString.compare ( "delete-all-entries" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } deleteAllEntries(lS3Rest, lBucketName); } else if ( lActionString.compare ( "logging" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } logging(lS3Rest, lBucketName); } else if ( lActionString.compare ( "put" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } if (!lFileName) { std::cerr << "No file specified." << std::endl; std::cerr << "Use -f as a command line argument" << std::endl; exit(1); } put(lS3Rest, lBucketName, lFileName, lKey==0?"":lKey); } else if ( lActionString.compare ( "putbin" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } if (!lFileName) { std::cerr << "No file specified." << std::endl; std::cerr << "Use -f as a command line argument" << std::endl; exit(1); } putbin(lS3Rest, lBucketName, lFileName, lKey==0?"":lKey); } else if ( lActionString.compare ( "get" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument" << std::endl; exit(1); } if (lKey==0) { std::cerr << "No key parameter specified." << std::endl; std::cerr << "Use -k as a command line argument" << std::endl; exit(1); } get(lS3Rest, lBucketName, lKey); } else if ( lActionString.compare ( "del" ) == 0) { if (!lBucketName) { std::cerr << "No bucket name parameter specified." << std::endl; std::cerr << "Use -n as a command line argument." << std::endl; exit(1); } if (!lKey && !lPrefix) { std::cerr << "No key or prefix parameter specified." << std::endl; std::cerr << "Use -k or -p as a command line argument." << std::endl; exit(1); } del(lS3Rest, lBucketName, lKey==0?"":lKey, lPrefix==0?"":lPrefix); } else { std::cerr << "Invalid action: \"" << lActionString << "\"." << std::endl; } }