class Scale::Api
Constants
- SCALEAPI_GEM_INFO
- SCALE_API_URL
- SCALE_RUBY_CLIENT_VERSION
Public Instance Methods
connection()
click to toggle source
# File lib/scale/api.rb, line 11 def connection @connection ||= Faraday.new(:url => SCALE_API_URL) do |faraday| faraday.request :basic_auth, self.api_key, '' faraday.request :url_encoded # form-encode POST params faraday.response :logger if logging # log requests to STDOUT faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end end
create_task(type, args = {})
click to toggle source
# File lib/scale/api.rb, line 75 def create_task(type, args = {}) response = post("task/#{type}", args) Api::Tasks::BaseTask.new(JSON.parse(response.body), self) end
get(url, params = {})
click to toggle source
# File lib/scale/api.rb, line 20 def get(url, params = {}) response = connection.get do |req| req.url "#{SCALE_API_URL}#{url}" req.params.merge!(default_request_params.merge(params)) req.headers['X-API-Client'] = "Ruby" req.headers["X-API-Client-Version"] = SCALE_RUBY_CLIENT_VERSION end if response.status != 200 return handle_error(response) end response rescue Faraday::Error::ConnectionFailed raise Scale::Api::ConnectionError end
handle_error(response)
click to toggle source
# File lib/scale/api.rb, line 58 def handle_error(response) error_body = JSON.parse(response.body) if response.status == 404 raise Scale::Api::NotFound.new(error_body['error'], response.status) elsif response.status == 429 raise Scale::Api::TooManyRequests.new(error_body['error'], response.status) elsif response.status > 499 raise Scale::Api::InternalServerError.new(error_body['error'], response.status) elsif response.status == 401 raise Scale::Api::Unauthorized.new(error_body['error'], response.status) else raise Scale::Api::BadRequest.new(error_body['error'], response.status) end rescue JSON::ParserError raise Scale::Api::InternalServerError end
post(url, body = {})
click to toggle source
# File lib/scale/api.rb, line 37 def post(url, body = {}) body.delete(:callback_url) if body.keys.include?(:callback_url) && body[:callback_url].nil? body = default_request_params.merge(body) response = connection.post do |req| req.url "#{SCALE_API_URL}#{url}" req.headers['Content-Type'] = 'application/json' req.body = body.to_json req.headers['X-API-Client'] = "Ruby" req.headers["X-API-Client-Version"] = SCALE_RUBY_CLIENT_VERSION end if response.status != 200 return handle_error(response) end response rescue Faraday::Error::ConnectionFailed raise Scale::Api::ConnectionError end