Class: FragmentClient
- Inherits:
-
Object
- Object
- FragmentClient
- Extended by:
- T::Sig
- Defined in:
- lib/fragment_client.rb
Overview
A client for Fragment
Instance Method Summary collapse
- #create_conn(client_id, client_secret) ⇒ Object
-
#initialize(client_id, client_secret, extra_queries_filename: nil) ⇒ FragmentClient
constructor
A new instance of FragmentClient.
- #query(query, variables) ⇒ Object
Constructor Details
#initialize(client_id, client_secret, extra_queries_filename: nil) ⇒ FragmentClient
Returns a new instance of FragmentClient.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/fragment_client.rb', line 36 def initialize(client_id, client_secret, extra_queries_filename: nil) conn = create_conn(client_id, client_secret) @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 return if extra_queries_filename.nil? queries = FragmentGraphQl::Client.parse( File.read(extra_queries_filename) ) 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(queries.const_get(q), v) end end end |
Instance Method Details
#create_conn(client_id, client_secret) ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/fragment_client.rb', line 63 def create_conn(client_id, client_secret) 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) end |
#query(query, variables) ⇒ Object
72 73 74 |
# File 'lib/fragment_client.rb', line 72 def query(query, variables) FragmentGraphQl::Client.query(query, variables: variables, context: { access_token: @token }) end |