Module: HttpResource
- Defined in:
- lib/http_resource.rb,
lib/http_resource/auth.rb,
lib/http_resource/client.rb,
lib/http_resource/errors.rb,
lib/http_resource/version.rb,
lib/http_resource/resource.rb,
lib/http_resource/auth/basic.rb,
lib/http_resource/auth/bearer.rb,
lib/http_resource/auth/header.rb,
lib/http_resource/value_object.rb,
lib/http_resource/configuration.rb
Overview
A small, zero-dependency framework for building typed REST-resource clients on top of Net::HTTP. Bring a base_url + an auth strategy; get a Net::HTTP transport with a typed error hierarchy, bang/non-bang resources, per-call timeouts and escape-safe URL building.
Build a client directly:
client = HttpResource::Client.new(base_url: "https://api.example.org",
auth: HttpResource::Auth.bearer(token))
…or configure a process-wide default:
HttpResource.configure do |c|
c.base_url = ENV.fetch("API_URL")
c.auth = HttpResource::Auth.basic(ENV.fetch("API_USER"), ENV.fetch("API_PASS"))
end
HttpResource.client.get(["api", "ping"])
Defined Under Namespace
Modules: Auth, Expected, ValueObject Classes: ApiError, AuthError, Client, ClientError, Configuration, ConfigurationError, ConnectionError, Error, NotFoundError, RedirectError, Resource, ServerError, TimeoutError, TransportError, ValidationError
Constant Summary collapse
- VERSION =
"0.2.0"
Class Method Summary collapse
-
.build_client(base_url: configuration.base_url, auth: configuration.auth, open_timeout: configuration.open_timeout, read_timeout: configuration.read_timeout) ⇒ Object
Build a fresh, independent client.
-
.client ⇒ Object
The memoized default client, built from ‘configuration`.
- .configuration ⇒ Object
-
.configure {|configuration| ... } ⇒ Object
Configure the process-wide default client, then (re)build it.
-
.reset! ⇒ Object
Drop the memoized config + client (mainly for tests / reconfiguration).
Class Method Details
.build_client(base_url: configuration.base_url, auth: configuration.auth, open_timeout: configuration.open_timeout, read_timeout: configuration.read_timeout) ⇒ Object
Build a fresh, independent client. Defaults to the configured base_url/auth, but every option can be overridden per call — handy for talking to more than one host without a global default.
49 50 51 52 |
# File 'lib/http_resource.rb', line 49 def build_client(base_url: configuration.base_url, auth: configuration.auth, open_timeout: configuration.open_timeout, read_timeout: configuration.read_timeout) Client.new(base_url:, auth:, open_timeout:, read_timeout:) end |
.client ⇒ Object
The memoized default client, built from ‘configuration`.
42 43 44 |
# File 'lib/http_resource.rb', line 42 def client @client ||= build_client end |
.configuration ⇒ Object
37 38 39 |
# File 'lib/http_resource.rb', line 37 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
Configure the process-wide default client, then (re)build it.
31 32 33 34 35 |
# File 'lib/http_resource.rb', line 31 def configure yield configuration @client = build_client configuration end |
.reset! ⇒ Object
Drop the memoized config + client (mainly for tests / reconfiguration).
55 56 57 58 |
# File 'lib/http_resource.rb', line 55 def reset! @configuration = nil @client = nil end |