Class: Algo::Docker::Connection
- Inherits:
-
Object
- Object
- Algo::Docker::Connection
- Includes:
- Error
- Defined in:
- lib/algo/docker/connection.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
-
#initialize(url, opts) ⇒ Connection
constructor
Create a new Connection.
-
#request(*args, &block) ⇒ Object
Send a request to the server with the ‘.
- #to_s ⇒ Object
Constructor Details
#initialize(url, opts) ⇒ Connection
Create a new Connection. This method takes a url (String) and options (Hash). These are passed to Excon, so any options valid for Excon.new can be passed here.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/algo/docker/connection.rb', line 10 def initialize(url, opts) case when !url.is_a?(String) raise ArgumentError, "Expected a String, got: '#{url}'" when !opts.is_a?(Hash) raise ArgumentError, "Expected a Hash, got: '#{opts}'" else uri = URI.parse(url) if uri.scheme == "unix" @url, @options = 'unix:///', {:socket => uri.path}.merge(opts) elsif uri.scheme =~ /^(https?|tcp)$/ @url, @options = url, opts else @url, @options = "http://#{uri}", opts end end end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/algo/docker/connection.rb', line 5 def @options end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
5 6 7 |
# File 'lib/algo/docker/connection.rb', line 5 def url @url end |
Instance Method Details
#request(*args, &block) ⇒ Object
Send a request to the server with the ‘
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/algo/docker/connection.rb', line 36 def request(*args, &block) request = compile_request_params(*args, &block) # log_request(request) response = resource.request(request).body JSON.parse(response) unless response.blank? rescue Excon::Errors::BadRequest => ex raise ClientError, ex.response.body rescue Excon::Errors::Unauthorized => ex raise UnauthorizedError, ex.response.body rescue Excon::Errors::NotFound => ex raise NotFoundError, ex.response.body rescue Excon::Errors::Conflict => ex raise ConflictError, ex.response.body rescue Excon::Errors::InternalServerError => ex raise ServerError, ex.response.body rescue Excon::Errors::Timeout => ex raise TimeoutError, ex. end |
#to_s ⇒ Object
68 69 70 |
# File 'lib/algo/docker/connection.rb', line 68 def to_s "Docker::Connection { :url => #{url}, :options => #{} }" end |