Beispiel #1
0
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;
}
Beispiel #3
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;
  }
}