-
Notifications
You must be signed in to change notification settings - Fork 476
/
Copy pathstorefront.rb
67 lines (64 loc) · 2.4 KB
/
storefront.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
62
63
64
65
66
67
# typed: strict
# frozen_string_literal: true
module ShopifyAPI
module Clients
module Graphql
class Storefront < Client
sig do
params(
shop: String,
storefront_access_token: T.nilable(String),
private_token: T.nilable(String),
public_token: T.nilable(String),
api_version: T.nilable(String),
).void
end
def initialize(shop, storefront_access_token = nil, private_token: nil, public_token: nil, api_version: nil)
unless storefront_access_token.nil?
warning = <<~WARNING
DEPRECATED: Use the named parameters for the Storefront token instead of passing
the public token as the second argument. Also, you may want to look into using
the Storefront private access token instead:
https://shopify.dev/docs/api/usage/authentication#getting-started-with-private-access
WARNING
ShopifyAPI::Logger.deprecated(warning, "15.0.0")
end
session = Auth::Session.new(
id: shop,
shop: shop,
access_token: "",
is_online: false,
)
super(session: session, base_path: "/api", api_version: api_version)
@storefront_access_token = T.let(T.must(private_token || public_token || storefront_access_token), String)
@storefront_auth_header = T.let(
private_token.nil? ? "X-Shopify-Storefront-Access-Token" : "Shopify-Storefront-Private-Token",
String,
)
end
sig do
params(
query: String,
variables: T.nilable(T::Hash[T.any(Symbol, String), T.untyped]),
headers: T.nilable(T::Hash[T.any(Symbol, String), T.untyped]),
tries: Integer,
response_as_struct: T.nilable(T::Boolean),
debug: T::Boolean,
).returns(HttpResponse)
end
def query(
query:,
variables: nil,
headers: {},
tries: 1,
response_as_struct: Context.response_as_struct,
debug: false
)
T.must(headers).merge!({ @storefront_auth_header => @storefront_access_token })
super(query: query, variables: variables, headers: headers, tries: tries,
response_as_struct: response_as_struct, debug: debug)
end
end
end
end
end