18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/superbot/cloud/api.rb', line 18
def self.request(type, params: {})
method, endpoint, required_param = ENDPOINT_MAP[type].values
uri = URI.parse([BASE_URI, endpoint, params[required_param]].compact.join('/'))
req = Net::HTTP.const_get(
method.to_s.split('_').map(&:capitalize).join('::')
).new(uri, params.compact)
req.set_form_data(params.compact) unless method == :post_multipart
if Superbot::Cloud.credentials
req['Authorization'] = format(
'Token token="%<token>s", email="%<email>s"',
**Superbot::Cloud.credentials.slice(:email, :token)
)
end
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end
parsed_response = response.class.body_permitted? && JSON.parse(response.body, symbolize_names: true) || {}
return parsed_response if response.is_a? Net::HTTPSuccess
abort parsed_response[:errors]
end
|