class SquarespaceApi::Connection
Constants
- DEFAULT_HEADERS
Attributes
config[R]
connection[R]
Public Class Methods
new(config)
click to toggle source
# File lib/squarespace_api/connection.rb, line 15 def initialize(config) @config = config @connection = Faraday.new do |connection| connection.headers = DEFAULT_HEADERS connection.response :json connection.adapter(Faraday.default_adapter) end initialize_app_session if config.access_token end
Public Instance Methods
delete(path, params: {}, headers: {})
click to toggle source
# File lib/squarespace_api/connection.rb, line 34 def delete(path, params: {}, headers: {}) handle_response(connection.delete(path, params, connection.headers.merge(headers))) end
get(path, params: {}, headers: {})
click to toggle source
# File lib/squarespace_api/connection.rb, line 26 def get(path, params: {}, headers: {}) handle_response(connection.get(path, params, connection.headers.merge(headers))) end
initialize_app_session()
click to toggle source
# File lib/squarespace_api/connection.rb, line 59 def initialize_app_session @connection.headers['Authorization'] = "Bearer #{config.access_token}" @connection.url_prefix = api_base_url self end
initialize_oauth_session()
click to toggle source
# File lib/squarespace_api/connection.rb, line 70 def initialize_oauth_session @connection.headers['Authorization'] = "Basic #{config.encoded_oauth_token}" @connection.url_prefix = config.oauth_base_url self end
post(path, params: {}, headers: {})
click to toggle source
# File lib/squarespace_api/connection.rb, line 30 def post(path, params: {}, headers: {}) handle_response(connection.post(path, params, connection.headers.merge(headers))) end
upload_file(path, file_path)
click to toggle source
# File lib/squarespace_api/connection.rb, line 38 def upload_file(path, file_path) temp_connection = Faraday.new(url: api_base_url) do |f| f.request :multipart f.response :json f.headers = DEFAULT_HEADERS.merge( 'Authorization' => "Bearer #{config.access_token}", 'Content-Type' => 'multipart/form-data', ) end.post(path, { file: Faraday::FilePart.new(file_path, 'text/x-ruby') }) end
with_app_session() { || ... }
click to toggle source
# File lib/squarespace_api/connection.rb, line 54 def with_app_session initialize_app_session yield end
with_idempotency_key() { || ... }
click to toggle source
# File lib/squarespace_api/connection.rb, line 49 def with_idempotency_key @connection.headers['Idempotency-Key'] = SecureRandom.hex yield end
with_oauth_session() { || ... }
click to toggle source
# File lib/squarespace_api/connection.rb, line 65 def with_oauth_session initialize_oauth_session yield end
Private Instance Methods
api_base_url()
click to toggle source
# File lib/squarespace_api/connection.rb, line 80 def api_base_url "#{config.base_url}/#{config.api_version}" end
handle_response(response)
click to toggle source
# File lib/squarespace_api/connection.rb, line 84 def handle_response(response) return response if response.success? error_message = response.body.dig('message') case response.status when 400 raise SquarespaceApi::Errors::BadRequest, error_message when 401 raise SquarespaceApi::Errors::Unauthorized, error_message when 404 raise SquarespaceApi::Errors::NotFound, error_message when 405 raise SquarespaceApi::Errors::MethodNotAllowed, error_message when 429 raise SquarespaceApi::Errors::TooManyRequests, error_message else response end end