Module: Cloudxls::BaseRequest

Included in:
ReadRequest, WriteRequest
Defined in:
lib/cloudxls.rb

Instance Method Summary collapse

Instance Method Details

#api_baseObject



96
97
98
99
100
101
102
# File 'lib/cloudxls.rb', line 96

def api_base
  if test_key?
    Cloudxls.sandbox_base
  else
    client_options[:api_base]
  end
end

#api_keyObject



80
81
82
83
84
85
86
# File 'lib/cloudxls.rb', line 80

def api_key
  key = client_options[: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_requestObject



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(client_options = nil)
  @post_data = []
  @finished  = false
  @client_options = client_options || Cloudxls.client_options
end

#path_to(path) ⇒ Object



110
111
112
# File 'lib/cloudxls.rb', line 110

def path_to(path)
  "/#{client_options[: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, client_options[:port], use_ssl: client_options[:use_ssl], &block)
end

#test_key?Boolean

Is Api Key for testing/sandbox only?

Returns:

  • (Boolean)

    write request object



92
93
94
# File 'lib/cloudxls.rb', line 92

def test_key?
  api_key.to_s.downcase.start_with?("test")
end

#user_agentObject



114
115
116
# File 'lib/cloudxls.rb', line 114

def user_agent
  "cloudxls-ruby #{VERSION}"
end