Module: HttpClientGenerator

Defined in:
lib/http_client_generator.rb,
lib/http_client_generator/plugs.rb,
lib/http_client_generator/request.rb,
lib/http_client_generator/version.rb,
lib/http_client_generator/resource.rb,
lib/http_client_generator/url_builder.rb,
lib/http_client_generator/schema_builder.rb,
lib/http_client_generator/plugs/set_header.rb,
lib/http_client_generator/plugs/camelize_body.rb,
lib/http_client_generator/plugs/set_request_id.rb,
lib/http_client_generator/resources_definition.rb,
lib/http_client_generator/plugs/set_bearer_token.rb,
lib/http_client_generator/plugs/validate_request.rb,
lib/http_client_generator/plugs/validate_response.rb,
lib/http_client_generator/plugs/underscore_response.rb,
lib/http_client_generator/plugs/encode_json_response.rb,
lib/http_client_generator/plugs/enforce_json_response.rb

Defined Under Namespace

Modules: SchemaBuilder, UrlBuilder Classes: Plugs, Request, Resource, ResourcesDefinition

Constant Summary collapse

VERSION =
'0.1.29'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



36
37
38
# File 'lib/http_client_generator.rb', line 36

def config
  @config
end

Class Method Details

.included(base) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/http_client_generator.rb', line 10

def self.included(base)
  super

  base.extend(self)
  base.const_set(:Error, Class.new(StandardError))
  base.const_set(:RequestError, Class.new(base::Error))
end

Instance Method Details

#configure(&configure) ⇒ Object



38
39
40
41
42
43
# File 'lib/http_client_generator.rb', line 38

def configure(&configure)
  @config = self::Configuration.new
    .tap(&configure)
    .tap { |c| user_process_config(c) if respond_to?(:user_process_config) }
    .tap(&:freeze)
end

#process_config(&block) ⇒ Object



45
46
47
# File 'lib/http_client_generator.rb', line 45

def process_config(&block)
  define_singleton_method(:user_process_config, block)
end

#resources(&block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/http_client_generator.rb', line 22

def resources(&block)
  resources_definition = ResourcesDefinition.new(self)
  resources_definition.instance_eval(&block)
  resources = resources_definition.resources

  resources.each do |resource|
    method_name = :"#{resource.name}_#{resource.verb}"

    define_singleton_method(method_name) do |url_options = {}, body: nil, **rest_args|
      resource.perform_request(@url_helper, url_options, body, rest_args)
    end
  end
end

#url_helper(module_name) ⇒ Object



18
19
20
# File 'lib/http_client_generator.rb', line 18

def url_helper(module_name)
  @url_helper = module_name
end