23 #include <aws/core/client/ClientConfiguration.h> 24 #include <aws/s3/S3Client.h> 25 #include <aws/s3/model/HeadObjectRequest.h> 28 static ossimTrace traceDebug(
"ossimAwsStreamFactory:debug");
46 const std::string& connectionString,
48 std::ios_base::openmode openMode)
const 50 std::shared_ptr<ossim::S3IStream> result = std::make_shared<ossim::S3IStream>();
62 result->open( f.
string(), options, openMode) ;
64 result->open( connectionString, options, openMode );
82 std::ios_base::openmode )
const 84 return std::shared_ptr<ossim::ostream>(0);
90 std::ios_base::openmode )
const 92 return std::shared_ptr<ossim::iostream>(0);
96 const std::string& connectionString,
bool& continueFlag)
const 101 <<
"ossim::AwsStreamFactory::exists() DEBUG: entered.....\n";
108 if ( connectionString.size() )
111 std::size_t pos = connectionString.find(
"://" );
112 if ( pos != std::string::npos )
117 continueFlag =
false;
131 Aws::S3::Model::HeadObjectRequest headObjectRequest;
132 headObjectRequest.WithBucket( bucket.c_str() )
133 .WithKey( key.c_str() );
134 auto headObject = m_client->HeadObject(headObjectRequest);
135 if(headObject.IsSuccess())
138 filesize = headObject.GetResult().GetContentLength();
160 <<
"ossim::AwsStreamFactory::exists() DEBUG: leaving.....\n";
182 Aws::Client::ClientConfiguration config;
186 preferencesKWL().findKey(std::string(
"ossim.plugins.aws.s3.region"));
189 config.region = region.c_str();
192 m_client = std::make_shared<Aws::S3::S3Client>(config);
bool exists(const std::string &connectionString, bool &continueFlag) const
Methods to test if connection exists.
virtual ~AwsStreamFactory()
Represents serializable keyword/value map.
virtual std::shared_ptr< ossim::istream > createIstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
static AwsStreamFactory * m_instance
const ossimString & getProtocol() const
const ossimString & getPath() const
static ossimPreferences * instance()
static AwsStreamFactory * instance()
virtual std::shared_ptr< ossim::iostream > createIOstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
const ossimString & getIp() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
virtual std::shared_ptr< ossim::ostream > createOstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
const std::string & string() const