class ShopifyAPI::Clients::Graphql::Client

Public Class Methods

new(session:, base_path:, api_version: nil) click to toggle source
# File lib/shopify_api/clients/graphql/client.rb, line 11
def initialize(session:, base_path:, api_version: nil)
  @http_client = T.let(HttpClient.new(session: session, base_path: base_path), HttpClient)
  @api_version = T.let(api_version || Context.api_version, String)
  if api_version
    if api_version == Context.api_version
      Context.logger.debug("Graphql client has a redundant API version override "\
        "to the default #{Context.api_version}")
    else
      Context.logger.debug("Graphql client overriding default API version "\
        "#{Context.api_version} with #{api_version}")
    end
  end
end

Public Instance Methods

query( query:, variables: nil, headers: nil, tries: 1, response_as_struct: Context.response_as_struct, debug: false ) click to toggle source
# File lib/shopify_api/clients/graphql/client.rb, line 35
def query(
  query:,
  variables: nil,
  headers: nil,
  tries: 1,
  response_as_struct: Context.response_as_struct,
  debug: false
)
  body = { query: query, variables: variables }
  search_params = debug ? "?debug=true" : ""

  @http_client.request(
    HttpRequest.new(
      http_method: :post,
      path: "#{@api_version}/graphql.json#{search_params}",
      body: body,
      query: nil,
      extra_headers: headers,
      body_type: "application/json",
      tries: tries,
    ),
    response_as_struct: response_as_struct || false,
  )
end