bandsintown 0.1.4 → 0.2.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.
- data/History.txt +8 -0
- data/Manifest.txt +1 -0
- data/README.rdoc +42 -0
- data/Rakefile +2 -1
- data/lib/bandsintown.rb +3 -3
- data/lib/bandsintown/artist.rb +9 -9
- data/lib/bandsintown/base.rb +18 -4
- data/lib/bandsintown/connection.rb +14 -7
- data/lib/bandsintown/event.rb +136 -15
- data/lib/bandsintown/venue.rb +66 -11
- data/spec/bandsintown/artist_spec.rb +2 -2
- data/spec/bandsintown/base_spec.rb +46 -19
- data/spec/bandsintown/connection_spec.rb +78 -55
- data/spec/bandsintown/event/creation_helpers_spec.rb +102 -0
- data/spec/bandsintown/event_spec.rb +93 -16
- data/spec/bandsintown/venue_spec.rb +119 -2
- data/website/index.html +43 -1
- data/website/index.txt +50 -0
- metadata +23 -8
@@ -2,7 +2,63 @@ require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
2
2
|
|
3
3
|
describe Bandsintown::Venue do
|
4
4
|
|
5
|
-
describe "
|
5
|
+
describe "attributes" do
|
6
|
+
before(:each) do
|
7
|
+
@venue = Bandsintown::Venue.new(123)
|
8
|
+
end
|
9
|
+
it "should have an accessor for @name" do
|
10
|
+
@venue.should respond_to(:name)
|
11
|
+
@venue.should respond_to(:name=)
|
12
|
+
end
|
13
|
+
it "should have an accessor for @bandsintown_id" do
|
14
|
+
@venue.should respond_to(:bandsintown_id)
|
15
|
+
@venue.should respond_to(:bandsintown_id=)
|
16
|
+
end
|
17
|
+
it "should have an accessor for @bandsintown_url" do
|
18
|
+
@venue.should respond_to(:bandsintown_url)
|
19
|
+
@venue.should respond_to(:bandsintown_url=)
|
20
|
+
end
|
21
|
+
it "should have an accessor for @address" do
|
22
|
+
@venue.should respond_to(:address)
|
23
|
+
@venue.should respond_to(:address=)
|
24
|
+
end
|
25
|
+
it "should have an accessor for @city" do
|
26
|
+
@venue.should respond_to(:city)
|
27
|
+
@venue.should respond_to(:city=)
|
28
|
+
end
|
29
|
+
it "should have an accessor for @region" do
|
30
|
+
@venue.should respond_to(:region)
|
31
|
+
@venue.should respond_to(:region=)
|
32
|
+
end
|
33
|
+
it "should have an accessor for @postalcode" do
|
34
|
+
@venue.should respond_to(:postalcode)
|
35
|
+
@venue.should respond_to(:postalcode=)
|
36
|
+
end
|
37
|
+
it "should have an accessor for @country" do
|
38
|
+
@venue.should respond_to(:country)
|
39
|
+
@venue.should respond_to(:country=)
|
40
|
+
end
|
41
|
+
it "should have an accessor for @latitude" do
|
42
|
+
@venue.should respond_to(:latitude)
|
43
|
+
@venue.should respond_to(:latitude=)
|
44
|
+
end
|
45
|
+
it "should have an accessor for @longitude" do
|
46
|
+
@venue.should respond_to(:longitude)
|
47
|
+
@venue.should respond_to(:longitude=)
|
48
|
+
end
|
49
|
+
it "should have an accessor for @events" do
|
50
|
+
@venue.should respond_to(:events)
|
51
|
+
@venue.should respond_to(:events=)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".initialize(bandsintown_id)" do
|
56
|
+
it "should set @bandsintown_id to bandsintown_id" do
|
57
|
+
Bandsintown::Venue.new(123).bandsintown_id.should == 123
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe ".build_from_json(options = {})" do
|
6
62
|
before(:each) do
|
7
63
|
@name = "Paradise Rock Club"
|
8
64
|
@url = "http://www.bandsintown.com/venue/327987"
|
@@ -13,7 +69,7 @@ describe Bandsintown::Venue do
|
|
13
69
|
@latitude = 42.37
|
14
70
|
@longitude = 71.03
|
15
71
|
|
16
|
-
@venue = Bandsintown::Venue.
|
72
|
+
@venue = Bandsintown::Venue.build_from_json({
|
17
73
|
"name" => @name,
|
18
74
|
"url" => @url,
|
19
75
|
"id" => @id,
|
@@ -24,6 +80,9 @@ describe Bandsintown::Venue do
|
|
24
80
|
"longitude" => @longitude,
|
25
81
|
})
|
26
82
|
end
|
83
|
+
it "should return a Bandsintown::Venue instance" do
|
84
|
+
@venue.should be_instance_of(Bandsintown::Venue)
|
85
|
+
end
|
27
86
|
it "should set the name" do
|
28
87
|
@venue.name.should == @name
|
29
88
|
end
|
@@ -50,4 +109,62 @@ describe Bandsintown::Venue do
|
|
50
109
|
end
|
51
110
|
end
|
52
111
|
|
112
|
+
describe ".resource_path" do
|
113
|
+
it "should return the path for Venue requests" do
|
114
|
+
Bandsintown::Venue.resource_path.should == "venues"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe ".search(options={})" do
|
119
|
+
before(:each) do
|
120
|
+
@args = { :location => "Boston, MA", :query => "House of Blues" }
|
121
|
+
end
|
122
|
+
it "should request and parse a call to the BIT venues search api method" do
|
123
|
+
Bandsintown::Venue.should_receive(:request_and_parse).with(:get, "search", @args).and_return([])
|
124
|
+
Bandsintown::Venue.search(@args)
|
125
|
+
end
|
126
|
+
it "should return an Array of Bandsintown::Venue objects built from the response" do
|
127
|
+
results = [
|
128
|
+
{ 'id' => '123', 'name' => "house of blues" },
|
129
|
+
{ 'id' => '456', 'name' => "house of blues boston" }
|
130
|
+
]
|
131
|
+
Bandsintown::Venue.stub!(:request_and_parse).and_return(results)
|
132
|
+
venues = Bandsintown::Venue.search(@args)
|
133
|
+
venues.should be_instance_of(Array)
|
134
|
+
|
135
|
+
venues.first.should be_instance_of(Bandsintown::Venue)
|
136
|
+
venues.first.bandsintown_id.should == '123'
|
137
|
+
venues.first.name.should == 'house of blues'
|
138
|
+
|
139
|
+
venues.last.should be_instance_of(Bandsintown::Venue)
|
140
|
+
venues.last.bandsintown_id.should == '456'
|
141
|
+
venues.last.name.should == 'house of blues boston'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe "#events" do
|
146
|
+
before(:each) do
|
147
|
+
@bandsintown_id = 123
|
148
|
+
@venue = Bandsintown::Venue.new(@bandsintown_id)
|
149
|
+
end
|
150
|
+
it "should request and parse a call to the BIT venues - events API method with @bandsintown_id" do
|
151
|
+
Bandsintown::Venue.should_receive(:request_and_parse).with(:get, "#{@bandsintown_id}/events").and_return([])
|
152
|
+
@venue.events
|
153
|
+
end
|
154
|
+
it "should return an Array of Bandsintown::Event objects built from the response" do
|
155
|
+
event_1 = mock(Bandsintown::Event)
|
156
|
+
event_2 = mock(Bandsintown::Event)
|
157
|
+
results = [ "event 1", "event 2" ]
|
158
|
+
Bandsintown::Venue.stub!(:request_and_parse).and_return(results)
|
159
|
+
Bandsintown::Event.should_receive(:build_from_json).with("event 1").ordered.and_return(event_1)
|
160
|
+
Bandsintown::Event.should_receive(:build_from_json).with("event 2").ordered.and_return(event_2)
|
161
|
+
@venue.events.should == [event_1, event_2]
|
162
|
+
end
|
163
|
+
it "should be memoized" do
|
164
|
+
@venue.events = 'events'
|
165
|
+
Bandsintown::Venue.should_not_receive(:request_and_parse)
|
166
|
+
@venue.events.should == 'events'
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
53
170
|
end
|
data/website/index.html
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
<div class="sidebar">
|
35
35
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/bandsintown"; return false'>
|
36
36
|
<p>Get Version</p>
|
37
|
-
<a href="http://rubyforge.org/projects/bandsintown" class="numbers">0.
|
37
|
+
<a href="http://rubyforge.org/projects/bandsintown" class="numbers">0.2.0</a>
|
38
38
|
</div>
|
39
39
|
</div>
|
40
40
|
<h2>Description</h2>
|
@@ -134,6 +134,48 @@
|
|
134
134
|
<span class="symbol">:radius</span> <span class="punct">=></span> <span class="number">10</span>
|
135
135
|
<span class="punct">})</span>
|
136
136
|
</pre></p>
|
137
|
+
<h3>Find venues with name beginning with “House of Blues” near San Diego, CA</h3>
|
138
|
+
<p><pre class='syntax'>
|
139
|
+
<span class="ident">venues</span> <span class="punct">=</span> <span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Venue</span><span class="punct">.</span><span class="ident">search</span><span class="punct">({</span>
|
140
|
+
<span class="symbol">:query</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">House of Blues</span><span class="punct">",</span>
|
141
|
+
<span class="symbol">:location</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">San Diego, CA</span><span class="punct">"</span>
|
142
|
+
<span class="punct">})</span>
|
143
|
+
</pre></p>
|
144
|
+
<h3>Find all upcoming events for a given venue</h3>
|
145
|
+
<p><pre class='syntax'>
|
146
|
+
<span class="comment"># 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA</span>
|
147
|
+
<span class="ident">venue</span> <span class="punct">=</span> <span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Venue</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="number">1700</span><span class="punct">)</span>
|
148
|
+
<span class="ident">events</span> <span class="punct">=</span> <span class="ident">venue</span><span class="punct">.</span><span class="ident">events</span>
|
149
|
+
</pre></p>
|
150
|
+
<h3>Create an event on bandsintown.com using Bandsintown::Artist and Bandsintown::Venue objects</h3>
|
151
|
+
<p><pre class='syntax'>
|
152
|
+
<span class="comment"># 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA</span>
|
153
|
+
<span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Event</span><span class="punct">.</span><span class="ident">create</span><span class="punct">({</span>
|
154
|
+
<span class="symbol">:artists</span> <span class="punct">=></span> <span class="punct">[</span><span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Artist</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="symbol">:name</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">The Roots</span><span class="punct">")],</span>
|
155
|
+
<span class="symbol">:datetime</span> <span class="punct">=></span> <span class="constant">Time</span><span class="punct">.</span><span class="ident">parse</span><span class="punct">("</span><span class="string">2010-06-01 20:00</span><span class="punct">"),</span>
|
156
|
+
<span class="symbol">:venue</span> <span class="punct">=></span> <span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Venue</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="number">1700</span><span class="punct">),</span>
|
157
|
+
<span class="symbol">:ticket_url</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">http://www.example.com/tickets/123</span><span class="punct">",</span>
|
158
|
+
<span class="symbol">:ticket_price</span> <span class="punct">=></span> <span class="number">19.5</span><span class="punct">,</span>
|
159
|
+
<span class="symbol">:on_sale_datetime</span> <span class="punct">=></span> <span class="constant">Time</span><span class="punct">.</span><span class="ident">parse</span><span class="punct">("</span><span class="string">2010-05-01 12:00</span><span class="punct">")</span>
|
160
|
+
<span class="punct">})</span>
|
161
|
+
</pre></p>
|
162
|
+
<h3>Create an event on bandsintown.com using artist names and venue location hash</h3>
|
163
|
+
<p><pre class='syntax'>
|
164
|
+
<span class="comment"># 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA</span>
|
165
|
+
<span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Event</span><span class="punct">.</span><span class="ident">create</span><span class="punct">({</span>
|
166
|
+
<span class="symbol">:artists</span> <span class="punct">=></span> <span class="punct">["</span><span class="string">Evidence</span><span class="punct">",</span> <span class="punct">"</span><span class="string">Alchemist</span><span class="punct">"],</span>
|
167
|
+
<span class="symbol">:datetime</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">2010-06-01T19:30:00</span><span class="punct">",</span>
|
168
|
+
<span class="symbol">:venue</span> <span class="punct">=></span> <span class="punct">{</span>
|
169
|
+
<span class="symbol">:name</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">Paradise Rock Club</span><span class="punct">",</span>
|
170
|
+
<span class="symbol">:city</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">Boston</span><span class="punct">",</span>
|
171
|
+
<span class="symbol">:region</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">MA</span><span class="punct">",</span>
|
172
|
+
<span class="symbol">:country</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">United States</span><span class="punct">"</span>
|
173
|
+
<span class="punct">},</span>
|
174
|
+
<span class="symbol">:ticket_url</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">http://www.example.com/tickets/123</span><span class="punct">",</span>
|
175
|
+
<span class="symbol">:ticket_price</span> <span class="punct">=></span> <span class="number">15</span><span class="punct">,</span>
|
176
|
+
<span class="symbol">:on_sale_datetime</span> <span class="punct">=></span> <span class="punct">"</span><span class="string">2010-05-01T19:30:00</span><span class="punct">"</span>
|
177
|
+
<span class="punct">})</span>
|
178
|
+
</pre></p>
|
137
179
|
<h2>Source</h2>
|
138
180
|
<pre>git clone git://github.com/bandsintown/bandsintown.git</pre>
|
139
181
|
<h2>Links</h2>
|
data/website/index.txt
CHANGED
@@ -129,6 +129,56 @@ events = Bandsintown::Event.on_sale_soon({
|
|
129
129
|
})
|
130
130
|
</pre>
|
131
131
|
|
132
|
+
h3. Find venues with name beginning with "House of Blues" near San Diego, CA
|
133
|
+
|
134
|
+
<pre syntax="ruby">
|
135
|
+
venues = Bandsintown::Venue.search({
|
136
|
+
:query => "House of Blues",
|
137
|
+
:location => "San Diego, CA"
|
138
|
+
})
|
139
|
+
</pre>
|
140
|
+
|
141
|
+
h3. Find all upcoming events for a given venue
|
142
|
+
|
143
|
+
<pre syntax="ruby">
|
144
|
+
# 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA
|
145
|
+
venue = Bandsintown::Venue.new(1700)
|
146
|
+
events = venue.events
|
147
|
+
</pre>
|
148
|
+
|
149
|
+
h3. Create an event on bandsintown.com using Bandsintown::Artist and Bandsintown::Venue objects
|
150
|
+
|
151
|
+
<pre syntax="ruby">
|
152
|
+
# 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA
|
153
|
+
Bandsintown::Event.create({
|
154
|
+
:artists => [Bandsintown::Artist.new(:name => "The Roots")],
|
155
|
+
:datetime => Time.parse("2010-06-01 20:00"),
|
156
|
+
:venue => Bandsintown::Venue.new(1700),
|
157
|
+
:ticket_url => "http://www.example.com/tickets/123",
|
158
|
+
:ticket_price => 19.5,
|
159
|
+
:on_sale_datetime => Time.parse("2010-05-01 12:00")
|
160
|
+
})
|
161
|
+
</pre>
|
162
|
+
|
163
|
+
h3. Create an event on bandsintown.com using artist names and venue location hash
|
164
|
+
|
165
|
+
<pre syntax="ruby">
|
166
|
+
# 1700 => Bandsintown venue ID for Paradise Rock Club in Boston, MA
|
167
|
+
Bandsintown::Event.create({
|
168
|
+
:artists => ["Evidence", "Alchemist"],
|
169
|
+
:datetime => "2010-06-01T19:30:00",
|
170
|
+
:venue => {
|
171
|
+
:name => "Paradise Rock Club",
|
172
|
+
:city => "Boston",
|
173
|
+
:region => "MA",
|
174
|
+
:country => "United States"
|
175
|
+
},
|
176
|
+
:ticket_url => "http://www.example.com/tickets/123",
|
177
|
+
:ticket_price => 15,
|
178
|
+
:on_sale_datetime => "2010-05-01T19:30:00"
|
179
|
+
})
|
180
|
+
</pre>
|
181
|
+
|
132
182
|
h2. Source
|
133
183
|
|
134
184
|
<pre>git clone git://github.com/bandsintown/bandsintown.git</pre>
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mike Costanza
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-06-03 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -46,9 +46,23 @@ dependencies:
|
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id002
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
49
|
+
name: rest-client
|
50
50
|
prerelease: false
|
51
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 1
|
57
|
+
- 5
|
58
|
+
- 0
|
59
|
+
version: 1.5.0
|
60
|
+
type: :runtime
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: newgem
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
66
|
requirements:
|
53
67
|
- - ">="
|
54
68
|
- !ruby/object:Gem::Version
|
@@ -58,11 +72,11 @@ dependencies:
|
|
58
72
|
- 1
|
59
73
|
version: 1.4.1
|
60
74
|
type: :development
|
61
|
-
version_requirements: *
|
75
|
+
version_requirements: *id004
|
62
76
|
- !ruby/object:Gem::Dependency
|
63
77
|
name: hoe
|
64
78
|
prerelease: false
|
65
|
-
requirement: &
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
81
|
- - ">="
|
68
82
|
- !ruby/object:Gem::Version
|
@@ -72,7 +86,7 @@ dependencies:
|
|
72
86
|
- 0
|
73
87
|
version: 1.8.0
|
74
88
|
type: :development
|
75
|
-
version_requirements: *
|
89
|
+
version_requirements: *id005
|
76
90
|
description: |-
|
77
91
|
Bandsintown.com API gem
|
78
92
|
|
@@ -110,6 +124,7 @@ files:
|
|
110
124
|
- spec/bandsintown/artist_spec.rb
|
111
125
|
- spec/bandsintown/base_spec.rb
|
112
126
|
- spec/bandsintown/connection_spec.rb
|
127
|
+
- spec/bandsintown/event/creation_helpers_spec.rb
|
113
128
|
- spec/bandsintown/event_spec.rb
|
114
129
|
- spec/bandsintown/venue_spec.rb
|
115
130
|
- spec/bandsintown_spec.rb
|