Class: Restify::Context
- Inherits:
-
Object
- Object
- Restify::Context
- Defined in:
- lib/restify/context.rb
Overview
A resource context.
The resource context contains relations and the effective response URI. The context is used to resolve relative URI and follow links.
Instance Attribute Summary collapse
-
#options ⇒ Hash
readonly
Options passed to this context.
-
#uri ⇒ Addressable::URI
readonly
Effective context URI.
Instance Method Summary collapse
-
#encode_with(coder) ⇒ Object
rubocop:enable all.
- #inherit(uri, **kwargs) ⇒ Object
- #init_with(coder) ⇒ Object
-
#initialize(uri, **kwargs) ⇒ Context
constructor
A new instance of Context.
- #join(uri) ⇒ Object
- #marshal_dump ⇒ Object
- #marshal_load(dump) ⇒ Object
- #process(response) ⇒ Object
-
#request(method, uri, data: nil, headers: {}, **kwargs) ⇒ Object
rubocop:disable Metrics/MethodLength.
Constructor Details
#initialize(uri, **kwargs) ⇒ Context
Returns a new instance of Context.
23 24 25 26 27 28 29 30 31 |
# File 'lib/restify/context.rb', line 23 def initialize(uri, **kwargs) @uri = if uri.is_a?(Addressable::URI) uri else @uri = Addressable::URI.parse(uri.to_s) end @options = kwargs end |
Instance Attribute Details
#options ⇒ Hash (readonly)
Options passed to this context.
21 22 23 |
# File 'lib/restify/context.rb', line 21 def @options end |
#uri ⇒ Addressable::URI (readonly)
Effective context URI.
15 16 17 |
# File 'lib/restify/context.rb', line 15 def uri @uri end |
Instance Method Details
#encode_with(coder) ⇒ Object
rubocop:enable all
71 72 73 |
# File 'lib/restify/context.rb', line 71 def encode_with(coder) coder.map = marshal_dump end |
#inherit(uri, **kwargs) ⇒ Object
37 38 39 40 |
# File 'lib/restify/context.rb', line 37 def inherit(uri, **kwargs) uri ||= self.uri Context.new(uri, **kwargs, **) end |
#init_with(coder) ⇒ Object
75 76 77 |
# File 'lib/restify/context.rb', line 75 def init_with(coder) marshal_load(coder.map) end |
#join(uri) ⇒ Object
33 34 35 |
# File 'lib/restify/context.rb', line 33 def join(uri) self.uri.join uri end |
#marshal_dump ⇒ Object
79 80 81 82 83 84 |
# File 'lib/restify/context.rb', line 79 def marshal_dump { uri: uri.to_s, headers: default_headers } end |
#marshal_load(dump) ⇒ Object
86 87 88 89 |
# File 'lib/restify/context.rb', line 86 def marshal_load(dump) initialize dump.delete(:uri), \ headers: dump.fetch(:headers) end |
#process(response) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/restify/context.rb', line 42 def process(response) context = inherit response.uri processor = Restify::PROCESSORS.find {|p| p.accept? response } processor ||= Restify::Processors::Base processor.new(context, response).resource end |
#request(method, uri, data: nil, headers: {}, **kwargs) ⇒ Object
rubocop:disable Metrics/MethodLength
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/restify/context.rb', line 51 def request(method, uri, data: nil, headers: {}, **kwargs) request = Request.new( headers: default_headers.merge(headers), **kwargs, method: method, uri: join(uri), data: data ) ret = cache.call(request) {|req| adapter.call(req) } ret.then do |response| if response.errored? raise ResponseError.from_code(response) else process response end end end |