Class: Travis::Client::Session
- Inherits:
-
Object
- Object
- Travis::Client::Session
- Defined in:
- lib/travis/client/session.rb
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#request_headers ⇒ Object
readonly
Returns the value of attribute request_headers.
-
#response_cache ⇒ Object
readonly
Returns the value of attribute response_cache.
Instance Method Summary collapse
- #call(resource_type, action_name, variables = {}) ⇒ Object
- #define_constants(container) ⇒ Object
- #error_types ⇒ Object
- #fetch(link) ⇒ Object
-
#initialize(connection, access_token: nil, request_headers: {}) ⇒ Session
constructor
A new instance of Session.
- #inspect ⇒ Object
- #request(method, uri, params = {}) ⇒ Object
- #resource_types ⇒ Object
- #set_default_types ⇒ Object
Constructor Details
#initialize(connection, access_token: nil, request_headers: {}) ⇒ Session
Returns a new instance of Session.
9 10 11 12 13 14 15 |
# File 'lib/travis/client/session.rb', line 9 def initialize(connection, access_token: nil, request_headers: {}) @connection = connection @http_connections = {} @response_cache = {} @request_headers = connection.request_headers.merge(request_headers) @request_headers['Authorization'] = "token #{access_token}" if access_token end |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
7 8 9 |
# File 'lib/travis/client/session.rb', line 7 def connection @connection end |
#request_headers ⇒ Object (readonly)
Returns the value of attribute request_headers.
7 8 9 |
# File 'lib/travis/client/session.rb', line 7 def request_headers @request_headers end |
#response_cache ⇒ Object (readonly)
Returns the value of attribute response_cache.
7 8 9 |
# File 'lib/travis/client/session.rb', line 7 def response_cache @response_cache end |
Instance Method Details
#call(resource_type, action_name, variables = {}) ⇒ Object
31 32 33 |
# File 'lib/travis/client/session.rb', line 31 def call(resource_type, action_name, variables = {}) action(resource_type, action_name).call(self, variables) end |
#define_constants(container) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/travis/client/session.rb', line 49 def define_constants(container) set_default_types error_types.merge(resource_types).each do |key, factory| constant = key.split('_').map(&:capitalize).join container.const_set(constant, factory) unless container.const_defined?(constant, false) end container.extend connection.mixin container end |
#error_types ⇒ Object
35 36 37 38 |
# File 'lib/travis/client/session.rb', line 35 def error_types # we currently don't allow/need to override error types connection.error_types end |
#fetch(link) ⇒ Object
59 60 61 |
# File 'lib/travis/client/session.rb', line 59 def fetch(link) response_cache.fetch(link) { request('GET', link) } end |
#inspect ⇒ Object
17 18 19 |
# File 'lib/travis/client/session.rb', line 17 def inspect "#<#{Session}>" end |
#request(method, uri, params = {}) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/travis/client/session.rb', line 21 def request(method, uri, params = {}) method = method.to_s.upcase = {} [:json] = params if params.any? uri = Addressable::URI.parse(uri) unless uri.is_a? Addressable::URI response = connection.notify(method, uri, params) { http_connection(uri).request(method, uri, ) } payload = JSON.load(response.body) wrap(payload, uri) end |
#resource_types ⇒ Object
40 41 42 43 |
# File 'lib/travis/client/session.rb', line 40 def resource_types return @resource_types if defined? @resource_types and @resource_types connection.resource_types end |
#set_default_types ⇒ Object
45 46 47 |
# File 'lib/travis/client/session.rb', line 45 def set_default_types @resource_types ||= connection.resource_types.map { |k,v| [k,v.for_session(self)] }.to_h end |