Class: GeminaboxClient
- Inherits:
-
Object
- Object
- GeminaboxClient
- Defined in:
- lib/geminabox_client.rb
Defined Under Namespace
Modules: GemLocator Classes: Error
Instance Attribute Summary collapse
-
#http_client ⇒ Object
readonly
Returns the value of attribute http_client.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
- #extract_username_and_password_from_url!(url) ⇒ Object
-
#initialize(url) ⇒ GeminaboxClient
constructor
A new instance of GeminaboxClient.
- #push(gemfile, options = {}) ⇒ Object
- #url_for(path) ⇒ Object
Constructor Details
#initialize(url) ⇒ GeminaboxClient
Returns a new instance of GeminaboxClient.
7 8 9 10 11 12 13 14 15 |
# File 'lib/geminabox_client.rb', line 7 def initialize(url) extract_username_and_password_from_url!(url) @http_client = HTTPClient.new @http_client.set_auth(url_for(:upload), @username, @password) if @username or @password @http_client.www_auth.basic_auth.challenge(url_for(:upload)) # Workaround: https://github.com/nahi/httpclient/issues/63 @http_client.ssl_config.set_default_paths @http_client.send_timeout = 0 @http_client.receive_timeout = 0 end |
Instance Attribute Details
#http_client ⇒ Object (readonly)
Returns the value of attribute http_client.
5 6 7 |
# File 'lib/geminabox_client.rb', line 5 def http_client @http_client end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
5 6 7 |
# File 'lib/geminabox_client.rb', line 5 def url @url end |
Instance Method Details
#extract_username_and_password_from_url!(url) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/geminabox_client.rb', line 17 def extract_username_and_password_from_url!(url) uri = URI.parse(url.to_s) @username, @password = uri.user, uri.password uri.user = uri.password = nil uri.path = uri.path + "/" unless uri.path.end_with?("/") @url = uri.to_s end |
#push(gemfile, options = {}) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/geminabox_client.rb', line 29 def push(gemfile, = {}) response = http_client.post(url_for(:upload), { 'file' => File.open(gemfile, "rb"), 'overwrite' => !![:overwrite] }, { 'Accept' => 'text/plain' }) if response.status < 300 response.body else raise GeminaboxClient::Error, "Error (#{response.code} received)\n\n#{response.body}" end end |
#url_for(path) ⇒ Object
25 26 27 |
# File 'lib/geminabox_client.rb', line 25 def url_for(path) url + path.to_s end |