Module: Cloudxls::BaseRequest
- Included in:
- ReadRequest, WriteRequest
- Defined in:
- lib/cloudxls.rb
Instance Method Summary collapse
- #api_base ⇒ Object
- #api_key ⇒ Object
- #build_request ⇒ Object
-
#each(&block) ⇒ Object
Starts request and yields response to block.
- #initialize(client_options = nil) ⇒ Object
- #path_to(path) ⇒ Object
-
#start(&block) ⇒ Object
Internal.
-
#test_key? ⇒ Boolean
Is Api Key for testing/sandbox only?.
- #user_agent ⇒ Object
Instance Method Details
#api_base ⇒ Object
96 97 98 99 100 101 102 |
# File 'lib/cloudxls.rb', line 96 def api_base if test_key? Cloudxls.sandbox_base else [:api_base] end end |
#api_key ⇒ Object
80 81 82 83 84 85 86 |
# File 'lib/cloudxls.rb', line 80 def api_key key = [:api_key] if key.nil? raise "api_key is nil. Configure using CLOUDXLS_API_KEY ENV variable or Cloudxls.api_key = ..." end key end |
#build_request ⇒ Object
145 146 147 148 149 150 151 152 |
# File 'lib/cloudxls.rb', line 145 def build_request request = Net::HTTP::Post::Multipart.new(self.path, @post_data) unless api_key.nil? request.basic_auth api_key, "" end request['User-Agent'] = user_agent request end |
#each(&block) ⇒ Object
Starts request and yields response to block
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/cloudxls.rb', line 122 def each(&block) raise "#{self.class.name} already executed" if @finished start do |http| request = build_request if block_given? http.request(request) do |response| if Net::HTTPSuccess === response response.read_body(&block) else raise ApiError.new("#{response.code} #{response.class.name.to_s}: #{response.body}") end end else http.request(request) end end @finished = true self end |
#initialize(client_options = nil) ⇒ Object
74 75 76 77 78 |
# File 'lib/cloudxls.rb', line 74 def initialize( = nil) @post_data = [] @finished = false @client_options = || Cloudxls. end |
#path_to(path) ⇒ Object
110 111 112 |
# File 'lib/cloudxls.rb', line 110 def path_to(path) "/#{[:api_version]}/#{path}" end |
#start(&block) ⇒ Object
Internal. Starts the request.
106 107 108 |
# File 'lib/cloudxls.rb', line 106 def start(&block) Net::HTTP.start(api_base, [:port], use_ssl: [:use_ssl], &block) end |
#test_key? ⇒ Boolean
Is Api Key for testing/sandbox only?
92 93 94 |
# File 'lib/cloudxls.rb', line 92 def test_key? api_key.to_s.downcase.start_with?("test") end |
#user_agent ⇒ Object
114 115 116 |
# File 'lib/cloudxls.rb', line 114 def user_agent "cloudxls-ruby #{VERSION}" end |