module ShopifyAPI::Utils::GraphqlProxy
Public Class Methods
proxy_query(session:, headers:, body:, cookies: nil, tries: 1)
click to toggle source
# File lib/shopify_api/utils/graphql_proxy.rb, line 19 def proxy_query(session:, headers:, body:, cookies: nil, tries: 1) raise Errors::PrivateAppError, "GraphQL proxing is unsupported for private apps." if Context.private? normalized_headers = HttpUtils.normalize_headers(headers) unless session.online? raise Errors::SessionNotFoundError, "Failed to load an online session from the provided parameters." end client = Clients::Graphql::Admin.new(session: session) case normalized_headers["content-type"] when "application/graphql" return client.query(query: body, tries: tries) when "application/json" parsed_body = JSON.parse(body) query = parsed_body["query"] raise Errors::InvalidGraphqlRequestError, "Request missing 'query' field in GraphQL proxy request." if query.nil? return client.query(query: query, variables: parsed_body["variables"], tries: tries) end raise Errors::InvalidGraphqlRequestError, "Unsupported Content-Type #{normalized_headers["content-type"]}." end