songkickr 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.bundle/config +2 -0
- data/.gitignore +1 -0
- data/.travis.yml +8 -0
- data/Gemfile.lock +42 -22
- data/LICENSE +1 -1
- data/README.rdoc +14 -9
- data/Rakefile +3 -4
- data/lib/songkickr/artist.rb +2 -2
- data/lib/songkickr/artist_result.rb +4 -24
- data/lib/songkickr/calendar_entry.rb +23 -0
- data/lib/songkickr/calendar_result.rb +10 -0
- data/lib/songkickr/concert_setlist_result.rb +5 -27
- data/lib/songkickr/event.rb +8 -14
- data/lib/songkickr/event_result.rb +5 -23
- data/lib/songkickr/location.rb +4 -4
- data/lib/songkickr/location_result.rb +5 -30
- data/lib/songkickr/metro_area.rb +28 -0
- data/lib/songkickr/metro_area_result.rb +12 -0
- data/lib/songkickr/performance.rb +17 -12
- data/lib/songkickr/remote.rb +18 -198
- data/lib/songkickr/remote_api/artist_details.rb +17 -0
- data/lib/songkickr/remote_api/event_details.rb +17 -0
- data/lib/songkickr/remote_api/past_events.rb +48 -0
- data/lib/songkickr/remote_api/similar_artists.rb +14 -0
- data/lib/songkickr/remote_api/upcoming_events.rb +125 -0
- data/lib/songkickr/remote_api/user_events_and_trackings.rb +143 -0
- data/lib/songkickr/remote_api/venue_details.rb +16 -0
- data/lib/songkickr/result_set.rb +27 -0
- data/lib/songkickr/setlist.rb +7 -12
- data/lib/songkickr/setlist_item.rb +1 -1
- data/lib/songkickr/tracking.rb +18 -0
- data/lib/songkickr/tracking_result.rb +24 -0
- data/lib/songkickr/venue.rb +10 -2
- data/lib/songkickr/venue_result.rb +32 -0
- data/lib/songkickr/version.rb +1 -1
- data/lib/songkickr.rb +24 -17
- data/songkickr.gemspec +17 -44
- data/test/fixtures/event_7391451.json +732 -1
- data/test/fixtures/location_search.json +38 -0
- data/test/fixtures/metro_area.json +11 -0
- data/test/fixtures/users_attendance_calendar.json +243 -0
- data/test/fixtures/vcr/artist_events.yml +1394 -0
- data/test/fixtures/vcr/artist_search.yml +38 -0
- data/test/fixtures/vcr/artists_gigography.yml +187 -0
- data/test/fixtures/vcr/concert_setlists.yml +47 -0
- data/test/fixtures/vcr/event_search.yml +110 -0
- data/test/fixtures/vcr/invalid_api_key.yml +6 -36
- data/test/fixtures/vcr/invalid_artist_id.yml +6 -6
- data/test/fixtures/vcr/invalid_event_id.yml +6 -6
- data/test/fixtures/vcr/invalid_user.yml +6 -6
- data/test/fixtures/vcr/invalid_venue_id.yml +6 -6
- data/test/fixtures/vcr/location_search.yml +42 -0
- data/test/fixtures/vcr/metro_areas_events.yml +1535 -0
- data/test/fixtures/vcr/similar_artists.yml +64 -0
- data/test/fixtures/vcr/users_artist_tracking.yml +99 -0
- data/test/fixtures/vcr/users_attendance.yml +66 -0
- data/test/fixtures/vcr/users_attendance_calendar.yml +51 -0
- data/test/fixtures/vcr/users_events.yml +809 -0
- data/test/fixtures/vcr/users_gigography.yml +2782 -0
- data/test/fixtures/vcr/users_metro_area_tracking.yml +66 -0
- data/test/fixtures/vcr/users_muted_artists.yml +66 -0
- data/test/fixtures/vcr/users_tracked_artists.yml +75 -0
- data/test/fixtures/vcr/users_tracked_events_calendar.yml +1901 -0
- data/test/fixtures/vcr/users_tracked_metro_areas.yml +37 -0
- data/test/fixtures/vcr/valid_artist.yml +9 -9
- data/test/fixtures/vcr/valid_event.yml +103 -38
- data/test/fixtures/vcr/valid_user.yml +634 -44
- data/test/fixtures/vcr/valid_venue.yml +25 -26
- data/test/fixtures/vcr/venue_calendar.yml +500 -0
- data/test/fixtures/vcr/venue_search.yml +42 -0
- data/test/helper.rb +1 -27
- data/test/songkickr/test_calendar_entry.rb +15 -0
- data/test/songkickr/test_event.rb +8 -9
- data/test/songkickr/test_location.rb +11 -11
- data/test/songkickr/test_metro_area.rb +17 -0
- data/test/songkickr/test_remote.rb +149 -3
- data/test/songkickr/test_setlist_item.rb +20 -0
- data/test/songkickr/test_venue.rb +1 -2
- data/test.rb +3 -5
- metadata +120 -152
- data/bin/autospec +0 -16
- data/bin/convert_to_should_syntax +0 -16
- data/bin/guard +0 -16
- data/bin/htmldiff +0 -16
- data/bin/httparty +0 -16
- data/bin/jeweler +0 -16
- data/bin/ldiff +0 -16
- data/bin/rake +0 -16
- data/bin/rake2thor +0 -16
- data/bin/rg +0 -16
- data/bin/ri +0 -16
- data/bin/rspec +0 -16
- data/bin/thor +0 -16
- data/doc/APIError.html +0 -241
- data/doc/APIKeyNotSet.html +0 -203
- data/doc/LICENSE.html +0 -133
- data/doc/README_rdoc.html +0 -173
- data/doc/ResourceNotFound.html +0 -203
- data/doc/Songkickr/Artist.html +0 -278
- data/doc/Songkickr/ArtistResult.html +0 -308
- data/doc/Songkickr/ConcertSetlistResult.html +0 -283
- data/doc/Songkickr/Event.html +0 -491
- data/doc/Songkickr/EventResult.html +0 -306
- data/doc/Songkickr/Location.html +0 -299
- data/doc/Songkickr/LocationResult.html +0 -309
- data/doc/Songkickr/Performance.html +0 -295
- data/doc/Songkickr/Remote.html +0 -864
- data/doc/Songkickr/Setlist.html +0 -360
- data/doc/Songkickr/SetlistItem.html +0 -244
- data/doc/Songkickr/Venue.html +0 -265
- data/doc/Songkickr.html +0 -261
- data/doc/created.rid +0 -16
- data/doc/images/add.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +0 -110
- data/doc/js/darkfish.js +0 -153
- data/doc/js/jquery.js +0 -18
- data/doc/js/navigation.js +0 -142
- data/doc/js/quicksearch.js +0 -114
- data/doc/js/search.js +0 -94
- data/doc/js/search_index.js +0 -1
- data/doc/js/searcher.js +0 -228
- data/doc/js/thickbox-compressed.js +0 -10
- data/doc/lib/songkickr/artist_rb.html +0 -52
- data/doc/lib/songkickr/artist_result_rb.html +0 -52
- data/doc/lib/songkickr/concert_setlist_result_rb.html +0 -52
- data/doc/lib/songkickr/event_rb.html +0 -52
- data/doc/lib/songkickr/event_result_rb.html +0 -52
- data/doc/lib/songkickr/location_rb.html +0 -52
- data/doc/lib/songkickr/location_result_rb.html +0 -52
- data/doc/lib/songkickr/performance_rb.html +0 -52
- data/doc/lib/songkickr/remote_rb.html +0 -52
- data/doc/lib/songkickr/setlist_item_rb.html +0 -52
- data/doc/lib/songkickr/setlist_rb.html +0 -52
- data/doc/lib/songkickr/venue_rb.html +0 -52
- data/doc/lib/songkickr_rb.html +0 -56
- data/doc/rdoc.css +0 -543
- data/doc/table_of_contents.html +0 -185
- data/test/fixtures/locations_bar.json +0 -1
data/lib/songkickr/setlist.rb
CHANGED
@@ -18,30 +18,25 @@ module Songkickr
|
|
18
18
|
# "setlistItem": []
|
19
19
|
# }
|
20
20
|
class Setlist
|
21
|
-
attr_accessor :
|
22
|
-
|
21
|
+
attr_accessor :setlist_items, :artist, :playlist_uri, :display_name, :id
|
22
|
+
|
23
23
|
# Takes the setlist hash and parses out an Event and Artist and an array of SetlistItems.
|
24
24
|
def initialize(setlist_hash)
|
25
|
-
@event = Songkickr::Event.new setlist_hash["event"]
|
26
25
|
@setlist_items = parse_setlist_items setlist_hash["setlistItem"]
|
27
26
|
@artist = Songkickr::Artist.new setlist_hash["artist"]
|
28
27
|
@playlist_uri = setlist_hash["playlistUri"]
|
29
28
|
@display_name = setlist_hash["displayName"]
|
30
29
|
@id = setlist_hash["id"]
|
31
30
|
end
|
32
|
-
|
31
|
+
|
33
32
|
protected
|
34
|
-
|
33
|
+
|
35
34
|
# Takes the array of setlist items and create SetLists
|
36
35
|
def parse_setlist_items(setlist_item_array = nil)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
setlist_items << Songkickr::SetlistItem.new(item)
|
41
|
-
end
|
36
|
+
return [] unless setlist_item_array
|
37
|
+
setlist_item_array.inject([]) do |setlist_items, item|
|
38
|
+
setlist_items << Songkickr::SetlistItem.new(item)
|
42
39
|
end
|
43
|
-
|
44
|
-
setlist_items
|
45
40
|
end
|
46
41
|
end
|
47
42
|
end
|
@@ -9,7 +9,7 @@ module Songkickr
|
|
9
9
|
|
10
10
|
# Takes the set list item hash and parses a boolean out for encore.
|
11
11
|
def initialize(setlist_item_hash)
|
12
|
-
@encore =
|
12
|
+
@encore = !setlist_item_hash["encore"].zero?
|
13
13
|
@name = setlist_item_hash["name"]
|
14
14
|
end
|
15
15
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Songkickr
|
2
|
+
# "tracking": {
|
3
|
+
# "username": "username",
|
4
|
+
# "id": "artist:231185",
|
5
|
+
# "createdAt": "2010-04-17T17:27:45Z",
|
6
|
+
# "attendance": "i_might_go"
|
7
|
+
# }
|
8
|
+
class Tracking
|
9
|
+
attr_accessor :attendance, :created_at, :id, :username
|
10
|
+
|
11
|
+
def initialize(tracking_hash)
|
12
|
+
@attendance = tracking_hash["attendance"] if tracking_hash.include? "attendance"
|
13
|
+
@id = tracking_hash["id"]
|
14
|
+
@username = tracking_hash["username"]
|
15
|
+
@created_at = tracking_hash["created_at"]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Songkickr
|
2
|
+
# A class to represent the result hash of a Tracking search.
|
3
|
+
class TrackingResult
|
4
|
+
attr_accessor :results
|
5
|
+
|
6
|
+
# Takes the result hash directly and parses out the page and total entries and finally passes off to the parse_results method to get the results.
|
7
|
+
def initialize(result_hash = {})
|
8
|
+
results_page = result_hash["resultsPage"]
|
9
|
+
|
10
|
+
if results_page
|
11
|
+
@results = parse_results results_page["results"]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
# Take the results hash directly and parse the tracking into Tracking objects.
|
18
|
+
#
|
19
|
+
# Returns an array of Trackings.
|
20
|
+
def parse_results(results = {})
|
21
|
+
Songkickr::Tracking.new(results["tracking"])
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/songkickr/venue.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
module Songkickr
|
2
2
|
class Venue
|
3
|
-
attr_accessor :display_name, :id, :lat, :lng
|
4
|
-
|
3
|
+
attr_accessor :capacity, :display_name, :description, :id, :lat, :lng, :phone, :street, :uri, :website, :zip
|
4
|
+
|
5
5
|
def initialize(venue_hash)
|
6
|
+
@capacity = venue_hash["capacity"]
|
6
7
|
@display_name = venue_hash["displayName"]
|
8
|
+
@description = venue_hash["description"]
|
7
9
|
@id = venue_hash["id"]
|
8
10
|
@lat = venue_hash["lat"]
|
9
11
|
@lng = venue_hash["lng"]
|
12
|
+
@metro_area = Songkickr::MetroArea.new venue_hash["metroArea"] if venue_hash.include?("metroArea")
|
13
|
+
@phone = venue_hash["phone"]
|
14
|
+
@street = venue_hash["street"]
|
15
|
+
@uri = venue_hash["uri"]
|
16
|
+
@website = venue_hash["website"]
|
17
|
+
@zip = venue_hash["zip"]
|
10
18
|
end
|
11
19
|
end
|
12
20
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Songkickr
|
2
|
+
# A class to represent the result hash of a Venue search.
|
3
|
+
|
4
|
+
# {"resultsPage":
|
5
|
+
# {"results":
|
6
|
+
# {"venue":
|
7
|
+
# [{"id":17522,
|
8
|
+
# "displayName":"O2 Academy Brixton",
|
9
|
+
# "city":{"uri":"http://www.songkick.com/metro_areas/24426-uk-london",
|
10
|
+
# "displayName":"London","country":{"displayName":"UK"},"id":24426},
|
11
|
+
# "metroArea":{"uri":"http://www.songkick.com/metro_areas/24426-uk-london",
|
12
|
+
# "displayName":"London","country":{"displayName":"UK"},"id":24426},
|
13
|
+
# "uri":"http://www.songkick.com/venues/17522-o2-academy-brixton",
|
14
|
+
# "street":"211 Stockwell Road", "zip":"SW9 9SL",
|
15
|
+
# "lat":51.4651268, "lng":-0.115187,
|
16
|
+
# "phone":"020 7771 3000",
|
17
|
+
# "website":"http://www.brixton-academy.co.uk",
|
18
|
+
# "capacity":4921,
|
19
|
+
# "description": "Brixton Academy is an award winning music venue situated in the heart of Brixton, South London."
|
20
|
+
# } ]
|
21
|
+
# },"totalEntries":1,"perPage":50,"page":1,"status":"ok"}}
|
22
|
+
|
23
|
+
class VenueResult < ResultSet
|
24
|
+
# Takes the result hash directly and parses out the page and total entries and finally passes off to the parse_results method to get the results.
|
25
|
+
def initialize(result_hash = {})
|
26
|
+
@result_type = "Venue"
|
27
|
+
@result_key_string = "venue"
|
28
|
+
|
29
|
+
super
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/songkickr/version.rb
CHANGED
data/lib/songkickr.rb
CHANGED
@@ -1,21 +1,28 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'httparty'
|
3
1
|
require 'httparty'
|
4
2
|
|
5
|
-
require
|
6
|
-
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
|
18
|
-
require
|
3
|
+
require 'songkickr/remote'
|
4
|
+
|
5
|
+
require 'songkickr/performance'
|
6
|
+
require 'songkickr/artist'
|
7
|
+
require 'songkickr/location'
|
8
|
+
require 'songkickr/venue'
|
9
|
+
require 'songkickr/event'
|
10
|
+
require 'songkickr/setlist_item'
|
11
|
+
require 'songkickr/setlist'
|
12
|
+
require 'songkickr/metro_area'
|
13
|
+
require 'songkickr/tracking'
|
14
|
+
require 'songkickr/calendar_entry'
|
15
|
+
|
16
|
+
require 'songkickr/result_set'
|
17
|
+
require 'songkickr/artist_result'
|
18
|
+
require 'songkickr/calendar_result'
|
19
|
+
require 'songkickr/concert_setlist_result'
|
20
|
+
require 'songkickr/event_result'
|
21
|
+
require 'songkickr/location_result'
|
22
|
+
require 'songkickr/metro_area_result'
|
23
|
+
require 'songkickr/tracking_result'
|
24
|
+
require 'songkickr/venue_result'
|
25
|
+
|
19
26
|
|
20
27
|
class APIKeyNotSet < StandardError;
|
21
28
|
# Warns of missing API key
|
@@ -61,7 +68,7 @@ module Songkickr
|
|
61
68
|
# Set the API key. In the event you need to set the API key after initializing the the remote.
|
62
69
|
# === Parameters
|
63
70
|
#
|
64
|
-
# * +api_key+ - A developer key from Songkick. Get an API key for your app from http://
|
71
|
+
# * +api_key+ - A developer key from Songkick. Get an API key for your app from http://www.songkick.com/developer/
|
65
72
|
def self.api_key=(api_key)
|
66
73
|
@api_key = api_key
|
67
74
|
end
|
data/songkickr.gemspec
CHANGED
@@ -4,59 +4,32 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'songkickr/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
|
-
gem.name
|
8
|
-
gem.version
|
9
|
-
gem.authors
|
10
|
-
gem.email
|
7
|
+
gem.name = "songkickr"
|
8
|
+
gem.version = Songkickr::VERSION
|
9
|
+
gem.authors = ["Jared Mehle"]
|
10
|
+
gem.email = ["jrmehle@gmail.com"]
|
11
11
|
gem.description = "A Ruby wrapper around the Songkick API. Visit www.songkick.com/developer for documentation on the Songkick API. "
|
12
|
-
gem.summary
|
13
|
-
gem.homepage
|
12
|
+
gem.summary = "A Ruby wrapper around the Songkick API."
|
13
|
+
gem.homepage = "http://github.com/jrmehle/songkickr"
|
14
|
+
|
15
|
+
gem.add_development_dependency 'shoulda', ">= 2.11.0"
|
16
|
+
gem.add_development_dependency 'fakeweb', ">= 1.3.0"
|
17
|
+
gem.add_development_dependency 'rdoc', "~> 4.0.1"
|
18
|
+
gem.add_development_dependency 'crack', ">= 0"
|
19
|
+
gem.add_development_dependency 'rake', "~> 10.0.0"
|
20
|
+
gem.add_development_dependency 'test-unit', "~> 2.5.5"
|
21
|
+
gem.add_development_dependency 'vcr', "~> 2.5.0"
|
22
|
+
gem.add_development_dependency 'pry'
|
23
|
+
|
24
|
+
gem.add_dependency 'httparty', '~> 0.8.3'
|
14
25
|
|
15
26
|
gem.files = `git ls-files`.split($/)
|
16
27
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
28
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
29
|
gem.require_paths = ["lib"]
|
19
30
|
|
20
|
-
gem.rubygems_version = "1.8.25"
|
21
|
-
gem.required_rubygems_version = Gem::Requirement.new(">= 0") if gem.respond_to? :required_rubygems_version=
|
22
|
-
gem.date = "2013-02-16"
|
23
|
-
gem.executables = ["autospec", "convert_to_should_syntax", "guard", "htmldiff", "httparty", "ldiff", "rake", "rake2thor", "rg", "ri", "rspec", "thor"]
|
24
31
|
gem.extra_rdoc_files = [
|
25
32
|
"LICENSE",
|
26
33
|
"README.rdoc"
|
27
34
|
]
|
28
|
-
|
29
|
-
if gem.respond_to? :specification_version then
|
30
|
-
gem.specification_version = 3
|
31
|
-
|
32
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
33
|
-
gem.add_development_dependency(%q<shoulda>, [">= 2.11.0"])
|
34
|
-
gem.add_development_dependency(%q<fakeweb>, [">= 1.3.0"])
|
35
|
-
gem.add_development_dependency(%q<redgreen>, [">= 1.2.2"])
|
36
|
-
gem.add_development_dependency(%q<crack>, [">= 0"])
|
37
|
-
gem.add_development_dependency(%q<httparty>, [">= 0"])
|
38
|
-
gem.add_development_dependency(%q<test-unit>, [">= 0"])
|
39
|
-
gem.add_development_dependency(%q<rake>, [">= 0"])
|
40
|
-
gem.add_development_dependency(%q<vcr>, [">= 0"])
|
41
|
-
else
|
42
|
-
gem.add_dependency(%q<shoulda>, [">= 2.11.0"])
|
43
|
-
gem.add_dependency(%q<fakeweb>, [">= 1.3.0"])
|
44
|
-
gem.add_dependency(%q<redgreen>, [">= 1.2.2"])
|
45
|
-
gem.add_dependency(%q<crack>, [">= 0"])
|
46
|
-
gem.add_dependency(%q<httparty>, [">= 0"])
|
47
|
-
gem.add_dependency(%q<test-unit>, [">= 0"])
|
48
|
-
gem.add_dependency(%q<rake>, [">= 0"])
|
49
|
-
gem.add_dependency(%q<vcr>, [">= 0"])
|
50
|
-
end
|
51
|
-
else
|
52
|
-
gem.add_dependency(%q<crack>, [">= 0"])
|
53
|
-
gem.add_dependency(%q<httparty>, [">= 0"])
|
54
|
-
gem.add_dependency(%q<test-unit>, [">= 0"])
|
55
|
-
gem.add_dependency(%q<rake>, [">= 0"])
|
56
|
-
gem.add_dependency(%q<jeweler>, [">= 0"])
|
57
|
-
gem.add_dependency(%q<vcr>, [">= 0"])
|
58
|
-
gem.add_dependency(%q<shoulda>, [">= 2.11.0"])
|
59
|
-
gem.add_dependency(%q<fakeweb>, [">= 1.3.0"])
|
60
|
-
gem.add_dependency(%q<redgreen>, [">= 1.2.2"])
|
61
|
-
end
|
62
35
|
end
|