class Bob::API

Constants

BASE_URL

Public Class Methods

authorization_header(use_api_key: false) click to toggle source
# File lib/bob/api/api.rb, line 53
def self.authorization_header(use_api_key: false)
  if use_api_key
    {
      Authorization: Bob.api_key
    }
  else
    {
      Authorization: "Basic #{Base64.strict_encode64("#{Bob.access_user_name}:#{Bob.access_token}")}"
    }
  end
end
build_url(endpoint, params = {}) click to toggle source
# File lib/bob/api/api.rb, line 72
def self.build_url(endpoint, params = {})
  url = "#{BASE_URL}/#{Bob.api_version}/#{endpoint}"
  url += "?#{URI.encode_www_form(params)}" unless params.empty?

  url
end
content_headers() click to toggle source
# File lib/bob/api/api.rb, line 65
def self.content_headers
  {
    Accept: 'application/json',
    'Content-Type': 'application/json'
  }
end
create_csv(content) click to toggle source
# File lib/bob/api/api.rb, line 79
def self.create_csv(content)
  file_name = SecureRandom.alphanumeric(15)

  content.gsub!("\r", '').gsub!('', '')
  splitted = content.split("\n")
  CSV.open("tmp/#{file_name}.csv", 'wb') do |csv|
    csv << splitted.shift.split(',')
    splitted.each do |row|
      csv << CSV.parse_line(row)
    end
  end

  "tmp/#{file_name}.csv"
end
delete(endpoint) click to toggle source
# File lib/bob/api/api.rb, line 37
def self.delete(endpoint)
  url = build_url(endpoint)
  response = RestClient.delete(url)
  response.code
end
get(endpoint, params = {}, csv_response: false) click to toggle source
# File lib/bob/api/api.rb, line 13
def self.get(endpoint, params = {}, csv_response: false)
  url = build_url(endpoint, params)
  response = RestClient.get(url, authorization_header)
  return create_csv(response.body) if csv_response

  JSON.parse(response.body)
end
post(endpoint, params = {}, use_api_key: false) click to toggle source
# File lib/bob/api/api.rb, line 21
def self.post(endpoint, params = {}, use_api_key: false)
  url = build_url(endpoint)
  response = RestClient.post(
    url,
    params.to_json,
    authorization_header(use_api_key: use_api_key).merge(content_headers)
  )
  response.code
end
post_media(endpoint, params = {}) click to toggle source
# File lib/bob/api/api.rb, line 31
def self.post_media(endpoint, params = {})
  url = build_url(endpoint)
  response = RestClient.post(url, params.to_json, authorization_header.merge(content_headers))
  response.code
end
put(endpoint, params = {}, use_api_key: false) click to toggle source
# File lib/bob/api/api.rb, line 43
def self.put(endpoint, params = {}, use_api_key: false)
  url = build_url(endpoint)
  response = RestClient.put(
    url,
    params.to_json,
    authorization_header(use_api_key: use_api_key).merge(content_headers)
  )
  response.code
end