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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d5fc2744f4719e0f47441630f12f89fadbc6017
4
- data.tar.gz: 47ae409fceb08b478722167f709fd4762201bcda
3
+ metadata.gz: 225dfe45532dbad4af61c70461ea0b0cd5efd040
4
+ data.tar.gz: 1a74017d6e8b401a4d373c138b0ad40246609e53
5
5
  SHA512:
6
- metadata.gz: 44d39e9f709be8dfe65210164d04c5585b5113a010a89d86abe80e37f3908ec62ce8e7d55b1f1e043ae2cd89bbaef03cada7b5c84737f3edbb3ea6822b9fb470
7
- data.tar.gz: 78e3c602de2cac6d38365c3a2d88646aaaa23e8691223426970093898dca309dbf10b1e8090b9e14df194e8c055af735f359f64fb161702a6e8b83b023a8c1fb
6
+ metadata.gz: a723b49870915ff804f59cfc94e73f29797f4c7b7fd31af694a2ac81397a5e4c55b2508ffdf3b6532cc2c2dec0f588f4115273037761b50601ef35f75dba0bae
7
+ data.tar.gz: 2bd3576f1d0933b53104508ed9170d808f39df332fc967a7115bebaf39a458c897462f4e07a95685a2831f8de38ea5fa1ed1252ea4e63f1726fab6eb888f5296
@@ -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
- attr_accessor :client, :path, :options
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,11 @@
1
+ require_relative 'resource'
2
+ require_relative 'ticket'
3
+
4
+ module TicketingHub
5
+ class Option < Resource
6
+
7
+ def tickets
8
+ client.get 'tickets', { date: date, time: time }, TicketingHub::Ticket
9
+ end
10
+ end
11
+ 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
@@ -1,3 +1,3 @@
1
1
  module TicketingHub
2
- VERSION = '1.0.9' unless defined?(TicketingHub::VERSION)
2
+ VERSION = '1.1.0' unless defined?(TicketingHub::VERSION)
3
3
  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.9
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-07 00:00:00.000000000 Z
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