bandsintown 0.2.0 → 0.3.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.
@@ -1,3 +1,11 @@
1
+ == 0.3.1 2010-07-05
2
+ * Fixed bug for API methods with a blank method name in the route (events - create and artists - create), "/artists/" => "/artists"
3
+
4
+ == 0.3.0 2010-07-04
5
+ * Added Events - Cancel API method (Bandsintown::Event#cancel)
6
+ * Added Artists - Cancel Event API method (Bandsintown::Artist#cancel_event)
7
+ * Added Artists - Create API method (Bandsintown::Artist.create)
8
+
1
9
  == 0.2.0 2010-06-03
2
10
  * Added Events - Create API method (Bandsintown::Event.create)
3
11
 
@@ -149,6 +149,35 @@ For more information visit http://www.bandsintown.com/api/requests.
149
149
  :on_sale_datetime => "2010-05-01T19:30:00"
150
150
  })
151
151
 
152
+ === Cancel an event on bandsintown.com
153
+
154
+ events = Bandsintown::Event.search(:location => "San Diego, CA")
155
+ event = events.first
156
+ event.cancel
157
+
158
+
159
+ === Cancel an event on bandsintown.com for a single artist
160
+
161
+ artist = Bandsintown::Artist.new(:name => "Diamond District")
162
+ events = artist.events
163
+ event_id = events.first.bandsintown_id
164
+ artist.cancel_event(event_id)
165
+
166
+ === Create an artist on bandsintown.com with name, music brainz id, myspace url, and website
167
+
168
+ artist = Bandsintown::Artist.create({
169
+ :name => "A New Artist",
170
+ :mbid => "abcd1234-abcd-1234-abcd-12345678abcd",
171
+ :myspace_url => "http://www.myspace.com/anewartist",
172
+ :website => "http://www.a-new-artist.com"
173
+ })
174
+
175
+ === Create an artist on bandsintown.com with name only (all other parameters optional)
176
+
177
+ artist = Bandsintown::Artist.create({
178
+ :name => "A New Artist"
179
+ })
180
+
152
181
  == Links
153
182
 
154
183
  * RDoc[http://bandsintown.rubyforge.org/rdoc]
@@ -14,7 +14,7 @@ require 'bandsintown/event'
14
14
  require 'bandsintown/venue'
15
15
 
16
16
  module Bandsintown
17
- VERSION = '0.2.0'
17
+ VERSION = '0.3.1'
18
18
  class APIError < StandardError; end
19
19
  class << self
20
20
  # All Bandsintown API requests require an app_id parameter for identification.
@@ -57,6 +57,58 @@ module Bandsintown
57
57
  (@upcoming_events_count || @events.size) > 0
58
58
  end
59
59
 
60
+ #This method is used to create an artist on bandsintown.com.
61
+ #If successful, it will return a Bandsintown::Artist object with the same data as a Bandsintown::Artist.get response.
62
+ #If you attempt to create an artist that already exists, the existing artist will be returned.
63
+ #See http://www.bandsintown.com/api/requests#artists-create for more information.
64
+ #
65
+ #====options
66
+ # * :name - artist name
67
+ # * :mbid - music brainz id
68
+ # * :myspace_url - url
69
+ # * :website - url
70
+ #
71
+ #====notes
72
+ # * :name is required, all other arguments are optional.
73
+ # * :mbid is uuid format, for example : "abcd1234-abcd-1234-abcd-12345678abcd"
74
+ # * :myspace_url must be from either myspace.com or www.myspace.com
75
+ #
76
+ #====examples
77
+ #Create an artist with full data:
78
+ # Bandsintown::Artist.create(:name => "A New Artist", :mbid => "abcd1234-abcd-1234-abcd-12345678abcd", :myspace_url => "http://www.myspace.com/anewartist", :website => "http://www.a-new-artist.com")
79
+ #
80
+ #Create an artist with name only:
81
+ # Bandsintown::Artist.create(:name => "A New Artist")
82
+ #
83
+ def self.create(options)
84
+ build_from_json(self.request_and_parse(:post, "", :artist => options))
85
+ end
86
+
87
+ #This is used to cancel an event on Bandsintown for a single artist. If you want to cancel the entire event (all artists), use Bandsintown::Event#cancel.
88
+ #If successful, this method will always return a status message.
89
+ #Unless you have a trusted app_id, events added or removed through the API will need to be approved before the changes are seen live.
90
+ #Contact Bandsintown if you are often adding events and would like a trusted account.
91
+ #See http://www.bandsintown.com/api/requests#artists-cancel-event for more information.
92
+ #
93
+ #====examples:
94
+ #Cancel an artist's event with a non-trusted app_id:
95
+ # artist = Bandsintown::Artist.new(:name => "Little Brother")
96
+ # event_id = 12345
97
+ # artist.cancel_event(event_id)
98
+ # => "Event successfully cancelled (Pending Approval)"
99
+ #
100
+ #Cancel an artist's event with a trusted app_id:
101
+ # artist = Bandsintown::Artist.new(:name => "Little Brother")
102
+ # event_id = 12345
103
+ # artist.cancel_event(event_id)
104
+ # => "Event successfully cancelled"
105
+ #
106
+ def cancel_event(event_id)
107
+ raise StandardError.new("event cancellation requires a bandsintown_id") if event_id.blank?
108
+ response = self.class.request_and_parse(:post, "#{api_name}/events/#{event_id}/cancel")
109
+ response["message"]
110
+ end
111
+
60
112
  #Returns a Bandsintown::Artist object with basic information for a single artist, including the number of upcoming events.
61
113
  #Useful in determining if an artist is on tour without requesting the event data.
62
114
  #See http://www.bandsintown.com/api/requests#artists-get for more information.
@@ -7,7 +7,7 @@ module Bandsintown
7
7
  end
8
8
 
9
9
  def get(resource_path, method_path, params = {})
10
- request_url = "#{@base_url}/#{resource_path}/#{method_path}?#{encode(params.symbolize_keys)}"
10
+ request_url = File.join([@base_url, resource_path, method_path].reject(&:blank?)) + "?" + encode(params.symbolize_keys)
11
11
  begin
12
12
  RestClient.get(request_url)
13
13
  rescue RestClient::ResourceNotFound => error_response
@@ -16,7 +16,7 @@ module Bandsintown
16
16
  end
17
17
 
18
18
  def post(resource_path, method_path, body = {})
19
- request_url = "#{@base_url}/#{resource_path}/#{method_path}?#{encode({})}"
19
+ request_url = File.join([@base_url, resource_path, method_path].reject(&:blank?)) + "?" + encode({})
20
20
  begin
21
21
  RestClient.post(request_url, body.to_json, :content_type => :json, :accept => :json)
22
22
  rescue RestClient::ResourceNotFound => error_response
@@ -157,7 +157,7 @@ module Bandsintown
157
157
  end
158
158
 
159
159
  #This is used to create an event on bandsintown.com.
160
- #Unless you have a trusted app_id, events added through the API will need to be approved before they are seen live.
160
+ #Unless you have a trusted app_id, events added or removed through the API will need to be approved before the changes are seen live.
161
161
  #Contact Bandsintown if you are often adding events and would like a trusted account.
162
162
  #See http://www.bandsintown.com/api/requests#events-create for more information.
163
163
  #===options:
@@ -211,7 +211,7 @@ module Bandsintown
211
211
  :ticket_price => options[:ticket_price]
212
212
  }.reject { |k,v| v.blank? }
213
213
 
214
- response = self.request_and_parse(:post, "create", :event => event_data)
214
+ response = self.request_and_parse(:post, "", :event => event_data)
215
215
 
216
216
  if response.key?("message")
217
217
  response["message"]
@@ -220,6 +220,31 @@ module Bandsintown
220
220
  end
221
221
  end
222
222
 
223
+ #This is used to cancel an event on Bandsintown. If you want to remove a single artist from an event, use Bandsintown::Artist#cancel_event instead.
224
+ #If successful, this method will always return a status message.
225
+ #Unless you have a trusted app_id, events added or removed through the API will need to be approved before the changes are seen live.
226
+ #Contact Bandsintown if you are often adding events and would like a trusted account.
227
+ #See http://www.bandsintown.com/api/requests#events-cancel for more information.
228
+ #
229
+ #====examples:
230
+ #Cancel an event with a non-trusted app_id:
231
+ # events = Bandsintown::Event.search(:location => "San Diego, CA")
232
+ # event = events.first
233
+ # event.cancel
234
+ # => "Event successfully cancelled (Pending Approval)"
235
+ #
236
+ #Cancel an event with a trusted app_id:
237
+ # events = Bandsintown::Event.search(:location => "San Diego, CA")
238
+ # event = events.first
239
+ # event.cancel
240
+ # => "Event successfully cancelled"
241
+ #
242
+ def cancel
243
+ raise StandardError.new("event cancellation requires a bandsintown_id") if @bandsintown_id.blank?
244
+ response = self.class.request_and_parse(:post, "#{@bandsintown_id}/cancel")
245
+ response["message"]
246
+ end
247
+
223
248
  def self.resource_path
224
249
  "events"
225
250
  end
@@ -220,4 +220,43 @@ describe Bandsintown::Artist do
220
220
  end
221
221
  end
222
222
  end
223
+
224
+ describe "#cancel_event(event_id)" do
225
+ before(:each) do
226
+ @event_id = 12345
227
+ @artist = Bandsintown::Artist.new(:name => "Little Brother")
228
+ @response = { "message" => "Event successfully cancelled (pending approval)" }
229
+ Bandsintown::Artist.stub!(:request_and_parse).and_return(@response)
230
+ end
231
+ it "should request and parse a call to the BIT artists - cancel event API method using the artist's api_name and the given event_id" do
232
+ Bandsintown::Artist.should_receive(:request_and_parse).with(:post, "#{@artist.api_name}/events/#{@event_id}/cancel").and_return(@response)
233
+ @artist.cancel_event(@event_id)
234
+ end
235
+ it "should return the response message if an event was successfully cancelled" do
236
+ @artist.cancel_event(@event_id).should == @response["message"]
237
+ end
238
+ end
239
+
240
+ describe ".create(options = {})" do
241
+ before(:each) do
242
+ @options = {
243
+ :name => "A New Artist",
244
+ :myspace_url => "http://www.myspace.com/a_new_artist",
245
+ :mbid => "abcd1234-abcd-1234-5678-abcd12345678",
246
+ :website => "http://www.a-new-artist.com"
247
+ }
248
+ Bandsintown::Artist.stub!(:request_and_parse).and_return('json')
249
+ Bandsintown::Artist.stub!(:build_from_json).and_return('built artist')
250
+ end
251
+ it "should request and parse a call to the BIT artists - create API method using the supplied artist data" do
252
+ expected_params = { :artist => @options }
253
+ Bandsintown::Artist.should_receive(:request_and_parse).with(:post, "", expected_params).and_return('json')
254
+ Bandsintown::Artist.create(@options)
255
+ end
256
+ it "should return the result of Bandsintown::Artist.build_from_json with the response data" do
257
+ Bandsintown::Artist.should_receive(:build_from_json).with('json').and_return('built artist')
258
+ Bandsintown::Artist.create(@options).should == 'built artist'
259
+ end
260
+ end
261
+
223
262
  end
@@ -6,9 +6,12 @@ describe Bandsintown::Base do
6
6
  it "should be an instance of Bandsintown::Connection" do
7
7
  Bandsintown::Base.connection.class.should == Bandsintown::Connection
8
8
  end
9
- it "should be cached" do
9
+ it "should be memoized" do
10
10
  Bandsintown::Base.connection.should === Bandsintown::Base.connection
11
11
  end
12
+ it "should use http://api.bandsintown.com as the base url" do
13
+ Bandsintown::Base.connection.base_url.should == "http://api.bandsintown.com"
14
+ end
12
15
  end
13
16
 
14
17
  describe ".request(http_method, api_method, params={})" do
@@ -36,37 +36,43 @@ describe Bandsintown::Connection do
36
36
  lambda { @connection.get("", "", {}) }.should_not raise_error
37
37
  @connection.get("", "", {}).should == "error message"
38
38
  end
39
+
40
+ it "should return the correct URL format when method_path is blank (no slashes)" do
41
+ expected_url = "http://api.bandsintown.com/events?app_id=YOUR_APP_ID&format=json"
42
+ RestClient.should_receive(:get).with(expected_url).and_return("response")
43
+ @connection.get("events", "", {})
44
+ end
39
45
  end
40
46
 
41
47
  describe ".post(resource_path, method_path, body = {})" do
42
- before(:each) do
43
- @connection = Bandsintown::Connection.new(@base_url)
44
- RestClient.stub!(:post).and_return("response")
45
- @api_resource = "events"
46
- @api_method = "create"
47
- @body_params = {
48
- :event => {
49
- :artists => [{ :name => "Little Brother" }],
50
- :datetime => "2010-06-01T19:30:00",
51
- :venue => { :id => 123 }
52
- }
53
- }
54
- end
55
- it "should make a post request to the url constructed with resource path, method path, default encoded params, body converted to json, and application/json request headers" do
56
- expected_url = "http://api.bandsintown.com/events/create?app_id=YOUR_APP_ID&format=json"
57
- expected_body = @body_params.to_json
58
- expected_headers = { :content_type => :json, :accept => :json }
59
- @connection.should_receive(:encode).with({}).and_return("app_id=YOUR_APP_ID&format=json")
60
- RestClient.should_receive(:post).with(expected_url, expected_body, expected_headers).and_return("response")
61
- @connection.post(@api_resource, @api_method, @body_params).should == "response"
62
- end
63
-
64
- it "should return the API error message instead of raising an error if there was a problem with the request (404 response)" do
65
- error = RestClient::ResourceNotFound.new; error.response = "error message"
66
- RestClient.stub!(:post).and_raise(error)
67
- lambda { @connection.post(@api_resource, @api_method, @body_params) }.should_not raise_error
68
- @connection.post(@api_resource, @api_method, @body_params).should == "error message"
69
- end
48
+ before(:each) do
49
+ @connection = Bandsintown::Connection.new(@base_url)
50
+ RestClient.stub!(:post).and_return("response")
51
+ @api_resource = "events"
52
+ @api_method = ""
53
+ @body_params = {
54
+ :event => {
55
+ :artists => [{ :name => "Little Brother" }],
56
+ :datetime => "2010-06-01T19:30:00",
57
+ :venue => { :id => 123 }
58
+ }
59
+ }
60
+ end
61
+ it "should make a post request to the url constructed with resource path, method path, default encoded params, body converted to json, and application/json request headers" do
62
+ expected_url = "http://api.bandsintown.com/events?app_id=YOUR_APP_ID&format=json"
63
+ expected_body = @body_params.to_json
64
+ expected_headers = { :content_type => :json, :accept => :json }
65
+ @connection.should_receive(:encode).with({}).and_return("app_id=YOUR_APP_ID&format=json")
66
+ RestClient.should_receive(:post).with(expected_url, expected_body, expected_headers).and_return("response")
67
+ @connection.post(@api_resource, @api_method, @body_params).should == "response"
68
+ end
69
+
70
+ it "should return the API error message instead of raising an error if there was a problem with the request (404 response)" do
71
+ error = RestClient::ResourceNotFound.new; error.response = "error message"
72
+ RestClient.stub!(:post).and_raise(error)
73
+ lambda { @connection.post(@api_resource, @api_method, @body_params) }.should_not raise_error
74
+ @connection.post(@api_resource, @api_method, @body_params).should == "error message"
75
+ end
70
76
  end
71
77
 
72
78
  describe ".encode(params={})" do
@@ -190,7 +190,7 @@ describe Bandsintown::Event do
190
190
  Bandsintown::Event.stub!(:request_and_parse).and_return(@response)
191
191
  end
192
192
  it "should request and parse a call to the BIT events - create API mehod" do
193
- Bandsintown::Event.should_receive(:request_and_parse).with(:post, "create", anything).and_return(@response)
193
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "", anything).and_return(@response)
194
194
  Bandsintown::Event.create(@options)
195
195
  end
196
196
  it "should return the response message if an event was successfully submitted using a non-trusted app_id" do
@@ -214,28 +214,28 @@ describe Bandsintown::Event do
214
214
  @options = { :artists => ["Evidence", "Alchemist"] }
215
215
  Bandsintown::Event.should_receive(:parse_artists).with(@options[:artists]).and_return('parsed')
216
216
  expected_event_params = { :artists => 'parsed' }
217
- Bandsintown::Event.should_receive(:request_and_parse).with(:post, "create", :event => hash_including(expected_event_params))
217
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "", :event => hash_including(expected_event_params))
218
218
  end
219
219
 
220
220
  it "should parse the datetime using parse_datetime" do
221
221
  @options = { :datetime => "2010-06-01T20:30:00" }
222
222
  Bandsintown::Event.should_receive(:parse_datetime).with(@options[:datetime]).and_return('parsed')
223
223
  expected_event_params = { :datetime => "parsed" }
224
- Bandsintown::Event.should_receive(:request_and_parse).with(:post, "create", :event => hash_including(expected_event_params))
224
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "", :event => hash_including(expected_event_params))
225
225
  end
226
226
 
227
227
  it "should parse the on_sale_datetime using parse_datetime" do
228
228
  @options = { :on_sale_datetime => "2010-06-01T20:30:00" }
229
229
  Bandsintown::Event.should_receive(:parse_datetime).with(@options[:on_sale_datetime]).and_return('parsed')
230
230
  expected_event_params = { :on_sale_datetime => "parsed" }
231
- Bandsintown::Event.should_receive(:request_and_parse).with(:post, "create", :event => hash_including(expected_event_params))
231
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "", :event => hash_including(expected_event_params))
232
232
  end
233
233
 
234
234
  it "should parse the venue using parse_venue" do
235
235
  @options = { :venue => "data" }
236
236
  Bandsintown::Event.should_receive(:parse_venue).with("data").and_return("venue")
237
237
  expected_event_params = { :venue => "venue" }
238
- Bandsintown::Event.should_receive(:request_and_parse).with(:post, "create", :event => hash_including(expected_event_params))
238
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "", :event => hash_including(expected_event_params))
239
239
  end
240
240
 
241
241
  after(:each) do
@@ -243,4 +243,24 @@ describe Bandsintown::Event do
243
243
  end
244
244
  end
245
245
  end
246
+
247
+ describe "#cancel" do
248
+ before(:each) do
249
+ @event = Bandsintown::Event.new
250
+ @event.bandsintown_id = 12345
251
+ @response = { "message" => "Event successfully cancelled (pending approval)" }
252
+ Bandsintown::Event.stub!(:request_and_parse).and_return(@response)
253
+ end
254
+ it "should raise an error if the event does not have a bandsintown_id" do
255
+ @event.bandsintown_id = nil
256
+ lambda { @event.cancel }.should raise_error(StandardError, "event cancellation requires a bandsintown_id")
257
+ end
258
+ it "should request and parse a call to the BIT events - cancel API method using the event's bandsintown_id" do
259
+ Bandsintown::Event.should_receive(:request_and_parse).with(:post, "#{@event.bandsintown_id}/cancel").and_return(@response)
260
+ @event.cancel
261
+ end
262
+ it "should return the response message if an event was successfully cancelled" do
263
+ @event.cancel.should == @response["message"]
264
+ end
265
+ end
246
266
  end
@@ -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.2.0</a>
37
+ <a href="http://rubyforge.org/projects/bandsintown" class="numbers">0.3.1</a>
38
38
  </div>
39
39
  </div>
40
40
  <h2>Description</h2>
@@ -176,6 +176,34 @@
176
176
  <span class="symbol">:on_sale_datetime</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">2010-05-01T19:30:00</span><span class="punct">&quot;</span>
177
177
  <span class="punct">})</span>
178
178
  </pre></p>
179
+ <h3>Cancel an event on bandsintown.com</h3>
180
+ <p><pre class='syntax'>
181
+ <span class="ident">events</span> <span class="punct">=</span> <span class="constant">Bandsintown</span><span class="punct">::</span><span class="constant">Event</span><span class="punct">.</span><span class="ident">search</span><span class="punct">(</span><span class="symbol">:location</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">San Diego, CA</span><span class="punct">&quot;)</span>
182
+ <span class="ident">event</span> <span class="punct">=</span> <span class="ident">events</span><span class="punct">.</span><span class="ident">first</span>
183
+ <span class="ident">event</span><span class="punct">.</span><span class="ident">cancel</span>
184
+ </pre></p>
185
+ <h3>Cancel an event on bandsintown.com for a single artist</h3>
186
+ <p><pre class='syntax'>
187
+ <span class="ident">artist</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">=&gt;</span> <span class="punct">&quot;</span><span class="string">Diamond District</span><span class="punct">&quot;)</span>
188
+ <span class="ident">events</span> <span class="punct">=</span> <span class="ident">artist</span><span class="punct">.</span><span class="ident">events</span>
189
+ <span class="ident">event_id</span> <span class="punct">=</span> <span class="ident">events</span><span class="punct">.</span><span class="ident">first</span><span class="punct">.</span><span class="ident">bandsintown_id</span>
190
+ <span class="ident">artist</span><span class="punct">.</span><span class="ident">cancel_event</span><span class="punct">(</span><span class="ident">event_id</span><span class="punct">)</span>
191
+ </pre></p>
192
+ <h3>Create an artist on bandsintown.com with name, music brainz id, myspace url, and website</h3>
193
+ <p><pre class='syntax'>
194
+ <span class="ident">artist</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">create</span><span class="punct">({</span>
195
+ <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">A New Artist</span><span class="punct">&quot;,</span>
196
+ <span class="symbol">:mbid</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">abcd1234-abcd-1234-abcd-12345678abcd</span><span class="punct">&quot;,</span>
197
+ <span class="symbol">:myspace_url</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">http://www.myspace.com/anewartist</span><span class="punct">&quot;,</span>
198
+ <span class="symbol">:website</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">http://www.a-new-artist.com</span><span class="punct">&quot;</span>
199
+ <span class="punct">})</span>
200
+ </pre></p>
201
+ <h3>Create an artist on bandsintown.com with name only (all other parameters optional)</h3>
202
+ <p><pre class='syntax'>
203
+ <span class="ident">artist</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">create</span><span class="punct">({</span>
204
+ <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">A New Artist</span><span class="punct">&quot;</span>
205
+ <span class="punct">})</span>
206
+ </pre></p>
179
207
  <h2>Source</h2>
180
208
  <pre>git clone git://github.com/bandsintown/bandsintown.git</pre>
181
209
  <h2>Links</h2>
@@ -179,6 +179,42 @@ Bandsintown::Event.create({
179
179
  })
180
180
  </pre>
181
181
 
182
+ h3. Cancel an event on bandsintown.com
183
+
184
+ <pre syntax="ruby">
185
+ events = Bandsintown::Event.search(:location => "San Diego, CA")
186
+ event = events.first
187
+ event.cancel
188
+ </pre>
189
+
190
+ h3. Cancel an event on bandsintown.com for a single artist
191
+
192
+ <pre syntax="ruby">
193
+ artist = Bandsintown::Artist.new(:name => "Diamond District")
194
+ events = artist.events
195
+ event_id = events.first.bandsintown_id
196
+ artist.cancel_event(event_id)
197
+ </pre>
198
+
199
+ h3. Create an artist on bandsintown.com with name, music brainz id, myspace url, and website
200
+
201
+ <pre syntax="ruby">
202
+ artist = Bandsintown::Artist.create({
203
+ :name => "A New Artist",
204
+ :mbid => "abcd1234-abcd-1234-abcd-12345678abcd",
205
+ :myspace_url => "http://www.myspace.com/anewartist",
206
+ :website => "http://www.a-new-artist.com"
207
+ })
208
+ </pre>
209
+
210
+ h3. Create an artist on bandsintown.com with name only (all other parameters optional)
211
+
212
+ <pre syntax="ruby">
213
+ artist = Bandsintown::Artist.create({
214
+ :name => "A New Artist"
215
+ })
216
+ </pre>
217
+
182
218
  h2. Source
183
219
 
184
220
  <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
- - 2
8
- - 0
9
- version: 0.2.0
7
+ - 3
8
+ - 1
9
+ version: 0.3.1
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-06-03 00:00:00 -07:00
17
+ date: 2010-07-05 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -142,7 +142,7 @@ licenses: []
142
142
  post_install_message:
143
143
  rdoc_options:
144
144
  - --main
145
- - README.txt
145
+ - README.rdoc
146
146
  require_paths:
147
147
  - lib
148
148
  required_ruby_version: !ruby/object:Gem::Requirement