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.33'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



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

def config
  @config
end

Class Method Details

.included(base) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/http_client_generator.rb', line 13

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



41
42
43
44
45
46
# File 'lib/http_client_generator.rb', line 41

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



48
49
50
# File 'lib/http_client_generator.rb', line 48

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

#resources(&block) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/http_client_generator.rb', line 25

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

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

    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



21
22
23
# File 'lib/http_client_generator.rb', line 21

def url_helper(module_name)
  @url_helper = module_name
end