Class: ApiGenerator::Client

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/api_generator/client.rb

Constant Summary collapse

REST_METHODS =
%i[
  put
  get
  patch
  delete
  post
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url: ApiGenerator::Url.new(""), rest_method: :get) ⇒ Client

Returns a new instance of Client.



20
21
22
23
# File 'lib/api_generator/client.rb', line 20

def initialize(url: ApiGenerator::Url.new(""), rest_method: :get)
  @url = T.let(url, ApiGenerator::Url)
  @rest_method = T.let(rest_method, Symbol)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/api_generator/client.rb', line 35

def method_missing(method, *args, &block)
  if REST_METHODS.any?(method)
    return ApiGenerator::Client.new(url: url, rest_method: method)
  end

  ApiGenerator::Client.new(url: ApiGenerator::Url.send(url), rest_method: rest_method)
end

Instance Attribute Details

#rest_methodObject

Returns the value of attribute rest_method.



9
10
11
# File 'lib/api_generator/client.rb', line 9

def rest_method
  @rest_method
end

#urlObject (readonly)

Returns the value of attribute url.



8
9
10
# File 'lib/api_generator/client.rb', line 8

def url
  @url
end

Instance Method Details

#execute(options) ⇒ Object



27
28
29
30
31
32
# File 'lib/api_generator/client.rb', line 27

def execute(options)
  Faraday.send(rest_method) do |req|
    req.params = options
    req.url = url.url
  end
end