class Teamlab::Request
Public Class Methods
new(api_additive)
click to toggle source
# File lib/teamlab/request.rb, line 12 def initialize(api_additive) @api_additive = api_additive.to_s end
Public Instance Methods
delete(*args)
click to toggle source
# File lib/teamlab/request.rb, line 28 def delete(*args) request(:delete, args) end
get(*args)
click to toggle source
# File lib/teamlab/request.rb, line 20 def get(*args) request(:get, args) end
post(*args)
click to toggle source
# File lib/teamlab/request.rb, line 16 def post(*args) request(:post, args) end
put(*args)
click to toggle source
# File lib/teamlab/request.rb, line 24 def put(*args) request(:put, args) end
Private Instance Methods
generate_request_url(command)
click to toggle source
# File lib/teamlab/request.rb, line 51 def generate_request_url(command) Teamlab.config.server + Teamlab.config.api_path + @api_additive + command end
parse_args(args, type)
click to toggle source
# File lib/teamlab/request.rb, line 55 def parse_args(args, type) command = args.first.instance_of?(Array) ? '/' + args.shift.join('/') : args.shift.to_s opts = {} opts[:body] = args.last.instance_of?(Hash) ? args.pop : {} opts[:headers] = Teamlab.config.headers if opts[:body].key?(:somefile) opts[:query] = opts.delete(:body) opts[:detect_mime_type] = true end opts[:query] = opts.delete(:body) if type == :get [command, opts] end
request(type, args)
click to toggle source
# File lib/teamlab/request.rb, line 34 def request(type, args) command, opts = parse_args(args, type) url = URI.encode(generate_request_url(command)) attempts = 0 begin response = Teamlab::Response.new(HTTMultiParty.send(type, url, opts)) rescue TimeoutError => timeout_exception attempts += 1 retry if attempts < 3 raise "Can't #{type} to #{url} because of TimeoutError: #{timeout_exception}" rescue Exception => e raise e end fail "Error #{response.code}: #{response.error}" unless response.success response end