Class: MetabaseQuerySync::MetabaseApi::FaradayMetabaseApi

Inherits:
MetabaseQuerySync::MetabaseApi show all
Defined in:
lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from MetabaseQuerySync::MetabaseApi

#delete_card, #delete_pulse

Constructor Details

#initialize(client:, user:, pass:) ⇒ FaradayMetabaseApi

Returns a new instance of FaradayMetabaseApi.

Parameters:

  • client (Faraday::Connection)
  • user (String)
  • pass (String)


12
13
14
15
16
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 12

def initialize(client:, user:, pass:)
  @client = client
  @user = user
  @pass = pass
end

Class Method Details

.from_metabase_credentials(creds, &configure_faraday) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 19

def self.from_metabase_credentials(creds, &configure_faraday)
  client = Faraday.new(url: creds.host) 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.response :logger
    c.adapter Faraday.default_adapter
    c.headers['User-Agent'] =
      "MetabaseQuerySync/#{MetabaseQuerySync::VERSION} (#{RUBY_ENGINE}#{RUBY_VERSION})"

    configure_faraday.call(c) if configure_faraday
  end

  new(client: client, user: creds.user, pass: creds.pass)
end

Instance Method Details

#get_card(id) ⇒ Object



61
62
63
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 61

def get_card(id)
  request(:get, "/api/card/#{id}").fmap to(Card)
end

#get_collection(id) ⇒ Object



41
42
43
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 41

def get_collection(id)
  request(:get, "/api/collection/#{id}").fmap to(Collection)
end

#get_collection_items(collection_id) ⇒ Object



45
46
47
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 45

def get_collection_items(collection_id)
  request(:get, "/api/collection/#{collection_id}/items").fmap to_collection_of(Item)
end

#get_databasesObject



57
58
59
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 57

def get_databases
  request(:get, '/api/database').fmap to_collection_of(Database)
end

#get_pulse(id) ⇒ Object



73
74
75
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 73

def get_pulse(id)
  request(:get, "/api/pulse/#{id}").fmap to(Pulse)
end

#put_card(card_request) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 65

def put_card(card_request)
  if card_request.id
    request(:put, "/api/card/#{card_request.id}", body: card_request.to_h)
  else
    request(:post, "/api/card", body: card_request.to_h)
  end.fmap to(Card)
end

#put_collection(collection_request) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 49

def put_collection(collection_request)
  if collection_request.id
    request(:put, "/api/collection/#{collection_request.id}", body: collection_request.to_h)
  else
    request(:post, "/api/collection", body: collection_request.to_h)
  end.fmap to(Collection)
end

#put_pulse(pulse_request) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 77

def put_pulse(pulse_request)
  if pulse_request.id
    request(:put, "/api/pulse/#{pulse_request.id}", body: pulse_request.to_h)
  else
    request(:post, "/api/pulse", body: pulse_request.to_h)
  end.fmap to(Pulse)
end

#search(q, model: nil) ⇒ Object



35
36
37
38
39
# File 'lib/metabase_query_sync/metabase_api/faraday_metabase_api.rb', line 35

def search(q, model: nil)
  request(:get, '/api/search') do |req|
    req.params.update(q: q, model: model)
  end.fmap to_collection_of(Item)
end