OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimCurlStreamFactory.cpp
Go to the documentation of this file.
1 //---
2 //
3 // License: MIT
4 //
5 // Description: OSSIM Amazon Web Services (AWS) plugin initialization
6 // code.
7 //
8 //---
9 // $Id$
10 
11 #include "ossimCurlStreamFactory.h"
12 #include "ossimCurlIStream.h"
14 #include <ossim/base/ossimTrace.h>
15 
16 static ossimTrace traceDebug("ossimCurlStreamFactory:debug");
17 
19 
21 {
22 }
23 
25 {
26  if(!m_instance)
27  {
28  m_instance = new ossim::CurlStreamFactory();
29  }
30 
31  return m_instance;
32 }
33 
34 std::shared_ptr<ossim::istream> ossim::CurlStreamFactory::createIstream(
35  const std::string& connectionString,
36  const ossimKeywordlist& /* options */,
37  std::ios_base::openmode openMode) const
38 {
39  //std::cout << "ossim::CurlStreamFactory::createIstream............Entered\n";
40  std::shared_ptr<ossim::CurlIStream> result = std::make_shared<ossim::CurlIStream>();
41  if(traceDebug())
42  {
43  ossimNotify(ossimNotifyLevel_WARN) << "ossim::AwsStreamFactory::createIstream: Entered...............\n";
44  }
45  //---
46  // Hack for upstream code calling ossimFilename::convertToNative()
47  // wrecking s3 url.
48  //---
49 #if defined(_WIN32)
50  ossimFilename f = connectionString;
51  f.convertBackToForwardSlashes();
52  result->open( f.string(), openMode) ;
53 #else
54  result->open( connectionString, openMode );
55 #endif
56 
57  if(!result->good())
58  {
59  result.reset();
60  }
61  if(traceDebug())
62  {
63  ossimNotify(ossimNotifyLevel_WARN) << "ossim::CurlStreamFactory::createIstream: Leaving...............\n";
64  }
65 
66  return result;
67 }
68 
69 std::shared_ptr<ossim::ostream> ossim::CurlStreamFactory::createOstream(
70  const std::string& /*connectionString*/,
71  const ossimKeywordlist& /* options */,
72  std::ios_base::openmode /*openMode*/) const
73 {
74  return std::shared_ptr<ossim::ostream>(0);
75 }
76 
77 std::shared_ptr<ossim::iostream> ossim::CurlStreamFactory::createIOstream(
78  const std::string& /*connectionString*/,
79  const ossimKeywordlist& /* options */,
80  std::ios_base::openmode /*openMode*/) const
81 {
82  return std::shared_ptr<ossim::iostream>(0);
83 }
84 
85 bool ossim::CurlStreamFactory::exists(const std::string& connectionString,
86  bool& continueFlag) const
87 {
88  bool result = false;
89  if ( connectionString.size() )
90  {
91  ossimUrl url(connectionString);
92 
93  if( (url.getProtocol() == "http") || (url.getProtocol() == "https") )
94  {
95  continueFlag = false; // Set to false to stop registry search.
96 
97  ossimKeywordlist header;
98  ossim_int64 filesize;
99  ossimCurlHttpRequest curlHttpRequest;
100  curlHttpRequest.set(url, header);
101  filesize = m_curlHttpRequest.getContentLength();
102  if ( filesize )
103  {
104  result = true;
105  }
106  }
107 
108  }
109  return result;
110 }
111 
112 // Hidden from use:
114  : m_curlHttpRequest()
115 {
116 }
117 
118 // Hidden from use:
120  : m_curlHttpRequest()
121 {
122 }
virtual std::shared_ptr< ossim::iostream > createIOstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
virtual bool exists(const std::string &connectionString, bool &continueFlag) const
Methods to test if connection exists.
static CurlStreamFactory * instance()
Represents serializable keyword/value map.
const ossimString & getProtocol() const
Definition: ossimUrl.h:17
bool set(const ossimUrl &url, const ossimKeywordlist &headerOptions, HttpMethodType methodType=HTTP_METHOD_GET)
virtual std::shared_ptr< ossim::ostream > createOstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
long long ossim_int64
virtual std::shared_ptr< ossim::istream > createIstream(const std::string &connectionString, const ossimKeywordlist &options, std::ios_base::openmode openMode) const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
static CurlStreamFactory * m_instance
const std::string & string() const
Definition: ossimString.h:414