Class: FragmentClient

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/fragment_client.rb

Overview

A client for Fragment

Instance Method Summary collapse

Constructor Details

#initialize(client_id, client_secret) ⇒ FragmentClient

Returns a new instance of FragmentClient.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fragment_client.rb', line 36

def initialize(client_id, client_secret)
  conn = T.let(Faraday.new('https://auth.fragment.dev') do |f|
    f.request :url_encoded
    f.request :authorization, :basic, client_id, client_secret
    f.adapter :net_http
  end, Faraday::Connection)
  @token = T.let(get_token(conn, client_id), String)
  FragmentGraphQl::Queries.constants.each do |q|
    name = q.to_s.gsub(/[a-z]([A-Z])/) do |m|
      format('%<lower>s_%<upper>s', lower: m[0], upper: m[1].downcase)
    end.gsub(/^[A-Z]/, &:downcase)
    define_singleton_method(name) do |v|
      query(FragmentGraphQl::Queries.const_get(q), v)
    end
  end
end

Instance Method Details

#query(query, variables) ⇒ Object



54
55
56
# File 'lib/fragment_client.rb', line 54

def query(query, variables)
  FragmentGraphQl::Client.query(query, variables: variables, context: { access_token: @token })
end