module ApiRecipes
TODO: Sistema i default nelle config
Constants
- VERSION
Public Class Methods
_aprcps_define_global_apis()
click to toggle source
# File lib/api_recipes.rb, line 106 def self._aprcps_define_global_apis configuration.apis_configs.each do |api_name, api_configs| api_name = api_name.to_sym _aprcps_global_storage[api_name] = Api.new api_name, api_configs, self define_singleton_method api_name do _aprcps_global_storage[api_name] end end end
_aprcps_global_storage()
click to toggle source
# File lib/api_recipes.rb, line 116 def self._aprcps_global_storage unless @storage @storage = {} end @storage end
_aprcps_merge_apis_configs(api_name, configs = nil)
click to toggle source
# File lib/api_recipes.rb, line 131 def self._aprcps_merge_apis_configs(api_name, configs = nil) unless api_name.is_a?(String) || api_name.is_a?(Symbol) raise ArgumentError, "no api_name provided. Given: #{api_name.inspect}" end global_api_configs = _aprcps_global_storage[api_name]&.configs || {} if configs global_api_configs.deep_merge(configs) do |_, old_val, new_val| if new_val.nil? old_val else new_val end end else global_api_configs end end
_aprcps_thread_storage()
click to toggle source
# File lib/api_recipes.rb, line 124 def self._aprcps_thread_storage unless Thread.current[:api_recipes] Thread.current[:api_recipes] = {} end Thread.current[:api_recipes] end
configuration()
click to toggle source
# File lib/api_recipes.rb, line 57 def self.configuration unless @configuration @configuration = Configuration.new end @configuration end
configure() { |configuration| ... }
click to toggle source
# File lib/api_recipes.rb, line 65 def self.configure if block_given? yield(configuration) else configuration end end
included(receiver)
click to toggle source
# File lib/api_recipes.rb, line 16 def self.included(receiver) def receiver.api(api_name, configs = {}) unless api_name.is_a?(String) || api_name.is_a?(Symbol) raise ArgumentError, "api name must be a Symbol or String" end if configs && !configs.is_a?(Hash) raise ApiRecipes::ApiConfigIsNotAnHash.new(api_name) end api_name = api_name.to_sym # configs = ApiRecipes._aprcps_merge_apis_configs(api_name, configs.deep_symbolize_keys) if self.respond_to? api_name raise ApiNameClashError.new(self, api_name) else define_method api_name do configs = ApiRecipes._aprcps_merge_apis_configs(api_name, configs.deep_symbolize_keys) api = Api.new(api_name, configs, self) ApiRecipes.copy_global_authorizations_to_api api api end define_singleton_method api_name do configs = ApiRecipes._aprcps_merge_apis_configs(api_name, configs.deep_symbolize_keys) api = Api.new(api_name, configs, self) ApiRecipes.copy_global_authorizations_to_api api api end end end end
print_urls()
click to toggle source
# File lib/api_recipes.rb, line 53 def self.print_urls @print_urls || false end
print_urls=(value)
click to toggle source
# File lib/api_recipes.rb, line 49 def self.print_urls=(value) @print_urls = value end
set_basic_auth_for_api(basic_auth, api_name)
click to toggle source
# File lib/api_recipes.rb, line 95 def self.set_basic_auth_for_api(basic_auth, api_name) api_name = api_name.to_sym # Set authorization on thread storage if _aprcps_thread_storage[api_name] _aprcps_thread_storage[api_name].each do |_, api| api.authorization = basic_auth end end end