Class: ROM::HTTP::Gateway

Inherits:
Gateway
  • Object
show all
Defined in:
lib/rom/http/gateway.rb

Overview

HTTP gateway

Examples:

config = {
  uri: 'http://jsonplaceholder.typicode.com',
  headers: { Accept: 'applicaiton/json' }
}

gateway = ROM::HTTP::Gateway.new(config)
users   = gateway.dataset(:users)

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Gateway

HTTP gateway interface

Parameters:

  • config (Hash)

    configuration options @option config [String] :uri The base API for the HTTP service @option config [Hash] :headers Default request headers

See Also:



33
34
35
36
# File 'lib/rom/http/gateway.rb', line 33

def initialize(config)
  @datasets = Concurrent::Map.new
  @config = config
end

Instance Method Details

#[](name) ⇒ Dataset

Retrieve dataset with the given name

Parameters:

  • name (String)

    dataaset name

Returns:



45
46
47
# File 'lib/rom/http/gateway.rb', line 45

def [](name)
  datasets.fetch(name)
end

#dataset(name) ⇒ Dataset

Build dataset with the given name

Parameters:

  • name (String)

    dataaset name

Returns:



56
57
58
59
# File 'lib/rom/http/gateway.rb', line 56

def dataset(name)
  dataset_klass = namespace.const_defined?(:Dataset) ? namespace.const_get(:Dataset) : Dataset
  datasets[name] = dataset_klass.new(config.merge(name: name))
end

#dataset?(name) ⇒ Boolean

Check if dataset exists

Parameters:

  • name (String)

    dataset name

Returns:

  • (Boolean)


66
67
68
# File 'lib/rom/http/gateway.rb', line 66

def dataset?(name)
  datasets.key?(name)
end