phishin-client 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/Rakefile +2 -0
- data/lib/phishin/api/response.rb +35 -0
- data/lib/phishin/api/v1.rb +121 -0
- data/lib/phishin/api.rb +4 -0
- data/lib/phishin/client/client.rb +25 -0
- data/lib/phishin/client/errors.rb +31 -0
- data/lib/phishin/client/version.rb +6 -0
- data/lib/phishin/client.rb +23 -0
- data/lib/phishin-client.rb +1 -0
- data/phishin-client.gemspec +63 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6ee4488e118bd6ff4bbc4845ee972089ff2c4a44
|
4
|
+
data.tar.gz: 42a82c1d9691889b32fe366d698bd952ac0336ea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 45a63268185f2a1a7c4ad3c0afee7fa04d16266c5f02a7502942195acfcb0d042e4567a4172fd4b4ca5fde42a3f60e7d366dc9988a8b10063034279e23999e65
|
7
|
+
data.tar.gz: 2bf0d5f634419099acc1c80f70817585c7151a29147fc1087d6048d376de2ed735bcba8eb90c6b157af32b2c89c6a52d6db878691ed42db7e97a9012abfd4501
|
data/.gitignore
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
*.swp
|
24
|
+
.DS_Store
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Alex Bird
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Phish.in API Client
|
2
|
+
|
3
|
+
Talks to the http://phish.in API. Has built-in caching.
|
4
|
+
|
5
|
+
- [README](https://github.com/alexebird/phishin-client/blob/master/README.md)
|
6
|
+
- [Documentation](http://rubydoc.info/gems/phishin-client)
|
7
|
+
- [Phish.in API documentation](http://phish.in/api-docs)
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
gem install phishin-client
|
12
|
+
|
13
|
+
|
14
|
+
## Getting Started
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
require 'phishin-client'
|
18
|
+
doglogger = Logger.new
|
19
|
+
c = Phishin::Client.new log: true, logger: doglogger
|
20
|
+
|
21
|
+
response = c.get_tracks(page: 1, per_page: 40) # Phishin::Api::Response instance
|
22
|
+
json_hash = response.data
|
23
|
+
```
|
24
|
+
|
25
|
+
## License
|
26
|
+
|
27
|
+
Please see [LICENSE](https://github.com/alexebird/phishin-client/blob/master/LICENSE.txt).
|
28
|
+
|
29
|
+
|
30
|
+
## Author
|
31
|
+
|
32
|
+
Alex Bird [@alexebird](https://twitter.com/alexebird).
|
33
|
+
Big thanks to [@phish_in](https://twitter.com/phish_in).
|
data/Rakefile
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Phishin
|
2
|
+
module Api
|
3
|
+
class Response
|
4
|
+
attr_reader :http_status
|
5
|
+
attr_reader :total_entries
|
6
|
+
attr_reader :total_pages
|
7
|
+
attr_reader :page
|
8
|
+
attr_reader :data
|
9
|
+
attr_reader :url
|
10
|
+
|
11
|
+
def initialize(url, response_data)
|
12
|
+
@url = url
|
13
|
+
@success = response_data['success']
|
14
|
+
|
15
|
+
if success?
|
16
|
+
@total_entries = response_data['total_entries']
|
17
|
+
@total_pages = response_data['total_pages']
|
18
|
+
@page = response_data['page']
|
19
|
+
@data = response_data['data']
|
20
|
+
else
|
21
|
+
@message = response_data['message']
|
22
|
+
raise Phishin::Client::UnsuccessfulResponseError.new(url, @message)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def [](key)
|
27
|
+
return @data[key]
|
28
|
+
end
|
29
|
+
|
30
|
+
def success?
|
31
|
+
return @success == true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Phishin
|
2
|
+
module Api
|
3
|
+
module V1
|
4
|
+
BASE_URL = 'http://phish.in/api/v1'
|
5
|
+
HEADERS = { 'accept' => 'application/json' }
|
6
|
+
DEFAULT_PARAMS = %i[page per_page sort_attr sort_dir]
|
7
|
+
|
8
|
+
# @param id_or_slug [String,Integer] track id or slug
|
9
|
+
def get_track(id_or_slug)
|
10
|
+
check_id_arg('track', id_or_slug)
|
11
|
+
perform_get_request('tracks/%s.json' % id_or_slug.to_s)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @option opts [Integer] :page The desired page
|
15
|
+
# @option opts [Integer] :per_page Results per page
|
16
|
+
def get_tracks(opts={})
|
17
|
+
perform_get_request('tracks.json', select_params(opts, DEFAULT_PARAMS))
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
# @param (see #get_track)
|
23
|
+
def get_show(id_or_slug)
|
24
|
+
check_id_arg('show', id_or_slug)
|
25
|
+
perform_get_request('shows/%s.json' % id_or_slug.to_s)
|
26
|
+
end
|
27
|
+
|
28
|
+
# @option (see #get_tracks)
|
29
|
+
def get_shows(opts={})
|
30
|
+
perform_get_request('shows.json', select_params(opts, DEFAULT_PARAMS))
|
31
|
+
end
|
32
|
+
|
33
|
+
# @param show_date [String] a show date in the format YYYY-MM-DD
|
34
|
+
def get_show_on_date(show_date)
|
35
|
+
raise Phishin::Client::Error, "invalid argument: show_date must match YYYY-MM-DD" unless show_date && show_date =~ /\d{4}-\d{2}-\d{2}/
|
36
|
+
perform_get_request('show-on-date/%s.json' % show_date)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
# @param (see #get_track)
|
42
|
+
def get_song(id_or_slug)
|
43
|
+
check_id_arg('song', id_or_slug)
|
44
|
+
perform_get_request('songs/%s.json' % id_or_slug.to_s)
|
45
|
+
end
|
46
|
+
|
47
|
+
# @option (see #get_tracks)
|
48
|
+
def get_songs(opts={})
|
49
|
+
perform_get_request('songs.json', select_params(opts, DEFAULT_PARAMS))
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
# @param (see #get_track)
|
55
|
+
def get_tour(id_or_slug)
|
56
|
+
check_id_arg('tour', id_or_slug)
|
57
|
+
perform_get_request('tours/%s.json' % id_or_slug.to_s)
|
58
|
+
end
|
59
|
+
|
60
|
+
# @option (see #get_tracks)
|
61
|
+
def get_tours(opts={})
|
62
|
+
perform_get_request('tours.json', select_params(opts, DEFAULT_PARAMS))
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
# @param (see #get_track)
|
68
|
+
def get_venue(id_or_slug)
|
69
|
+
check_id_arg('venue', id_or_slug)
|
70
|
+
perform_get_request('venues/%s.json' % id_or_slug.to_s)
|
71
|
+
end
|
72
|
+
|
73
|
+
# @option (see #get_tracks)
|
74
|
+
def get_venues(opts={})
|
75
|
+
perform_get_request('venues.json', select_params(opts, DEFAULT_PARAMS))
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
def get_eras
|
81
|
+
perform_get_request('eras.json')
|
82
|
+
end
|
83
|
+
|
84
|
+
def get_years
|
85
|
+
perform_get_request('years.json')
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
# @api private
|
91
|
+
def select_params(opts, keys)
|
92
|
+
params = {}
|
93
|
+
keys.each do |key|
|
94
|
+
params[key] = opts[key] if opts.key?(key)
|
95
|
+
end
|
96
|
+
return params
|
97
|
+
end
|
98
|
+
|
99
|
+
# @api private
|
100
|
+
def assert_response_data_field(response)
|
101
|
+
raise Phishin::Client::EmptyResponseError.new(response.url) if !response.data
|
102
|
+
end
|
103
|
+
|
104
|
+
# @api private
|
105
|
+
def perform_get_request(path, params={})
|
106
|
+
url = [BASE_URL, path].join("/")
|
107
|
+
logger.info "phish.in api GET url=#{url} params=#{params}" if logger
|
108
|
+
response = RestClient.get(url, HEADERS.merge(params: params))
|
109
|
+
resp = Phishin::Api::Response.new(url, Oj.load(response.to_s))
|
110
|
+
assert_response_data_field(resp)
|
111
|
+
return resp
|
112
|
+
end
|
113
|
+
|
114
|
+
# @api private
|
115
|
+
def check_id_arg(resource_name, val)
|
116
|
+
raise Phishin::Client::Error, "invalid argument: must pass #{resource_name} id or slug" unless val
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
data/lib/phishin/api.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Phishin
|
2
|
+
module Client
|
3
|
+
class Client
|
4
|
+
|
5
|
+
include Phishin::Api::V1
|
6
|
+
|
7
|
+
attr_accessor :logger
|
8
|
+
|
9
|
+
DEFAULT_LOGGER = lambda do
|
10
|
+
require 'logger'
|
11
|
+
logger = Logger.new(STDOUT)
|
12
|
+
logger.progname = 'phishin-client'
|
13
|
+
logger
|
14
|
+
end
|
15
|
+
|
16
|
+
# @option opts [Boolean] :log Enable/disable logging
|
17
|
+
# @option opts [Object] :logger Logger-compatible object instance to use
|
18
|
+
def initialize(opts={})
|
19
|
+
opts[:log] = true if !opts.key?(:log)
|
20
|
+
@logger = opts[:log] ? (opts[:logger] || DEFAULT_LOGGER.call()) : nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Phishin
|
2
|
+
module Client
|
3
|
+
class Error < StandardError ; end
|
4
|
+
|
5
|
+
class TrackNotFoundError < StandardError
|
6
|
+
def initialize(show_date, track_id_or_slug)
|
7
|
+
super("phish.in api could not find track with show_date=#{show_date} track_id_or_slug=#{track_id_or_slug} (possibly the 'missing track' issue)")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Raised when there is no response body
|
12
|
+
class EmptyResponseError < StandardError
|
13
|
+
attr_reader :url
|
14
|
+
|
15
|
+
def initialize(url)
|
16
|
+
@url = url
|
17
|
+
super("phish.in api response body was empty for url=#{url}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class UnsuccessfulResponseError < StandardError
|
22
|
+
attr_reader :url
|
23
|
+
|
24
|
+
def initialize(url, message)
|
25
|
+
@url = url
|
26
|
+
super("phish.in api response body has success=false. message='#{message}'")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'oj'
|
3
|
+
|
4
|
+
require 'phishin/api'
|
5
|
+
require 'phishin/api/v1'
|
6
|
+
require 'phishin/api/response'
|
7
|
+
|
8
|
+
require 'phishin/client/version'
|
9
|
+
require 'phishin/client/client'
|
10
|
+
require 'phishin/client/errors'
|
11
|
+
|
12
|
+
module Phishin
|
13
|
+
module Client
|
14
|
+
|
15
|
+
# Wrapper for {::Phishin::Client::Client#initialize}.
|
16
|
+
#
|
17
|
+
def new(opts={})
|
18
|
+
Phishin::Client::Client.new(opts)
|
19
|
+
end
|
20
|
+
extend self
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'phishin/client'
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
require 'date'
|
5
|
+
require 'phishin/client/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = 'phishin-client'
|
9
|
+
gem.version = Phishin::Client::VERSION
|
10
|
+
gem.date = Date.today.to_s
|
11
|
+
gem.licenses = ['MIT']
|
12
|
+
gem.authors = ['Alexander Bird']
|
13
|
+
gem.email = ['alexebird@gmail.com']
|
14
|
+
gem.homepage = 'https://github.com/alexebird/phishin-client'
|
15
|
+
gem.summary = %q{Phish.in API client}
|
16
|
+
gem.description = %q{Client for http://phish.in Phish streaming API.}
|
17
|
+
|
18
|
+
gem.required_ruby_version = '>= 1.9.3'
|
19
|
+
|
20
|
+
gem.add_runtime_dependency 'rest-client', '~> 1.6.7'
|
21
|
+
gem.add_runtime_dependency 'oj', '~> 2.1.7'
|
22
|
+
#gem.add_runtime_dependency 'nokogiri', '~> 1.6.0'
|
23
|
+
gem.add_development_dependency 'rake', '~> 10.0'
|
24
|
+
gem.add_development_dependency 'rspec', '~> 2.14'
|
25
|
+
gem.add_development_dependency 'yard', '~> 0.8'
|
26
|
+
#gem.add_development_dependency 'redcarpet', '~> 3.0'
|
27
|
+
#gem.add_development_dependency 'simplecov', '~> 0.7.1'
|
28
|
+
|
29
|
+
gem.files = `git ls-files`.split($/)
|
30
|
+
gem.test_files = gem.files.grep(%r{^spec/})
|
31
|
+
|
32
|
+
gem.require_paths = ['lib']
|
33
|
+
end
|
34
|
+
|
35
|
+
# coding: utf-8
|
36
|
+
lib = File.expand_path('../lib', __FILE__)
|
37
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
38
|
+
require 'date'
|
39
|
+
require 'phishin/client/version'
|
40
|
+
|
41
|
+
Gem::Specification.new do |spec|
|
42
|
+
spec.name = "phishin-client"
|
43
|
+
spec.version = Phishin::Client::VERSION
|
44
|
+
spec.date = Date.today.to_s
|
45
|
+
spec.authors = ["Alex Bird"]
|
46
|
+
spec.email = ["alexebird@gmail.com"]
|
47
|
+
spec.summary = %q{Phish.in API client}
|
48
|
+
spec.description = %q{Client for http://phish.in Phish streaming API.}
|
49
|
+
spec.homepage = "https://github.com/alexebird/phishin-client"
|
50
|
+
spec.license = "MIT"
|
51
|
+
|
52
|
+
spec.files = `git ls-files -z`.split("\x0")
|
53
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
54
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
55
|
+
spec.require_paths = ["lib"]
|
56
|
+
|
57
|
+
spec.add_runtime_dependency "rest-client", "~> 1.6.7"
|
58
|
+
spec.add_runtime_dependency "oj", "~> 2.1.7"
|
59
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
60
|
+
spec.add_development_dependency "rake"
|
61
|
+
spec.add_development_dependency "yard", "~> 0.8"
|
62
|
+
end
|
63
|
+
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: phishin-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Bird
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.6.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.6.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: oj
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.1.7
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.1.7
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.8'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.8'
|
83
|
+
description: Client for http://phish.in Phish streaming API.
|
84
|
+
email:
|
85
|
+
- alexebird@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- Gemfile
|
92
|
+
- LICENSE.txt
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
95
|
+
- lib/phishin-client.rb
|
96
|
+
- lib/phishin/api.rb
|
97
|
+
- lib/phishin/api/response.rb
|
98
|
+
- lib/phishin/api/v1.rb
|
99
|
+
- lib/phishin/client.rb
|
100
|
+
- lib/phishin/client/client.rb
|
101
|
+
- lib/phishin/client/errors.rb
|
102
|
+
- lib/phishin/client/version.rb
|
103
|
+
- phishin-client.gemspec
|
104
|
+
homepage: https://github.com/alexebird/phishin-client
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.0.14
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Phish.in API client
|
128
|
+
test_files: []
|
129
|
+
has_rdoc:
|