ticketinghub 1.0.9 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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