class GeminaboxClient

Attributes

http_client[R]
url[R]

Public Class Methods

new(url) click to toggle source
# File lib/geminabox_client.rb, line 7
def initialize(url)
  extract_username_and_password_from_url!(url)
  @http_client = Geminabox.http_adapter
  @http_client.set_auth(url_for(:upload), @username, @password) 
end

Public Instance Methods

extract_username_and_password_from_url!(url) click to toggle source
# File lib/geminabox_client.rb, line 13
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 = {}) click to toggle source
# File lib/geminabox_client.rb, line 25
def push(gemfile, options = {})
  response = http_client.post(url_for(:upload), { 'file' => File.open(gemfile, "rb"), 'overwrite' => !!options[:overwrite] }, { 'Accept' => 'text/plain' })

  if response.status < 300
    response.body
  else
    raise GeminaboxClient::Error, "Error (#{response.status} received)\n\n#{response.body}"
  end
end
url_for(path) click to toggle source
# File lib/geminabox_client.rb, line 21
def url_for(path)
  url + path.to_s
end