Class: Clowk::Http

Inherits:
Object
  • Object
show all
Defined in:
lib/clowk/http/client.rb,
lib/clowk/http/response.rb,
lib/clowk/http/retry_middleware.rb,
lib/clowk/http/logger_middleware.rb,
lib/clowk/http/timeout_middleware.rb

Defined Under Namespace

Classes: LoggerMiddleware, Response, RetryMiddleware, TimeoutMiddleware

Constant Summary collapse

MAX_BODY_SIZE =
1 * 1024 * 1024
HTTP_METHODS =
{
  get: Net::HTTP::Get,
  post: Net::HTTP::Post,
  put: Net::HTTP::Put,
  patch: Net::HTTP::Patch,
  delete: Net::HTTP::Delete,
  head: Net::HTTP::Head,
  options: Net::HTTP::Options
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, headers: {}, logger: nil, open_timeout: 5, read_timeout: 10, write_timeout: 10, retry_attempts: 2, retry_interval: 0.05, middlewares: nil) ⇒ Http

Returns a new instance of Http.



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/clowk/http/client.rb', line 49

def initialize(base_url:, headers: {}, logger: nil, open_timeout: 5, read_timeout: 10, write_timeout: 10, retry_attempts: 2, retry_interval: 0.05, middlewares: nil)
  @base_url = base_url
  @headers = headers
  @logger = logger
  @open_timeout = open_timeout
  @read_timeout = read_timeout
  @write_timeout = write_timeout
  @retry_attempts = retry_attempts
  @retry_interval = retry_interval
  @middlewares = middlewares || [TimeoutMiddleware, RetryMiddleware, LoggerMiddleware]
end

Class Method Details

.delete(base_url:, path:, body: nil, headers: {}, logger: nil) ⇒ Object



37
38
39
# File 'lib/clowk/http/client.rb', line 37

def self.delete(base_url:, path:, body: nil, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).delete(path, body)
end

.get(base_url:, path:, headers: {}, logger: nil) ⇒ Object



21
22
23
# File 'lib/clowk/http/client.rb', line 21

def self.get(base_url:, path:, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).get(path)
end

.head(base_url:, path:, headers: {}, logger: nil) ⇒ Object



41
42
43
# File 'lib/clowk/http/client.rb', line 41

def self.head(base_url:, path:, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).head(path)
end

.options(base_url:, path:, headers: {}, logger: nil) ⇒ Object



45
46
47
# File 'lib/clowk/http/client.rb', line 45

def self.options(base_url:, path:, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).options(path)
end

.patch(base_url:, path:, body: nil, headers: {}, logger: nil) ⇒ Object



33
34
35
# File 'lib/clowk/http/client.rb', line 33

def self.patch(base_url:, path:, body: nil, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).patch(path, body)
end

.post(base_url:, path:, body: nil, headers: {}, logger: nil) ⇒ Object



25
26
27
# File 'lib/clowk/http/client.rb', line 25

def self.post(base_url:, path:, body: nil, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).post(path, body)
end

.put(base_url:, path:, body: nil, headers: {}, logger: nil) ⇒ Object



29
30
31
# File 'lib/clowk/http/client.rb', line 29

def self.put(base_url:, path:, body: nil, headers: {}, logger: nil)
  new(base_url:, headers:, logger:).put(path, body)
end

Instance Method Details

#delete(path, body = nil, headers: {}) ⇒ Object



77
78
79
# File 'lib/clowk/http/client.rb', line 77

def delete(path, body = nil, headers: {})
  request(:delete, path, body:, headers:)
end

#get(path, headers: {}) ⇒ Object



61
62
63
# File 'lib/clowk/http/client.rb', line 61

def get(path, headers: {})
  request(:get, path, headers:)
end

#head(path, headers: {}) ⇒ Object



81
82
83
# File 'lib/clowk/http/client.rb', line 81

def head(path, headers: {})
  request(:head, path, headers:)
end

#options(path, headers: {}) ⇒ Object



85
86
87
# File 'lib/clowk/http/client.rb', line 85

def options(path, headers: {})
  request(:options, path, headers:)
end

#patch(path, body = nil, headers: {}) ⇒ Object



73
74
75
# File 'lib/clowk/http/client.rb', line 73

def patch(path, body = nil, headers: {})
  request(:patch, path, body:, headers:)
end

#post(path, body = nil, headers: {}) ⇒ Object



65
66
67
# File 'lib/clowk/http/client.rb', line 65

def post(path, body = nil, headers: {})
  request(:post, path, body:, headers:)
end

#put(path, body = nil, headers: {}) ⇒ Object



69
70
71
# File 'lib/clowk/http/client.rb', line 69

def put(path, body = nil, headers: {})
  request(:put, path, body:, headers:)
end

#request(method, path, body: nil, headers: {}) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/clowk/http/client.rb', line 89

def request(method, path, body: nil, headers: {})
  env = {
    method: method.to_sym,
    uri: build_uri(path),
    body: body,
    headers: headers,
    open_timeout: open_timeout,
    read_timeout: read_timeout,
    write_timeout: write_timeout,
    retry_attempts: retry_attempts,
    retry_interval: retry_interval
  }

  build_stack.call(env)
end