class BeautydateApi::APIRequest

Public Class Methods

consumer() click to toggle source
# File lib/beautydate_api/api_request.rb, line 9
def consumer
  @consumer ||= BeautydateApi::APIConsumer.new
  unless @consumer.valid?
    @consumer.authenticate(BeautydateApi.api_key)
  end
  @consumer
rescue BeautydateApi::ObjectNotFound => e
  raise BeautydateApi::AuthenticationException, 'Não foi possível autenticar o Consumer, verifique o BEAUTYDATE_TOKEN'
end
request(method, url, data = {}) click to toggle source
# File lib/beautydate_api/api_request.rb, line 33
def request(method, url, data = {})
  handle_response send_request(method, url, data)
end
session() click to toggle source
# File lib/beautydate_api/api_request.rb, line 19
def session
  @session ||= BeautydateApi::APISession.new(BeautydateApi.api_session_token)
  unless @session.valid?
    @session.authenticate(
      consumer.bearer,
      BeautydateApi.api_email,
      BeautydateApi.api_password
    )
  end
  @session
rescue BeautydateApi::ObjectNotFound => e
  raise BeautydateApi::AuthenticationException, 'Não foi possível autenticar a sessão, verifique o email e senha'
end

Private Class Methods

build_request(method, url, data) click to toggle source
# File lib/beautydate_api/api_request.rb, line 55
def build_request(method, url, data)
  {
    method: method,
    url: url,
    headers: headers,
    payload: { data: data }.to_json,
    timeout: 30
  }
end
handle_response(response) click to toggle source
# File lib/beautydate_api/api_request.rb, line 49
def handle_response(response)
  JSON.parse(response.body)
rescue JSON::ParserError
  raise RequestFailed
end
headers() click to toggle source
# File lib/beautydate_api/api_request.rb, line 65
def headers
  {
    user_agent: "BeautyDate/#{BeautydateApi::VERSION}; Ruby Client",
    content_type: 'application/vnd.api+json',
    authorization: self.consumer.bearer,
    'X-BeautyDate-Session-Token' => self.session.token
  }
end
send_request(method, url, data) click to toggle source
# File lib/beautydate_api/api_request.rb, line 39
def send_request(method, url, data)
  RestClient::Request.execute build_request(method, url, data)
rescue RestClient::ResourceNotFound
  raise ObjectNotFound
rescue RestClient::UnprocessableEntity => e
  raise RequestWithErrors.new JSON.parse(e.response)
rescue RestClient::BadRequest => e
  raise RequestWithErrors.new JSON.parse(e.response)
end