class Maestrano::Connec::Client
Attributes
group_id[R]
Public Class Methods
new(group_id)
click to toggle source
# File lib/maestrano/connec/client.rb, line 14 def initialize(group_id) @group_id = group_id @debug = !!ENV['DEBUG_CONNEC'] self.class.base_uri("#{Maestrano[self.class.preset].param('connec.host')}#{Maestrano[self.class.preset].param('connec.base_path')}") end
Public Instance Methods
batch(body, options = {})
click to toggle source
# File lib/maestrano/connec/client.rb, line 74 def batch(body, options = {}) url = "#{Maestrano[self.class.preset].param('connec.host')}/batch" response = self.class.post(url, default_options.merge(body: body.to_json).merge(options)) save_request_response(:post, '/batch', body.to_json, response) if @debug response end
default_options()
click to toggle source
Return the default options which includes maestrano authentication
# File lib/maestrano/connec/client.rb, line 23 def default_options { basic_auth: { username: Maestrano[self.class.preset].param('api.id'), password: Maestrano[self.class.preset].param('api.key') }, timeout: Maestrano[self.class.preset].param('connec.timeout') } end
get(relative_path, options = {})
click to toggle source
E.g: client.get('/organizations') E.g: client.get('/organizations/123')
# File lib/maestrano/connec/client.rb, line 42 def get(relative_path, options = {}) url = self.scoped_path(relative_path) response = self.class.get(url, default_options.merge(options)) save_request_response(:get, url, nil, response) if @debug response end
post(relative_path, body, options = {})
click to toggle source
E.g: client.post('/organizations', { organizations: { name: 'DoeCorp Inc.' } })
# File lib/maestrano/connec/client.rb, line 52 def post(relative_path, body, options = {}) url = self.scoped_path(relative_path) response = self.class.post(url, default_options.merge(body: body.to_json).merge(options)) save_request_response(:post, url, body.to_json, response) if @debug response end
put(relative_path, body, options = {})
click to toggle source
E.g for collection:
> client.put('/organizations/123', { organizations: { name: 'DoeCorp Inc.' } })¶ ↑
E.g for singular resource:
> client.put('/company', { company: { name: 'DoeCorp Inc.' } })¶ ↑
# File lib/maestrano/connec/client.rb, line 65 def put(relative_path, body, options = {}) url = self.scoped_path(relative_path) response = self.class.put(url, default_options.merge(body: body.to_json).merge(options)) save_request_response(:put, url, body.to_json, response) if @debug response end
save_request_response(action, url, request_body, response)
click to toggle source
Save request/response files
-
GET request: /tmp/connec/get/cld-123/organizations/XYZ/request response: /tmp/connec/get/cld-123/organizations/XYZ/response
-
POST request: /tmp/connec/post/cld-123/organizations/XYZ/request response: /tmp/connec/post/cld-123/organizations/XYZ/response
-
PUT request: /tmp/connec/put/cld-123/organizations/XYZ/request response: /tmp/connec/put/cld-123/organizations/XYZ/response
# File lib/maestrano/connec/client.rb, line 93 def save_request_response(action, url, request_body, response) # Path to store files file_path = "#{Dir.tmpdir}/connec/#{action}#{url}/#{SecureRandom.hex}" FileUtils.mkdir_p(file_path) # Save request and response File.open("#{file_path}/request", 'w') { |file| file.write(request_body) } File.open("#{file_path}/response", 'w') { |file| file.write(response.body) } end
scoped_path(relative_path)
click to toggle source
Return the right path scoped using the customer group id
# File lib/maestrano/connec/client.rb, line 35 def scoped_path(relative_path) clean_path = relative_path.gsub(/^\/+/, "").gsub(/\/+$/, "") "/#{@group_id}/#{clean_path}" end