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



191
192
193
# File 'lib/gems/client.rb', line 191

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



226
227
228
# File 'lib/gems/client.rb', line 226

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



288
289
290
# File 'lib/gems/client.rb', line 288

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



299
300
301
302
# File 'lib/gems/client.rb', line 299

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



161
162
163
164
165
166
167
168
169
# File 'lib/gems/client.rb', line 161

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



250
251
252
# File 'lib/gems/client.rb', line 250

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

#gems(user_handle = nil) ⇒ Array

List all gems that you own

Examples:

Gems.gems

Parameters:

  • user_handle (String) (defaults to: nil)

    The handle of a user.

Returns:

  • (Array)

Requires Authentication:

  • true



49
50
51
52
53
54
55
56
# File 'lib/gems/client.rb', line 49

def gems(user_handle=nil)
  response = if user_handle
    get("/api/v1/owners/#{user_handle}/gems.yaml")
  else
    get("/api/v1/gems.yaml")
  end
  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

Returns the 50 most recently updated gems

Examples:

Gem.just_updated

Parameters:

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

    A customizable set of options.

Returns:

  • (Array)

Requires Authentication:

  • false



273
274
275
276
# File 'lib/gems/client.rb', line 273

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

#latest(options = {}) ⇒ Array

Returns the 50 gems most recently added to RubyGems.org (for the first time)

Examples:

Gem.latest

Parameters:

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

    A customizable set of options.

Returns:

  • (Array)

Requires Authentication:

  • false



261
262
263
264
# File 'lib/gems/client.rb', line 261

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

#most_downloadedArray

Returns an array containing the top 50 downloaded gem versions of all time

Examples:

Gems.most_downloaded

Returns:

  • (Array)

Requires Authentication:

  • false



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

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

#most_downloaded_todayArray

Returns an array containing the top 50 downloaded gem versions for today

Examples:

Gems.most_downloaded_today

Returns:

  • (Array)

Requires Authentication:

  • false



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

def most_downloaded_today
  response = get("/api/v1/downloads/top.yaml")
  YAML.load(response)[:gems]
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



178
179
180
181
# File 'lib/gems/client.rb', line 178

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



65
66
67
# File 'lib/gems/client.rb', line 65

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



203
204
205
# File 'lib/gems/client.rb', line 203

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



238
239
240
# File 'lib/gems/client.rb', line 238

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

#reverse_dependencies(gem_name, options = {}) ⇒ Array

Returns an array of all the reverse dependencies to the given gem.

Examples:

Gems.reverse_dependencies 'money'

Parameters:

  • gem_name (String)

    The name of a gem

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

    A customizable set of options.

Returns:

  • (Array)

Requires Authentication:

  • false



312
313
314
315
# File 'lib/gems/client.rb', line 312

def reverse_dependencies(gem_name, options={})
  response = get("/api/v1/gems/#{gem_name}/reverse_dependencies.yaml", options)
  YAML.load(response)
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.1'

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



119
120
121
122
123
124
125
126
127
# File 'lib/gems/client.rb', line 119

def total_downloads(gem_name=nil, gem_version=nil)
  response = if gem_name
    gem_version ||= info(gem_name)['version']
    get("/api/v1/downloads/#{gem_name}-#{gem_version}.yaml")
  else
    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



94
95
96
97
# File 'lib/gems/client.rb', line 94

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



106
107
108
109
# File 'lib/gems/client.rb', line 106

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



213
214
215
216
# File 'lib/gems/client.rb', line 213

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



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

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