class ShopifyAPI::Context
Attributes
Public Class Methods
Source
# File lib/shopify_api/context.rb, line 167 def activate_session(session) T.must(@active_session).value = session end
Source
# File lib/shopify_api/context.rb, line 162 def active_session @active_session&.value end
Source
# File lib/shopify_api/context.rb, line 172 def deactivate_session T.must(@active_session).value = nil end
Source
# File lib/shopify_api/context.rb, line 182 def host_name T.must(URI(T.must(host)).host) end
Source
# File lib/shopify_api/context.rb, line 177 def host_scheme T.must(URI.parse(T.must(host)).scheme) end
Source
# File lib/shopify_api/context.rb, line 99 def load_rest_resources(api_version:) # Unload any previous instances - mostly useful for tests where we need to reset the version @rest_resource_loader&.setup @rest_resource_loader&.unload # No resources for the unstable version or the release candidate version return if api_version == "unstable" || api_version == RELEASE_CANDIDATE_ADMIN_VERSION version_folder_name = api_version.gsub("-", "_") path = "#{__dir__}/rest/resources/#{version_folder_name}" unless Dir.exist?(path) unless @notified_missing_resources_folder.key?(api_version) @logger.warn("Cannot autoload REST resources for API version '#{version_folder_name}', folder is missing") @notified_missing_resources_folder[api_version] = true end return end @rest_resource_loader = T.let(Zeitwerk::Loader.new, T.nilable(Zeitwerk::Loader)) T.must(@rest_resource_loader).enable_reloading T.must(@rest_resource_loader).ignore("#{__dir__}/rest/resources") T.must(@rest_resource_loader).setup T.must(@rest_resource_loader).push_dir(path, namespace: ShopifyAPI) T.must(@rest_resource_loader).reload end
Source
# File lib/shopify_api/context.rb, line 187 def rest_disabled T.must(@rest_disabled) end
Source
# File lib/shopify_api/context.rb, line 52 def setup( api_key:, api_secret_key:, api_version:, is_private:, is_embedded:, scope: [], log_level: :info, logger: ::Logger.new($stdout), host_name: nil, host: ENV["HOST"] || "https://#{host_name}", private_shop: nil, user_agent_prefix: nil, old_api_secret_key: nil, api_host: nil, response_as_struct: false, rest_disabled: false ) unless ShopifyAPI::AdminVersions::SUPPORTED_ADMIN_VERSIONS.include?(api_version) raise Errors::UnsupportedVersionError, "Invalid version #{api_version}, supported versions: #{ShopifyAPI::AdminVersions::SUPPORTED_ADMIN_VERSIONS}" end @api_key = api_key @api_secret_key = api_secret_key @api_version = api_version @api_host = api_host @host = T.let(host, T.nilable(String)) @is_private = is_private @scope = Auth::AuthScopes.new(scope) @is_embedded = is_embedded @logger = logger @private_shop = private_shop @user_agent_prefix = user_agent_prefix @old_api_secret_key = old_api_secret_key @response_as_struct = response_as_struct @rest_disabled = rest_disabled @log_level = if valid_log_level?(log_level) log_level.to_sym else :info end load_rest_resources(api_version: api_version) end
Source
# File lib/shopify_api/context.rb, line 157 def setup? [api_key, api_secret_key, T.must(host)].none?(&:empty?) end
Private Class Methods
Source
# File lib/shopify_api/context.rb, line 194 def valid_log_level?(log_level) return true if ::ShopifyAPI::Logger.levels.include?(log_level.to_sym) ShopifyAPI::Logger.warn("#{log_level} is not a valid log_level. "\ "Valid options are #{::ShopifyAPI::Logger.levels.join(", ")}") false end