ticketinghub 1.0.9 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/ticketing_hub/client.rb +2 -39
- data/lib/ticketing_hub/collection.rb +33 -7
- data/lib/ticketing_hub/option.rb +11 -0
- data/lib/ticketing_hub/order.rb +26 -0
- data/lib/ticketing_hub/request.rb +2 -2
- data/lib/ticketing_hub/resource.rb +40 -0
- data/lib/ticketing_hub/ticket.rb +26 -0
- data/lib/ticketing_hub/venue.rb +29 -0
- data/lib/ticketing_hub/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 225dfe45532dbad4af61c70461ea0b0cd5efd040
|
4
|
+
data.tar.gz: 1a74017d6e8b401a4d373c138b0ad40246609e53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a723b49870915ff804f59cfc94e73f29797f4c7b7fd31af694a2ac81397a5e4c55b2508ffdf3b6532cc2c2dec0f588f4115273037761b50601ef35f75dba0bae
|
7
|
+
data.tar.gz: 2bd3576f1d0933b53104508ed9170d808f39df332fc967a7115bebaf39a458c897462f4e07a95685a2831f8de38ea5fa1ed1252ea4e63f1726fab6eb888f5296
|
data/lib/ticketing_hub/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'connection'
|
2
2
|
require_relative 'request'
|
3
|
+
require_relative 'venue'
|
3
4
|
|
4
5
|
module TicketingHub
|
5
6
|
class Client
|
@@ -22,49 +23,11 @@ module TicketingHub
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def venues
|
25
|
-
get 'venues'
|
26
|
+
get 'venues', {}, TicketingHub::Venue
|
26
27
|
end
|
27
28
|
|
28
29
|
def user
|
29
30
|
get('user').first
|
30
31
|
end
|
31
|
-
|
32
|
-
def orders(venue_id=nil)
|
33
|
-
get "venues/#{venue_id}/orders"
|
34
|
-
end
|
35
|
-
|
36
|
-
def option(venue_id, date, time, options = {})
|
37
|
-
get("venues/#{venue_id}/option", options.merge({ date: date, time: time })).first
|
38
|
-
end
|
39
|
-
|
40
|
-
def seasons(venue_id)
|
41
|
-
get "venues/#{venue_id}/seasons"
|
42
|
-
end
|
43
|
-
|
44
|
-
def variations(venue_id)
|
45
|
-
get "venues/#{venue_id}/variations"
|
46
|
-
end
|
47
|
-
|
48
|
-
def customer_fields(venue_id, order_id, ticket_id=nil)
|
49
|
-
ticket_id.nil?? get("venues/#{venue_id}/orders/#{order_id}/fields") :
|
50
|
-
get("venues/#{venue_id}/tickets/#{ticket_id}/fields")
|
51
|
-
end
|
52
|
-
|
53
|
-
def create_order(venue_id, order_attributes)
|
54
|
-
post "venues/#{venue_id}/orders", order_attributes
|
55
|
-
end
|
56
|
-
|
57
|
-
def cancel_order(venue_id, order_id)
|
58
|
-
delete "venues/#{venue_id}/orders/#{order_id}"
|
59
|
-
end
|
60
|
-
|
61
|
-
def update_order(venue_id, order_id, order_attributes)
|
62
|
-
patch "venues/#{venue_id}/orders/#{order_id}", order_attributes
|
63
|
-
end
|
64
|
-
|
65
|
-
def confirm_order(venue_id, order_id, order_attributes = {})
|
66
|
-
update_order venue_id, order_id, order_attributes if order_attributes.any?
|
67
|
-
post "venues/#{venue_id}/orders/#{order_id}/confirm"
|
68
|
-
end
|
69
32
|
end
|
70
33
|
end
|
@@ -1,28 +1,46 @@
|
|
1
|
+
require_relative 'resource'
|
2
|
+
|
1
3
|
module TicketingHub
|
2
4
|
class Collection < Enumerator::Generator
|
5
|
+
attr_accessor :client, :path, :options, :klass
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
def initialize(client, path, options = {})
|
7
|
+
def initialize(client, path, options = {}, klass = nil)
|
7
8
|
self.client = client
|
8
9
|
self.path = path
|
9
10
|
self.options = options
|
11
|
+
self.klass = klass
|
10
12
|
|
11
13
|
super() do |yielder|
|
12
14
|
response = client.request(:get, path, options)
|
13
15
|
if response.body.is_a?(Array)
|
14
|
-
response.body.each { |value| yielder << value }
|
15
|
-
else yielder << response.body end
|
16
|
+
response.body.each { |value| yielder << _filter_value(value) }
|
17
|
+
else yielder << _filter_value(response.body) end
|
16
18
|
while next_url = links(response)['next']
|
17
19
|
response = client.request(:get, next_url, options)
|
18
|
-
response.body.each { |value| yielder << value }
|
20
|
+
response.body.each { |value| yielder << _filter_value(value) }
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
25
|
+
def limit value
|
26
|
+
options.merge! limit: value.to_i
|
27
|
+
end
|
28
|
+
|
29
|
+
def offset value
|
30
|
+
options.merge! offset: value.to_i
|
31
|
+
end
|
32
|
+
|
33
|
+
def count
|
34
|
+
client.request(:get, "#{path}/count", options).body.to_i
|
35
|
+
end
|
36
|
+
|
37
|
+
def create options = {}
|
38
|
+
_filter_value client.request(:post, "#{path}", options).body
|
39
|
+
end
|
40
|
+
|
23
41
|
def find(id=nil, options = {}, &block)
|
24
42
|
return super(&block) if block_given?
|
25
|
-
client.request(:get, "#{path}/#{id}", options).body
|
43
|
+
_filter_value client.request(:get, "#{path}/#{id}", options).body
|
26
44
|
end
|
27
45
|
|
28
46
|
def links(response)
|
@@ -33,5 +51,13 @@ module TicketingHub
|
|
33
51
|
|
34
52
|
Hash[*links.flatten]
|
35
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def _filter_value value
|
58
|
+
unless klass.nil?
|
59
|
+
return klass.new client, value, path, value.id
|
60
|
+
else value end
|
61
|
+
end
|
36
62
|
end
|
37
63
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'resource'
|
2
|
+
require_relative 'ticket'
|
3
|
+
|
4
|
+
module TicketingHub
|
5
|
+
class Order < Resource
|
6
|
+
|
7
|
+
def initialize client, values, path, id
|
8
|
+
super.tickets = tickets.map do |ticket|
|
9
|
+
Ticket.new(client, ticket, "#{path}/#{id}/tickets", ticket.id).tap do |ticket|
|
10
|
+
ticket.venue_id = self.id
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def fields
|
16
|
+
client.get "#{path}/#{id}/fields"
|
17
|
+
end
|
18
|
+
|
19
|
+
def confirm!
|
20
|
+
merge! client.post "#{path}/#{id}/confirm"
|
21
|
+
rescue TicketingHub::UnprocessableEntity => e
|
22
|
+
merge! e.response_body
|
23
|
+
raise e
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -8,8 +8,8 @@ module TicketingHub
|
|
8
8
|
request(:delete, path, options).body
|
9
9
|
end
|
10
10
|
|
11
|
-
def get(path, options={})
|
12
|
-
TicketingHub::Collection.new self, path, options
|
11
|
+
def get(path, options={}, collection_class=nil)
|
12
|
+
TicketingHub::Collection.new self, path, options, collection_class
|
13
13
|
end
|
14
14
|
|
15
15
|
def patch(path, options={})
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'hashie'
|
2
|
+
|
3
|
+
module TicketingHub
|
4
|
+
class Resource < ::Hashie::Mash
|
5
|
+
attr_accessor :client, :path, :id
|
6
|
+
|
7
|
+
def initialize(client, values, path, id)
|
8
|
+
self.client = client; self.path = path; self.id = id
|
9
|
+
super(values)
|
10
|
+
end
|
11
|
+
|
12
|
+
def update
|
13
|
+
update! attributes
|
14
|
+
return true
|
15
|
+
rescue TicketingHub::UnprocessableEntity
|
16
|
+
return false
|
17
|
+
end
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
destroy! attributes
|
21
|
+
return true
|
22
|
+
rescue TicketingHub::UnprocessableEntity
|
23
|
+
return false
|
24
|
+
end
|
25
|
+
|
26
|
+
def update! attributes
|
27
|
+
merge! client.patch("#{path}/#{id}", attributes)
|
28
|
+
rescue TicketingHub::UnprocessableEntity => e
|
29
|
+
merge! e.response_body
|
30
|
+
raise e
|
31
|
+
end
|
32
|
+
|
33
|
+
def destroy!
|
34
|
+
merge! client.delete "#{path}/#{id}"
|
35
|
+
rescue TicketingHub::UnprocessableEntity => e
|
36
|
+
merge! e.response_body
|
37
|
+
raise e
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative 'resource'
|
2
|
+
require_relative 'order'
|
3
|
+
|
4
|
+
module TicketingHub
|
5
|
+
class Ticket < Resource
|
6
|
+
|
7
|
+
def fields
|
8
|
+
client.get "#{path}/#{id}/fields"
|
9
|
+
end
|
10
|
+
|
11
|
+
def order
|
12
|
+
client.get "#{path}/#{id}/order", {}, TicketingHub::Order
|
13
|
+
end
|
14
|
+
|
15
|
+
def attended?
|
16
|
+
! attended_at.nil?
|
17
|
+
end
|
18
|
+
|
19
|
+
def attend!
|
20
|
+
merge! client.post "#{path}/#{id}/attend"
|
21
|
+
rescue TicketingHub::UnprocessableEntity => e
|
22
|
+
merge! e.response_body
|
23
|
+
raise e
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'resource'
|
2
|
+
require_relative 'option'
|
3
|
+
require_relative 'ticket'
|
4
|
+
require_relative 'order'
|
5
|
+
|
6
|
+
module TicketingHub
|
7
|
+
class Venue < Resource
|
8
|
+
|
9
|
+
def tickets date=nil, time=nil
|
10
|
+
client.get "#{path}/#{id}/tickets", { date: date, time: time }, TicketingHub::Ticket
|
11
|
+
end
|
12
|
+
|
13
|
+
def orders
|
14
|
+
client.get "#{path}/#{id}/orders", {}, TicketingHub::Order
|
15
|
+
end
|
16
|
+
|
17
|
+
def option(date, time)
|
18
|
+
client.get("#{path}/#{id}/option", { date: date, time: time }, TicketingHub::Option).first
|
19
|
+
end
|
20
|
+
|
21
|
+
def seasons
|
22
|
+
client.get "#{path}/#{id}/seasons"
|
23
|
+
end
|
24
|
+
|
25
|
+
def variations
|
26
|
+
client.get "#{path}/#{id}/variations"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ticketinghub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -111,7 +111,12 @@ files:
|
|
111
111
|
- lib/ticketing_hub/configuration.rb
|
112
112
|
- lib/ticketing_hub/connection.rb
|
113
113
|
- lib/ticketing_hub/error.rb
|
114
|
+
- lib/ticketing_hub/option.rb
|
115
|
+
- lib/ticketing_hub/order.rb
|
114
116
|
- lib/ticketing_hub/request.rb
|
117
|
+
- lib/ticketing_hub/resource.rb
|
118
|
+
- lib/ticketing_hub/ticket.rb
|
119
|
+
- lib/ticketing_hub/venue.rb
|
115
120
|
- lib/ticketing_hub/version.rb
|
116
121
|
- lib/ticketing_hub.rb
|
117
122
|
- spec/helper.rb
|