Method: ShopifyCLI::PartnersAPI.query

Defined in:
lib/shopify_cli/partners_api.rb

.query(ctx, query_name, **variables) ⇒ Object

issues a graphql query or mutation to the Shopify Partners Dashboard CLI Schema. It loads a graphql query from a file so that you do not need to use large unwieldy query strings. It also handles authentication for you as well.

#### Parameters

  • ctx: running context from your command

  • query_name: name of the query you want to use, loaded from the lib/graphql directory.

  • ‘**variables`: a hash of variables to be supplied to the query or mutation

#### Raises

  • http 404 will raise a ShopifyCLI::API::APIRequestNotFoundError

  • http 400..499 will raise a ShopifyCLI::API::APIRequestClientError

  • http 500..599 will raise a ShopifyCLI::API::APIRequestServerError

  • All other codes will raise ShopifyCLI::API::APIRequestUnexpectedError

#### Returns

  • resp - graphql response data hash. This can be a different shape for every query.

#### Example

ShopifyCLI::PartnersAPI.query(@ctx, 'all_organizations')


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/shopify_cli/partners_api.rb', line 38

def query(ctx, query_name, **variables)
  CLI::Kit::Util.begin do
    api_client(ctx).query(query_name, variables: variables)
  end.retry_after(
    API::APIRequestUnauthorizedError,
    retries: 1,
    only: -> { !IdentityAuth::EnvAuthToken.partners_token_present? }
  ) do
    ShopifyCLI::IdentityAuth.new(ctx: ctx).reauthenticate
  end
rescue API::APIRequestUnauthorizedError => e
  if (request_info = auth_failure_info(ctx, e))
    ctx.puts(ctx.message("core.api.error.failed_auth_debugging", request_info))
  end
  ctx.abort(ctx.message("core.api.error.failed_auth"))
rescue API::APIRequestNotFoundError
  ctx.puts(ctx.message("core.partners_api.error.account_not_found", ShopifyCLI::TOOL_NAME))
end