reach-api 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ coverage
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Give guard growl notifications, if on OS X
4
+ if RUBY_PLATFORM =~ /darwin/i
5
+ gem "rb-fsevent", :require => false
6
+ gem "ruby_gntp", :require => false
7
+ end
8
+
9
+ gemspec
@@ -0,0 +1,19 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
11
+ watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
12
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch('config/routes.rb') { "spec/routing" }
15
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
16
+ # Capybara request specs
17
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
18
+ end
19
+
@@ -0,0 +1,11 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ task :default => :spec
4
+
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ desc "Open an irb session preloaded with this library"
9
+ task :console do
10
+ sh "irb -Ilib -rreach-api"
11
+ end
@@ -0,0 +1,25 @@
1
+ module Reach
2
+ class << self
3
+
4
+ # Alias for Reach::API.new
5
+ #
6
+ # Returns a Reach::API object
7
+ def new(options)
8
+ Reach::API.new(options)
9
+ end
10
+
11
+ # Delegate to Reach::API
12
+ def method_missing(method, *args, &block)
13
+ return super unless new.respond_to?(method)
14
+ new.send(method, *args, &block)
15
+ end
16
+
17
+ def respond_to?(method, include_private=false)
18
+ new.respond_to?(method, include_private) || super(method, include_private)
19
+ end
20
+ end
21
+
22
+ autoload :API, "reach/api"
23
+ autoload :Helper, "reach/helper"
24
+ autoload :Version, "reach/version"
25
+ end
@@ -0,0 +1,32 @@
1
+ require "httparty"
2
+ require "json"
3
+
4
+ module Reach
5
+ class API
6
+ include HTTParty
7
+
8
+ require "reach/api/game"
9
+ include Reach::API::Game
10
+
11
+ require "reach/api/player"
12
+ include Reach::API::Player
13
+
14
+ require "reach/api/file"
15
+ include Reach::API::File
16
+
17
+ # API endpoint
18
+ ENDPOINT = "http://www.bungie.net/api/reach/reachapijson.svc/"
19
+
20
+ # API key
21
+ attr_reader :key
22
+
23
+ # Public: Creates a new API object
24
+ #
25
+ # key - the API key used throughout the application
26
+ #
27
+ # Returns a new Reach::API object
28
+ def initialize(key)
29
+ @key = key
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,100 @@
1
+ module Reach
2
+ class API
3
+ module File
4
+
5
+ # Public: Fetches a listing of files in a player's
6
+ # file share
7
+ #
8
+ # gamertag - the player to get a file listing for
9
+ #
10
+ # Returns a hash
11
+ def get_player_file_share(gamertag)
12
+ gamertag = gamertag.gsub(' ', '%20')
13
+ uri = ENDPOINT + "file/share/#{key}/#{gamertag}"
14
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
15
+ Reach::Helper::convert_keys(data)
16
+ end
17
+
18
+ # Public: Fetches information on a specific file
19
+ #
20
+ # id - the ID of the file to get information on
21
+ #
22
+ # Returns a hash
23
+ def get_file_details(id)
24
+ uri = ENDPOINT + "file/details/#{key}/#{id}"
25
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
26
+ Reach::Helper::convert_keys(data)
27
+ end
28
+
29
+ # Public: Fetches a list of a player's recent screenshots
30
+ #
31
+ # gamertag - the specified player
32
+ #
33
+ # Returns a hash
34
+ def get_player_recent_screenshots(gamertag)
35
+ gamertag = gamertag.gsub(' ', '%20')
36
+ uri = ENDPOINT + "file/screenshots/#{key}/#{gamertag}"
37
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
38
+ Reach::Helper::convert_keys(data)
39
+ end
40
+
41
+ # Public: Fetches a list of file sets belonging
42
+ # to a player
43
+ #
44
+ # gamertag - the player to get a list of file sets for
45
+ #
46
+ # Returns a hash
47
+ def get_player_file_sets(gamertag)
48
+ gamertag = gamertag.gsub(' ', '%20')
49
+ uri = ENDPOINT + "file/sets/#{key}/#{gamertag}"
50
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
51
+ Reach::Helper::convert_keys(data)
52
+ end
53
+
54
+ # Public: Fetches a list of files in a player's
55
+ # file set
56
+ #
57
+ # gamertag - the specified player
58
+ # id - the fileset ID
59
+ #
60
+ # Returns a hash
61
+ def get_player_file_set_files(gamertag, id)
62
+ gamertag = gamertag.gsub(' ', '%20')
63
+ uri = ENDPOINT + "file/sets/files/#{key}/#{gamertag}/#{id}"
64
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
65
+ Reach::Helper::convert_keys(data)
66
+ end
67
+
68
+ # Public: Fetches a list of rendered videos
69
+ # belonging to a player
70
+ #
71
+ # gamertag - the specified player
72
+ # page - an optional page of results to fetch
73
+ #
74
+ # Returns a hash
75
+ def get_player_rendered_videos(gamertag, page = 0)
76
+ gamertag = gamertag.gsub(' ', '%20')
77
+ uri = ENDPOINT + "file/videos/#{key}/#{gamertag}/#{page}"
78
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
79
+ Reach::Helper::convert_keys(data)
80
+ end
81
+
82
+ # Public: Fetches a listing of files matching search criteria
83
+ #
84
+ # file_category - the type of file to search for
85
+ # map_filter - an map to limit results
86
+ # engine_filter - an game engine type to limit results
87
+ # date_filter - a required date filter
88
+ # sort_filter - a required sort parameter
89
+ # tags - a semicolon-delimited list of tags to search for
90
+ # page - the page of results to fetch
91
+ #
92
+ # Returns a hash containing search results
93
+ def reach_file_search(file_category, map_filter, engine_filter, date_filter, sort_filter, tags = '', page = 0)
94
+ uri = ENDPOINT + "file/search/#{key}/#{file_category}/#{map_filter}/#{engine_filter}/#{date_filter}/#{sort_filter}/#{page}?tags=#{tags}"
95
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
96
+ Reach::Helper::convert_keys(data)
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,43 @@
1
+ module Reach
2
+ class API
3
+ module Game
4
+
5
+ # Public: Fetches metadata dictionaries
6
+ #
7
+ # Returns a hash
8
+ def get_game_metadata
9
+ uri = ENDPOINT + "game/metadata/#{key}"
10
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
11
+ Reach::Helper::convert_keys(data)
12
+ end
13
+
14
+ # Public: Fetches detailed game information
15
+ #
16
+ # id - the ID of the game to get details for
17
+ #
18
+ # Returns a hash
19
+ def get_game_details(id)
20
+ uri = ENDPOINT + "game/details/#{key}/#{id}"
21
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
22
+ Reach::Helper::convert_keys(data)
23
+ end
24
+
25
+ # Public: Fetches current challenges
26
+ #
27
+ # gamertag - optional gamertag to get
28
+ # challenge progress for
29
+ #
30
+ # Returns a hash
31
+ def get_current_challenges(gamertag = nil)
32
+ if gamertag
33
+ gamertag = gamertag.gsub(' ', '%20')
34
+ uri = ENDPOINT + "game/metadata/#{key}/#{gamertag}"
35
+ else
36
+ uri = ENDPOINT + "game/metadata/#{key}"
37
+ end
38
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
39
+ Reach::Helper::convert_keys(data)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,59 @@
1
+ module Reach
2
+ class API
3
+ module Player
4
+
5
+ # Public: Fetches a player's list of games
6
+ # in reverse chronological order
7
+ #
8
+ # gamertag - player to fetch game history for
9
+ # variant - which game type to look for ("Unknown" returns all)
10
+ # page - which page of results to get (pages of 25)
11
+ #
12
+ # Returns a hash
13
+ def get_game_history(gamertag, variant = "Unknown", page = 0)
14
+ gamertag = gamertag.gsub(' ', '%20')
15
+ uri = ENDPOINT + "player/gamehistory/#{key}/#{gamertag}/#{variant}/#{page}"
16
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
17
+ Reach::Helper::convert_keys(data)
18
+ end
19
+
20
+ # Public: Fetches detailed player info, sorted
21
+ # by map
22
+ #
23
+ # gamertag - player to get information about
24
+ #
25
+ # Returns a hash
26
+ def get_player_details_with_stats_by_map(gamertag)
27
+ gamertag = gamertag.gsub(' ', '%20')
28
+ uri = ENDPOINT + "player/details/bymap/#{key}/#{gamertag}"
29
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
30
+ Reach::Helper::convert_keys(data)
31
+ end
32
+
33
+ # Public: Fetches detailed player info, sorted
34
+ # by playlist
35
+ #
36
+ # gamertag - player to get information about
37
+ #
38
+ # Returns a hash
39
+ def get_player_details_with_stats_by_playlist(gamertag)
40
+ gamertag = gamertag.gsub(' ', '%20')
41
+ uri = ENDPOINT + "player/details/byplaylist/#{key}/#{gamertag}"
42
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
43
+ Reach::Helper::convert_keys(data)
44
+ end
45
+
46
+ # Public: Fetches basic player information
47
+ #
48
+ # gamertag - player to get information about
49
+ #
50
+ # Returns a hash
51
+ def get_player_details_with_no_stats(gamertag)
52
+ gamertag = gamertag.gsub(' ', '%20')
53
+ uri = ENDPOINT + "player/details/nostats/#{key}/#{gamertag}"
54
+ data = JSON.parse(self.class.get(uri).body, :symbolize_names => true)
55
+ Reach::Helper::convert_keys(data)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,64 @@
1
+ module Reach
2
+ class Helper
3
+
4
+ # Public: Converts a string or key from CamelCase to snake_case
5
+ #
6
+ # value - the string or key to be converted
7
+ #
8
+ # Example:
9
+ #
10
+ # Reach::Helper::to_snake_case("CamelCase")
11
+ # #=> "camel_case"
12
+ #
13
+ # Reach::Helper::to_snake_case(:CamelCase)
14
+ # #=> :camel_case
15
+ #
16
+ # Returns the snake_cased string or key
17
+ def self.to_snake_case(value)
18
+ case value
19
+ when Symbol
20
+ lowercase(value.to_s).to_sym
21
+ when String
22
+ lowercase(value)
23
+ else
24
+ false
25
+ end
26
+ end
27
+
28
+ # Public: Converts a hash or array's keys from CamelCase to snake_case
29
+ #
30
+ # value - the hash or array to have it's keys converted
31
+ #
32
+ # Example:
33
+ #
34
+ # Reach::Helper::to_snake_case({:hashKey => "hashValue"})
35
+ # #=> {:hash_key => "hashValue"}
36
+ #
37
+ # Returns the hash/array with snake_case'd keys
38
+ def self.convert_keys(value)
39
+ case value
40
+ when Array
41
+ value.map(&method(:convert_keys))
42
+ when Hash
43
+ Hash[value.map { |k, v| [to_snake_case(k), convert_keys(v)] }]
44
+ else
45
+ value
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ # Private: Converts a string from CamelCase to snake_case
52
+ #
53
+ # string - the string to be converted
54
+ #
55
+ # Returns the snake_cased string
56
+ def self.lowercase(string)
57
+ string.gsub(/::/, '/').
58
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
59
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
60
+ tr("-", "_").
61
+ downcase
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,39 @@
1
+ module Reach
2
+ class Version
3
+
4
+ # The current major version number
5
+ #
6
+ # Returns an int
7
+ def self.major
8
+ 1
9
+ end
10
+
11
+ # The current minor version number
12
+ #
13
+ # Returns an int
14
+ def self.minor
15
+ 0
16
+ end
17
+
18
+ # The current patch version number
19
+ #
20
+ # Returns an int
21
+ def self.patch
22
+ 0
23
+ end
24
+
25
+ # The current pre version number
26
+ #
27
+ # Returns an int
28
+ def self.pre
29
+ nil
30
+ end
31
+
32
+ # Bundles up the version number into a string
33
+ #
34
+ # Returns the current version number as a string
35
+ def self.to_s
36
+ [major, minor, patch, pre].compact.join('.')
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path '../lib/reach/version', __FILE__
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "reach-api"
6
+ gem.version = Reach::Version.to_s
7
+ gem.authors = ["Andrew Stewart"]
8
+ gem.email = ["andrew@averagestudios.com"]
9
+ gem.homepage = "https://github.com/stewart/reach-api"
10
+ gem.summary = %q{A wrapper for the Halo Reach stats API}
11
+ gem.description = %q{A Ruby wrapper for Bungie's Halo Reach
12
+ stats API. Returns all API responses as
13
+ Ruby hashes.}
14
+
15
+ gem.rubyforge_project = "reach-api"
16
+
17
+ gem.files = `git ls-files`.split("\n")
18
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ gem.require_paths = ["lib"]
21
+
22
+ gem.add_dependency "httparty", "~> 0.8.1"
23
+ gem.add_dependency "json", "~> 1.6.5"
24
+
25
+ gem.add_development_dependency "guard-rspec", "~> 0.6.0"
26
+ gem.add_development_dependency "simplecov", "~> 0.5.4"
27
+ gem.add_development_dependency "rspec", "~> 2.8.0"
28
+ gem.add_development_dependency "guard", "~> 1.0.0"
29
+ gem.add_development_dependency "rake", "~> 0.9.2.2"
30
+ end
@@ -0,0 +1,31 @@
1
+ # reach-api
2
+
3
+ A Ruby wrapper for the Halo Reach stats API.
4
+
5
+ ## installation
6
+
7
+ [sudo] gem install reach-api
8
+
9
+ ## usage
10
+
11
+ You'll need a Bungie-provided [API key][key]:
12
+
13
+ require "reach-api"
14
+ reach = Reach.new("your_key")
15
+
16
+ For information on API methods, please refer to the [wiki][].
17
+
18
+ ## contributing
19
+
20
+ 1. Fork it
21
+ 2. Create a feature branch - `git checkout -b new_feature`
22
+ 3. Commit your changes - `git commit -m "Added new feature"`
23
+ 4. Push to GitHub - `git push origin new_feature`
24
+ 5. Create a new Pull Request
25
+
26
+ ## copyright
27
+
28
+ Copyright (c) 2012 Andrew Stewart. See `LICENSE` for more details
29
+
30
+ [key]: http://www.bungie.net/fanclub/statsapi/Group/GroupHome.aspx
31
+ [wiki]: http://www.haloreachapi.net/wiki/Main_Page
@@ -0,0 +1,12 @@
1
+ require "helper"
2
+
3
+ describe Reach::API do
4
+ it "should store an API key on creation" do
5
+ reach = Reach.new("example_api_key")
6
+ reach.key.should == "example_api_key"
7
+ end
8
+
9
+ it "should contain an API endpoint" do
10
+ Reach::API::ENDPOINT.should == "http://www.bungie.net/api/reach/reachapijson.svc/"
11
+ end
12
+ end
@@ -0,0 +1,41 @@
1
+ require "helper"
2
+
3
+ describe Reach::Helper do
4
+ context "converting strings/symbols from CamelCase to snake_case" do
5
+ it "shouldn't modify a snake_cased string" do
6
+ Reach::Helper::to_snake_case("snake_case").should == "snake_case"
7
+ end
8
+
9
+ it "should convert a basic string" do
10
+ Reach::Helper::to_snake_case("CamelCase").should == "camel_case"
11
+ end
12
+
13
+ it "should convert a string containing '::'" do
14
+ Reach::Helper::to_snake_case("Module::Class").should == "module/class"
15
+ end
16
+
17
+ it "should convert a string containing a hypen '-'" do
18
+ Reach::Helper::to_snake_case("Here-Say").should == "here_say"
19
+ end
20
+
21
+ it "should convert a symbol" do
22
+ Reach::Helper::to_snake_case(:CamelCase).should == :camel_case
23
+ end
24
+
25
+ it "should return false on anything else" do
26
+ Reach::Helper::to_snake_case({:hashKey => "hashvalue"}).should == false
27
+ end
28
+ end
29
+
30
+ context "converting hash/array keys from CamelCase to snake_case" do
31
+ it "should convert hash keys" do
32
+ hash = {:hashKey => "hashValue"}
33
+ Reach::Helper::convert_keys(hash).should == {:hash_key => "hashValue"}
34
+ end
35
+
36
+ it "should convert hash keys inside arrays" do
37
+ array = [{:hashKey => "hashValue"}]
38
+ Reach::Helper::convert_keys(array).should == [{:hash_key => "hashValue"}]
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,8 @@
1
+ require "helper"
2
+
3
+ describe Reach::Version do
4
+ it "should return a string" do
5
+ string = Reach::Version.to_s
6
+ string.should == "0.0.1"
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ require "simplecov"
2
+ SimpleCov.start
3
+
4
+ require "reach-api"
5
+
6
+ require "rspec"
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reach-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Stewart
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70145548992020 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70145548992020
25
+ - !ruby/object:Gem::Dependency
26
+ name: json
27
+ requirement: &70145548991220 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.6.5
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70145548991220
36
+ - !ruby/object:Gem::Dependency
37
+ name: guard-rspec
38
+ requirement: &70145548990280 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.6.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70145548990280
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &70145548989140 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.4
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70145548989140
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &70145548988620 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 2.8.0
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70145548988620
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: &70145548987980 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.0.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70145548987980
80
+ - !ruby/object:Gem::Dependency
81
+ name: rake
82
+ requirement: &70145548987520 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 0.9.2.2
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70145548987520
91
+ description: ! "A Ruby wrapper for Bungie's Halo Reach\n stats
92
+ API. Returns all API responses as\n Ruby hashes."
93
+ email:
94
+ - andrew@averagestudios.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - .gitignore
100
+ - .rvmrc
101
+ - .travis.yml
102
+ - Gemfile
103
+ - Guardfile
104
+ - Rakefile
105
+ - lib/reach-api.rb
106
+ - lib/reach/api.rb
107
+ - lib/reach/api/file.rb
108
+ - lib/reach/api/game.rb
109
+ - lib/reach/api/player.rb
110
+ - lib/reach/helper.rb
111
+ - lib/reach/version.rb
112
+ - reach-api.gemspec
113
+ - readme.md
114
+ - spec/cases/api_spec.rb
115
+ - spec/cases/helper_spec.rb
116
+ - spec/cases/version_spec.rb
117
+ - spec/helper.rb
118
+ homepage: https://github.com/stewart/reach-api
119
+ licenses: []
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project: reach-api
138
+ rubygems_version: 1.8.10
139
+ signing_key:
140
+ specification_version: 3
141
+ summary: A wrapper for the Halo Reach stats API
142
+ test_files:
143
+ - spec/cases/api_spec.rb
144
+ - spec/cases/helper_spec.rb
145
+ - spec/cases/version_spec.rb
146
+ - spec/helper.rb