Class: Gems::Client

Inherits:
Object
  • Object
show all
Includes:
Request
Defined in:
lib/gems/client.rb

Instance Method Summary collapse

Methods included from Request

#delete, #get, #post, #put

Constructor Details

#initialize(options = {}) ⇒ Client

Returns a new instance of Client.



11
12
13
14
15
16
# File 'lib/gems/client.rb', line 11

def initialize(options={})
  options = Gems.options.merge(options)
  Configuration::VALID_OPTIONS_KEYS.each do |key|
    send("#{key}=", options[key])
  end
end

Instance Method Details

#add_owner(gem_name, owner) ⇒ String

Add an owner to a RubyGem you own, giving that user permission to manage it

Examples:

Gems.add_owner 'gemcutter', '[email protected]'

Parameters:

  • gem_name (String)

    The name of a gem.

  • owner (String)

    The email address of the user you want to add.

Returns:

  • (String)

Requires Authentication:

  • true



160
161
162
# File 'lib/gems/client.rb', line 160

def add_owner(gem_name, owner)
  post("/api/v1/gems/#{gem_name}/owners", {:email => owner})
end

#add_web_hook(gem_name, url) ⇒ String

Create a webhook

Examples:

Gems.add_web_hook 'rails', 'http://example.com'

Parameters:

  • gem_name (String)

    The name of a gem. Specify "*" to add the hook to all your gems.

  • url (String)

    The URL of the web hook.

Returns:

  • (String)

Requires Authentication:

  • true



195
196
197
# File 'lib/gems/client.rb', line 195

def add_web_hook(gem_name, url)
  post("/api/v1/web_hooks", {:gem_name => gem_name, :url => url})
end

#api_keyString

Retrieve your API key using HTTP basic auth

Examples:

Gems.configure do |config|
  config.username = '[email protected]'
  config.password = 'schwwwwing'
end
Gems.api_key

Returns:

  • (String)

Requires Authentication:

  • true



125
126
127
# File 'lib/gems/client.rb', line 125

def api_key
  get('/api/v1/api_key')
end

#dependencies(*gems) ⇒ Array

Returns an array of hashes for all versions of given gems

Examples:

Gems.dependencies 'rails', 'thor'

Parameters:

  • gems (Array)

    A list of gem names

Returns:

  • (Array)

Requires Authentication:

  • false



110
111
112
113
# File 'lib/gems/client.rb', line 110

def dependencies(*gems)
  response = get('/api/v1/dependencies', {:gems => gems.join(',')})
  Marshal.load(response)
end

#downloads(gem_name, gem_version = nil, from = nil, to = Date.today) ⇒ Hash

Returns the number of downloads by day for a particular gem version

Examples:

Gems.downloads 'coulda', '0.6.3', Date.today - 30, Date.today

Parameters:

  • gem_name (String)

    The name of a gem.

  • gem_version (String) (defaults to: nil)

    The version of a gem.

  • from (Date) (defaults to: nil)

    Search start date.

  • to (Date) (defaults to: Date.today)

    Search end date.

Returns:

  • (Hash)

Requires Authentication:

  • false



93
94
95
96
97
98
99
100
101
# File 'lib/gems/client.rb', line 93

def downloads(gem_name, gem_version=nil, from=nil, to=Date.today)
  gem_version ||= info(gem_name)['version']
  response = if from
    get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads/search.yaml", {:from => from.to_s, :to => to.to_s})
  else
    get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads.yaml")
  end
  YAML.load(response)
end

#fire_web_hook(gem_name, url) ⇒ String

Test fire a webhook

Examples:

Gems.fire_web_hook 'rails', 'http://example.com'

Parameters:

  • gem_name (String)

    The name of a gem. Specify "*" to fire the hook for all your gems.

  • url (String)

    The URL of the web hook.

Returns:

  • (String)

Requires Authentication:

  • true



219
220
221
# File 'lib/gems/client.rb', line 219

def fire_web_hook(gem_name, url)
  post("/api/v1/web_hooks/fire", {:gem_name => gem_name, :url => url})
end

#gemsArray

List all gems that you own

Examples:

Gems.gems

Returns:

  • (Array)

Requires Authentication:

  • true



135
136
137
138
# File 'lib/gems/client.rb', line 135

def gems
  response = get("/api/v1/gems.yaml")
  YAML.load(response)
end

#info(gem_name) ⇒ Hash

Returns some basic information about the given gem

Examples:

Gems.info 'rails'

Parameters:

  • gem_name (String)

    The name of a gem.

Returns:

  • (Hash)

Requires Authentication:

  • false



25
26
27
28
# File 'lib/gems/client.rb', line 25

def info(gem_name)
  response = get("/api/v1/gems/#{gem_name}.yaml")
  YAML.load(response)
end

#just_updated(options = {}) ⇒ Array

Pulls the 50 most recently updated gems. Returns an array of the XML or JSON representation of the gem versions

Examples:

Gem.just_updated

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options.

Returns:

  • (Array)

Requires Authentication:

  • false



283
284
285
286
# File 'lib/gems/client.rb', line 283

def just_updated(options={})
  response = get("/api/v1/activity/just_updated.yaml", options)
  YAML.load(response)
end

#latest(options = {}) ⇒ Array

Pulls the 50 gems most recently added to RubyGems.org (for the first time). Returns an array of the XML or JSON representation of the gems

Examples:

Gem.latest

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options.

Returns:

  • (Array)

Requires Authentication:

  • false



271
272
273
274
# File 'lib/gems/client.rb', line 271

def latest(options={})
  response = get("/api/v1/activity/latest.yaml", options)
  YAML.load(response)
end

#most_downloadedHash

Returns an array of the most downloaded gem versions of all time

Examples:

Gems.most_downloaded

Returns:

  • (Hash)

Requires Authentication:

  • false



78
79
80
81
# File 'lib/gems/client.rb', line 78

def most_downloaded
  response = get("/api/v1/downloads/all.yaml")
  YAML.load(response)
end

#owners(gem_name) ⇒ Array

View all owners of a gem that you own

Examples:

Gems.owners 'gemcutter'

Parameters:

  • gem_name (String)

    The name of a gem.

Returns:

  • (Array)

Requires Authentication:

  • true



147
148
149
150
# File 'lib/gems/client.rb', line 147

def owners(gem_name)
  response = get("/api/v1/gems/#{gem_name}/owners.yaml")
  YAML.load(response)
end

#push(gem) ⇒ String

Submit a gem to RubyGems.org

Examples:

Gems.push File.new 'pkg/gemcutter-0.2.1.gem'

Parameters:

  • gem (File)

    A built gem.

Returns:

  • (String)

Requires Authentication:

  • true



230
231
232
# File 'lib/gems/client.rb', line 230

def push(gem)
  post("/api/v1/gems", gem.read, 'application/octet-stream')
end

#remove_owner(gem_name, owner) ⇒ String

Remove a user's permission to manage a RubyGem you own

Examples:

Gems.remove_owner 'gemcutter', '[email protected]'

Parameters:

  • gem_name (String)

    The name of a gem.

  • owner (String)

    The email address of the user you want to remove.

Returns:

  • (String)

Requires Authentication:

  • true



172
173
174
# File 'lib/gems/client.rb', line 172

def remove_owner(gem_name, owner)
  delete("/api/v1/gems/#{gem_name}/owners", {:email => owner})
end

#remove_web_hook(gem_name, url) ⇒ String

Remove a webhook

Examples:

Gems.remove_web_hook 'rails', 'http://example.com'

Parameters:

  • gem_name (String)

    The name of a gem. Specify "*" to remove the hook from all your gems.

  • url (String)

    The URL of the web hook.

Returns:

  • (String)

Requires Authentication:

  • true



207
208
209
# File 'lib/gems/client.rb', line 207

def remove_web_hook(gem_name, url)
  delete("/api/v1/web_hooks/remove", {:gem_name => gem_name, :url => url})
end

#search(query) ⇒ Array<Hash>

Returns an array of active gems that match the query

Examples:

Gems.search 'cucumber'

Parameters:

  • query (String)

    A term to search for.

Returns:

  • (Array<Hash>)

Requires Authentication:

  • false



37
38
39
40
# File 'lib/gems/client.rb', line 37

def search(query)
  response = get("/api/v1/search.yaml", {:query => query})
  YAML.load(response)
end

#total_downloads(gem_name = nil, gem_version = nil) ⇒ Hash

Returns the total number of downloads for a particular gem

Examples:

Gems.total_downloads 'rails_admin', '0.0.0'

Parameters:

  • gem_name (String) (defaults to: nil)

    The name of a gem.

  • gem_version (String) (defaults to: nil)

    The version of a gem.

Returns:

  • (Hash)

Requires Authentication:

  • false



62
63
64
65
66
67
68
69
70
# File 'lib/gems/client.rb', line 62

def total_downloads(gem_name=nil, gem_version=nil)
  if gem_name
    gem_version ||= info(gem_name)['version']
    response = get("/api/v1/downloads/#{gem_name}-#{gem_version}.yaml")
  else
    response = get("/api/v1/downloads.yaml")
  end
  YAML.load(response)
end

#unyank(gem_name, gem_version = nil, options = {}) ⇒ String

Update a previously yanked gem back into RubyGems.org's index

Examples:

Gems.unyank "gemcutter", "0.2.1", {:platform => "x86-darwin-10"}

Parameters:

  • gem_name (String)

    The name of a gem.

  • gem_version (String) (defaults to: nil)

    The version of a gem.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :platform (String)

Returns:

  • (String)

Requires Authentication:

  • true



259
260
261
262
# File 'lib/gems/client.rb', line 259

def unyank(gem_name, gem_version=nil, options={})
  gem_version ||= info(gem_name)['version']
  put("/api/v1/gems/unyank", options.merge(:gem_name => gem_name, :version => gem_version))
end

#versions(gem_name) ⇒ Hash

Returns an array of gem version details

Examples:

Gems.versions 'coulda'

Parameters:

  • gem_name (String)

    The name of a gem.

Returns:

  • (Hash)

Requires Authentication:

  • false



49
50
51
52
# File 'lib/gems/client.rb', line 49

def versions(gem_name)
  response = get("/api/v1/versions/#{gem_name}.yaml")
  YAML.load(response)
end

#web_hooksHash

List the webhooks registered under your account

Examples:

Gems.web_hooks

Returns:

  • (Hash)

Requires Authentication:

  • true



182
183
184
185
# File 'lib/gems/client.rb', line 182

def web_hooks
  response = get("/api/v1/web_hooks.yaml")
  YAML.load(response)
end

#yank(gem_name, gem_version = nil, options = {}) ⇒ String

Remove a gem from RubyGems.org's index

Examples:

Gems.yank "gemcutter", "0.2.1", {:platform => "x86-darwin-10"}

Parameters:

  • gem_name (String)

    The name of a gem.

  • gem_version (String) (defaults to: nil)

    The version of a gem.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :platform (String)

Returns:

  • (String)

Requires Authentication:

  • true



244
245
246
247
# File 'lib/gems/client.rb', line 244

def yank(gem_name, gem_version=nil, options={})
  gem_version ||= info(gem_name)['version']
  delete("/api/v1/gems/yank", options.merge(:gem_name => gem_name, :version => gem_version))
end