module Metabase::Connection

Public Instance Methods

delete(path, **params) click to toggle source
# File lib/metabase/connection.rb, line 21
def delete(path, **params)
  request(:delete, path, params)
end
get(path, **params) click to toggle source
# File lib/metabase/connection.rb, line 9
def get(path, **params)
  request(:get, path, params)
end
head(path, **params) click to toggle source
# File lib/metabase/connection.rb, line 25
def head(path, **params)
  request(:head, path, params)
end
post(path, **params) click to toggle source
# File lib/metabase/connection.rb, line 13
def post(path, **params)
  request(:post, path, params)
end
put(path, **params) click to toggle source
# File lib/metabase/connection.rb, line 17
def put(path, **params)
  request(:put, path, params)
end

Private Instance Methods

connection() click to toggle source
# File lib/metabase/connection.rb, line 45
def connection
  @connection ||= Faraday.new(url: @url) do |c|
    c.request :json, content_type: /\bjson$/
    c.response :json, content_type: /\bjson$/
    c.request :url_encoded, content_type: /x-www-form-urlencoded/
    c.adapter Faraday.default_adapter
    c.headers['User-Agent'] =
      "MetabaseRuby/#{VERSION} (#{RUBY_ENGINE}#{RUBY_VERSION})"
  end
end
request(method, path, params) click to toggle source
# File lib/metabase/connection.rb, line 31
def request(method, path, params)
  headers = params.delete(:headers)

  response = connection.public_send(method, path, params) do |request|
    request.headers['X-Metabase-Session'] = @token if @token
    headers&.each_pair { |k, v| request.headers[k] = v }
  end

  error = Error.from_response(response)
  raise error if error

  response.body
end