class Teamtailor::Request

Attributes

api_token[R]
api_version[R]
base_url[R]
body[R]
method[R]
params[R]
path[R]

Public Class Methods

new(base_url:, api_token:, api_version:, path:, params: {}, body: {}, method: :get) click to toggle source
# File lib/teamtailor/request.rb, line 8
def initialize(base_url:, api_token:, api_version:, path:, params: {}, body: {}, method: :get)
  @base_url = base_url
  @api_token = api_token
  @api_version = api_version
  @path = path
  @params = params
  @method = method
  @body = body
end

Public Instance Methods

call() click to toggle source
# File lib/teamtailor/request.rb, line 18
def call
  request = Typhoeus::Request.new(
    "#{base_url}#{path}",
    method: method,
    params: params,
    headers: request_headers,
    body: body.to_json
  )
  response = request.run

  if response.code == 200
    Teamtailor::PageResult.new response.body
  elsif response.code == 201
    Teamtailor::Parser.parse(JSON.parse(response.body)).first
  else
    raise Teamtailor::Error.from_response(
      body: response.body,
      status: response.code
    )
  end
end

Private Instance Methods

request_headers() click to toggle source
# File lib/teamtailor/request.rb, line 44
def request_headers
  {
    "Authorization": "Token token=#{api_token}",
    "X-Api-Version" => api_version,
    "User-Agent" => "teamtailor-rb v#{Teamtailor::VERSION}",
    "Content-Type" => "application/vnd.api+json; charset=utf-8",
  }
end