Skip to content

Commit

Permalink
Merge pull request #19 from whatasunnyday/json
Browse files Browse the repository at this point in the history
Use JSON instead of YAML API
  • Loading branch information
sferik committed Feb 19, 2014
2 parents c7bb20b + 39d8f89 commit 78137af
Show file tree
Hide file tree
Showing 32 changed files with 113 additions and 5,746 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Expand Up @@ -16,7 +16,7 @@ end
group :test do
gem 'backports'
gem 'coveralls', :require => false
gem 'json', :platforms => [:rbx, :ruby_19]
gem 'json', :platforms => [:rbx, :ruby_19, :ruby_18]
gem 'mime-types', '~> 1.25', :platforms => [:jruby, :ruby_18]
gem 'rubocop', '>= 0.16', :platforms => [:ruby_19, :ruby_20, :ruby_21]
gem 'rspec', '>= 2.11'
Expand Down
1 change: 1 addition & 0 deletions gems.gemspec
Expand Up @@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
spec.summary = spec.description
spec.test_files = Dir.glob('spec/**/*')
spec.version = Gems::VERSION
spec.add_dependency 'json', '~> 1.8'
end
54 changes: 27 additions & 27 deletions lib/gems/client.rb
@@ -1,7 +1,7 @@
require 'date'
require 'gems/configuration'
require 'gems/request'
require 'yaml'
require 'json'

module Gems
class Client
Expand All @@ -23,8 +23,8 @@ def initialize(options = {})
# @example
# Gems.info 'rails'
def info(gem_name)
response = get("/api/v1/gems/#{gem_name}.yaml")
YAML.load(response)
response = get("/api/v1/gems/#{gem_name}.json")
JSON.parse(response)
end

# Returns an array of active gems that match the query
Expand All @@ -35,8 +35,8 @@ def info(gem_name)
# @example
# Gems.search 'cucumber'
def search(query)
response = get('/api/v1/search.yaml', :query => query)
YAML.load(response)
response = get('/api/v1/search.json', :query => query)
JSON.parse(response)
end

# List all gems that you own
Expand All @@ -47,8 +47,8 @@ def search(query)
# @example
# Gems.gems
def gems(user_handle = nil)
response = user_handle ? get("/api/v1/owners/#{user_handle}/gems.yaml") : get('/api/v1/gems.yaml')
YAML.load(response)
response = user_handle ? get("/api/v1/owners/#{user_handle}/gems.json") : get('/api/v1/gems.json')
JSON.parse(response)
end

# Submit a gem to RubyGems.org or another host
Expand Down Expand Up @@ -101,8 +101,8 @@ def unyank(gem_name, gem_version = nil, options = {})
# @example
# Gems.versions 'coulda'
def versions(gem_name)
response = get("/api/v1/versions/#{gem_name}.yaml")
YAML.load(response)
response = get("/api/v1/versions/#{gem_name}.json")
JSON.parse(response)
end

# Returns the total number of downloads for a particular gem
Expand All @@ -114,8 +114,8 @@ def versions(gem_name)
# @example
# Gems.total_downloads 'rails_admin', '0.0.1'
def total_downloads(gem_name = nil, gem_version = nil)
response = gem_name ? get("/api/v1/downloads/#{gem_name}-#{gem_version || info(gem_name)['version']}.yaml") : get('/api/v1/downloads.yaml')
YAML.load(response)
response = gem_name ? get("/api/v1/downloads/#{gem_name}-#{gem_version || info(gem_name)['version']}.json") : get('/api/v1/downloads.json')
JSON.parse(response, :symbolize_names => true)
end

# Returns an array containing the top 50 downloaded gem versions for today
Expand All @@ -125,8 +125,8 @@ def total_downloads(gem_name = nil, gem_version = nil)
# @example
# Gems.most_downloaded_today
def most_downloaded_today
response = get('/api/v1/downloads/top.yaml')
YAML.load(response)[:gems]
response = get('/api/v1/downloads/top.json')
JSON.parse(response)['gems']
end

# Returns an array containing the top 50 downloaded gem versions of all time
Expand All @@ -136,8 +136,8 @@ def most_downloaded_today
# @example
# Gems.most_downloaded
def most_downloaded
response = get('/api/v1/downloads/all.yaml')
YAML.load(response)[:gems]
response = get('/api/v1/downloads/all.json')
JSON.parse(response)['gems']
end

# Returns the number of downloads by day for a particular gem version
Expand All @@ -152,8 +152,8 @@ def most_downloaded
# Gems.downloads 'coulda', '0.6.3', Date.today - 30, Date.today
def downloads(gem_name, gem_version = nil, from = nil, to = Date.today)
gem_version ||= info(gem_name)['version']
response = from ? get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads/search.yaml", :from => from.to_s, :to => to.to_s) : get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads.yaml")
YAML.load(response)
response = from ? get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads/search.json", :from => from.to_s, :to => to.to_s) : get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads.json")
JSON.parse(response)
end

# View all owners of a gem that you own
Expand All @@ -164,8 +164,8 @@ def downloads(gem_name, gem_version = nil, from = nil, to = Date.today)
# @example
# Gems.owners 'gemcutter'
def owners(gem_name)
response = get("/api/v1/gems/#{gem_name}/owners.yaml")
YAML.load(response)
response = get("/api/v1/gems/#{gem_name}/owners.json")
JSON.parse(response)
end

# Add an owner to a RubyGem you own, giving that user permission to manage it
Expand Down Expand Up @@ -199,8 +199,8 @@ def remove_owner(gem_name, owner)
# @example
# Gems.web_hooks
def web_hooks
response = get('/api/v1/web_hooks.yaml')
YAML.load(response)
response = get('/api/v1/web_hooks.json')
JSON.parse(response)
end

# Create a webhook
Expand Down Expand Up @@ -247,8 +247,8 @@ def fire_web_hook(gem_name, url)
# @example
# Gem.latest
def latest(options = {})
response = get('/api/v1/activity/latest.yaml', options)
YAML.load(response)
response = get('/api/v1/activity/latest.json', options)
JSON.parse(response)
end

# Returns the 50 most recently updated gems
Expand All @@ -259,8 +259,8 @@ def latest(options = {})
# @example
# Gem.just_updated
def just_updated(options = {})
response = get('/api/v1/activity/just_updated.yaml', options)
YAML.load(response)
response = get('/api/v1/activity/just_updated.json', options)
JSON.parse(response)
end

# Retrieve your API key using HTTP basic auth
Expand Down Expand Up @@ -298,8 +298,8 @@ def dependencies(*gems)
# @example
# Gems.reverse_dependencies 'money'
def reverse_dependencies(gem_name, options = {})
response = get("/api/v1/gems/#{gem_name}/reverse_dependencies.yaml", options)
YAML.load(response)
response = get("/api/v1/gems/#{gem_name}/reverse_dependencies.json", options)
JSON.parse(response)
end
end
end
1 change: 1 addition & 0 deletions spec/fixtures/downloads.json
@@ -0,0 +1 @@
{"2011-04-28":12,"2011-04-29":6,"2011-04-30":7,"2011-05-01":5,"2011-05-02":9,"2011-05-03":11,"2011-05-04":6,"2011-05-05":6,"2011-05-06":4,"2011-05-07":5,"2011-05-08":8,"2011-05-09":11,"2011-05-10":5,"2011-05-11":2,"2011-05-12":1,"2011-05-13":3,"2011-05-14":8,"2011-05-15":10,"2011-05-16":7,"2011-05-17":4,"2011-05-18":2,"2011-05-19":5,"2011-05-20":2,"2011-05-21":5,"2011-05-22":7,"2011-05-23":8,"2011-05-24":11,"2011-05-25":9,"2011-05-26":3,"2011-05-27":0,"2011-05-28":2,"2011-05-29":2,"2011-05-30":7,"2011-05-31":2,"2011-06-01":7,"2011-06-02":4,"2011-06-03":5,"2011-06-04":1,"2011-06-05":25,"2011-06-06":6,"2011-06-07":9,"2011-06-08":13,"2011-06-09":1,"2011-06-10":4,"2011-06-11":5,"2011-06-12":10,"2011-06-13":3,"2011-06-14":10,"2011-06-15":10,"2011-06-16":27,"2011-06-17":4,"2011-06-18":0,"2011-06-19":8,"2011-06-20":14,"2011-06-21":23,"2011-06-22":8,"2011-06-23":0,"2011-06-24":1,"2011-06-25":0,"2011-06-26":2,"2011-06-27":7,"2011-06-28":6,"2011-06-29":2,"2011-06-30":4,"2011-07-01":21,"2011-07-02":8,"2011-07-03":8,"2011-07-04":3,"2011-07-05":10,"2011-07-06":7,"2011-07-07":6,"2011-07-08":5,"2011-07-09":4,"2011-07-10":2,"2011-07-11":10,"2011-07-12":2,"2011-07-13":5,"2011-07-14":4,"2011-07-15":1,"2011-07-16":0,"2011-07-17":0,"2011-07-18":0,"2011-07-19":0,"2011-07-20":0,"2011-07-21":31,"2011-07-22":2,"2011-07-23":1,"2011-07-24":2,"2011-07-25":0,"2011-07-26":0}
1 change: 1 addition & 0 deletions spec/fixtures/gems.json

Large diffs are not rendered by default.

0 comments on commit 78137af

Please sign in to comment.