class Airrecord::Client
Constants
- AIRTABLE_RPS_LIMIT
Per Airtable's documentation you will get throttled for 30 seconds if you issue more than 5 requests per second.
Airrecord
is a good citizen.
Attributes
api_key[R]
connection[W]
Public Class Methods
new(api_key)
click to toggle source
# File lib/airrecord/client.rb, line 14 def initialize(api_key) @api_key = api_key end
Public Instance Methods
connection()
click to toggle source
# File lib/airrecord/client.rb, line 18 def connection @connection ||= Faraday.new( url: "https://api.airtable.com", headers: { "Authorization" => "Bearer #{api_key}", "User-Agent" => "Airrecord/#{Airrecord::VERSION}", "X-API-VERSION" => "0.1.0", }, request: { params_encoder: Airrecord::QueryString } ) do |conn| if Airrecord.throttle? conn.request :airrecord_rate_limiter, requests_per_second: AIRTABLE_RPS_LIMIT end conn.adapter :net_http_persistent end end
escape(*args)
click to toggle source
# File lib/airrecord/client.rb, line 35 def escape(*args) QueryString.escape(*args) end
handle_error(status, error)
click to toggle source
# File lib/airrecord/client.rb, line 45 def handle_error(status, error) if error.is_a?(Hash) raise Error, "HTTP #{status}: #{error['error']["type"]}: #{error['error']['message']}" else raise Error, "HTTP #{status}: Communication error: #{error}" end end
parse(body)
click to toggle source
# File lib/airrecord/client.rb, line 39 def parse(body) JSON.parse(body) rescue JSON::ParserError nil end