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

See Also:



31
32
33
34
# File 'lib/rom/http/gateway.rb', line 31

def initialize(config)
  @datasets = ThreadSafe::Cache.new
  @config = config
end

Instance Method Details

#[](name) ⇒ Dataset

Retrieve dataset with the given name



43
44
45
# File 'lib/rom/http/gateway.rb', line 43

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

#dataset(name) ⇒ Dataset

Build dataset with the given name



54
55
56
57
# File 'lib/rom/http/gateway.rb', line 54

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



64
65
66
# File 'lib/rom/http/gateway.rb', line 64

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