module ShopifyAPI::GraphQL
Constants
- DEFAULT_EXECUTION_ADAPTER
- DEFAULT_GRAPHQL_CLIENT
- DEFAULT_SCHEMA_LOCATION_PATH
- InvalidClient
- InvalidSchema
Public Class Methods
clear_clients()
click to toggle source
# File lib/shopify_api/graphql.rb, line 43 def clear_clients @_client_cache = {} end
client(api_version = ShopifyAPI::Base.api_version.handle)
click to toggle source
# File lib/shopify_api/graphql.rb, line 17 def client(api_version = ShopifyAPI::Base.api_version.handle) initialize_client_cache cached_client = @_client_cache[api_version] if cached_client cached_client else schema_file = schema_location.join("#{api_version}.json") if !schema_file.exist? raise InvalidClient, <<~MSG Client for API version #{api_version} does not exist because no schema file exists at `#{schema_file}`. To dump the schema file, use the `rake shopify_api:graphql:dump` task. MSG else puts( '[WARNING] Client was not pre-initialized. Ensure `ShopifyAPI::GraphQL.initialize_clients` ' \ 'is called during app initialization.' ) initialize_clients @_client_cache[api_version] end end end
execution_adapter()
click to toggle source
# File lib/shopify_api/graphql.rb, line 80 def execution_adapter @execution_adapter || DEFAULT_EXECUTION_ADAPTER end
execution_adapter=(executor)
click to toggle source
# File lib/shopify_api/graphql.rb, line 84 def execution_adapter=(executor) @execution_adapter = executor end
graphql_client()
click to toggle source
# File lib/shopify_api/graphql.rb, line 88 def graphql_client @graphql_client || DEFAULT_GRAPHQL_CLIENT end
graphql_client=(client)
click to toggle source
# File lib/shopify_api/graphql.rb, line 92 def graphql_client=(client) @graphql_client = client end
initialize_clients(raise_on_invalid_schema: true)
click to toggle source
# File lib/shopify_api/graphql.rb, line 47 def initialize_clients(raise_on_invalid_schema: true) initialize_client_cache Dir.glob(schema_location.join("*.json")).each do |schema_file| schema_file = Pathname(schema_file) matches = schema_file.basename.to_s.match(/^#{ShopifyAPI::ApiVersion::HANDLE_FORMAT}\.json$/) if matches api_version = ShopifyAPI::ApiVersion.new(handle: matches[1]) elsif raise_on_invalid_schema raise InvalidSchema, "Invalid schema file name `#{schema_file}`. Does not match format of: `<version>.json`." else next end schema = graphql_client.load_schema(schema_file.to_s) client = graphql_client.new(schema: schema, execute: execution_adapter.new(api_version)).tap do |c| c.allow_dynamic_queries = true end @_client_cache[api_version.handle] = client end end
schema_location()
click to toggle source
# File lib/shopify_api/graphql.rb, line 72 def schema_location @schema_location || DEFAULT_SCHEMA_LOCATION_PATH end
schema_location=(path)
click to toggle source
# File lib/shopify_api/graphql.rb, line 76 def schema_location=(path) @schema_location = Pathname(path) end
Private Class Methods
initialize_client_cache()
click to toggle source
# File lib/shopify_api/graphql.rb, line 98 def initialize_client_cache @_client_cache ||= {} end