seatsio 1.0.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 +7 -0
- data/.editorconfig +14 -0
- data/.gitignore +9 -0
- data/.travis.yml +12 -0
- data/Gemfile +6 -0
- data/README.md +81 -0
- data/Rakefile +11 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/seatsio/accounts.rb +20 -0
- data/lib/seatsio/chart_reports.rb +19 -0
- data/lib/seatsio/charts.rb +124 -0
- data/lib/seatsio/domain.rb +283 -0
- data/lib/seatsio/event_reports.rb +73 -0
- data/lib/seatsio/events/change_best_available_object_status_request.rb +11 -0
- data/lib/seatsio/events/change_object_status_request.rb +30 -0
- data/lib/seatsio/events.rb +150 -0
- data/lib/seatsio/exception.rb +12 -0
- data/lib/seatsio/hold_tokens.rb +38 -0
- data/lib/seatsio/httpClient.rb +71 -0
- data/lib/seatsio/pagination/cursor.rb +97 -0
- data/lib/seatsio/subaccounts.rb +89 -0
- data/lib/seatsio/util.rb +3 -0
- data/lib/seatsio/version.rb +3 -0
- data/lib/seatsio.rb +26 -0
- data/seatsio.gemspec +29 -0
- metadata +164 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
def create_change_best_available_object_status_request(number, status, categories = nil, extra_data = nil, hold_token = nil, order_id = nil)
|
2
|
+
result = {}
|
3
|
+
best_available = {'number': number}
|
4
|
+
best_available[:categories] = categories if categories != nil
|
5
|
+
best_available[:extraData] = extra_data if extra_data != nil
|
6
|
+
result[:status] = status
|
7
|
+
result[:bestAvailable] = best_available
|
8
|
+
result[:holdToken] = hold_token if hold_token != nil
|
9
|
+
result[:orderId] = order_id if order_id != nil
|
10
|
+
result
|
11
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys)
|
2
|
+
result = {}
|
3
|
+
result[:objects] = normalize(object_or_objects)
|
4
|
+
result[:status] = status
|
5
|
+
result[:holdToken] = hold_token if hold_token != nil
|
6
|
+
result[:orderId] = order_id if order_id != nil
|
7
|
+
if event_key_or_keys.is_a? Array
|
8
|
+
result[:events] = event_key_or_keys
|
9
|
+
else
|
10
|
+
result[:events] = [event_key_or_keys]
|
11
|
+
end
|
12
|
+
|
13
|
+
result
|
14
|
+
end
|
15
|
+
|
16
|
+
def normalize(object_or_objects)
|
17
|
+
if object_or_objects.is_a? Array
|
18
|
+
if object_or_objects.length == 0
|
19
|
+
[]
|
20
|
+
end
|
21
|
+
|
22
|
+
result = []
|
23
|
+
object_or_objects.each do |object|
|
24
|
+
result << object
|
25
|
+
end
|
26
|
+
return result
|
27
|
+
|
28
|
+
end
|
29
|
+
normalize([object_or_objects])
|
30
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
require "seatsio/exception"
|
2
|
+
require "base64"
|
3
|
+
require "seatsio/httpClient"
|
4
|
+
require "seatsio/domain"
|
5
|
+
require "json"
|
6
|
+
require "cgi"
|
7
|
+
require "seatsio/domain"
|
8
|
+
require "seatsio/events/change_object_status_request"
|
9
|
+
require "seatsio/events/change_best_available_object_status_request"
|
10
|
+
|
11
|
+
module Seatsio
|
12
|
+
|
13
|
+
class EventsClient
|
14
|
+
def initialize(secret_key, base_url)
|
15
|
+
@http_client = ::Seatsio::HttpClient.new(secret_key, base_url)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
19
|
+
payload = build_event_request(chart_key: key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
|
20
|
+
response = @http_client.post("events", payload)
|
21
|
+
Domain::Event.new(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
25
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
|
26
|
+
@http_client.post("/events/#{key}", payload)
|
27
|
+
end
|
28
|
+
|
29
|
+
def update_extra_data(key:, object:, extra_data: nil)
|
30
|
+
payload = build_extra_data_request(extra_data)
|
31
|
+
@http_client.post("events/#{key}/objects/#{object}/actions/update-extra-data", payload)
|
32
|
+
end
|
33
|
+
|
34
|
+
def update_extra_datas(key:, extra_data:)
|
35
|
+
payload = build_extra_data_request(extra_data)
|
36
|
+
@http_client.post("events/#{key}/actions/update-extra-data", payload)
|
37
|
+
end
|
38
|
+
|
39
|
+
def retrieve_object_status(key:, object_key:)
|
40
|
+
url = "events/#{key}/objects/#{CGI::escape(object_key).gsub('+','%20')}"
|
41
|
+
response = @http_client.get(url)
|
42
|
+
Domain::ObjectStatus.new(response)
|
43
|
+
end
|
44
|
+
|
45
|
+
# @param [Object] event_key_or_keys
|
46
|
+
# @param [Object] object_or_objects
|
47
|
+
# @param [Object] hold_token
|
48
|
+
# @param [Object] order_id
|
49
|
+
def book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil)
|
50
|
+
self.change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::BOOKED, hold_token, order_id)
|
51
|
+
end
|
52
|
+
|
53
|
+
def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil)
|
54
|
+
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys)
|
55
|
+
request[:params] = {
|
56
|
+
'expand' => 'labels'
|
57
|
+
}
|
58
|
+
response = @http_client.post("seasons/actions/change-object-status", request)
|
59
|
+
Domain::ChangeObjectStatusResult.new(response)
|
60
|
+
end
|
61
|
+
|
62
|
+
def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil)
|
63
|
+
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id)
|
64
|
+
end
|
65
|
+
|
66
|
+
def change_best_available_object_status(key:, number:, status:, categories: nil, hold_token: nil, extra_data: nil, order_id: nil)
|
67
|
+
request = create_change_best_available_object_status_request(number, status, categories, extra_data, hold_token, order_id)
|
68
|
+
response = @http_client.post("events/#{key}/actions/change-object-status", request)
|
69
|
+
Domain::BestAvailableObjects.new(response)
|
70
|
+
end
|
71
|
+
|
72
|
+
def book_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil)
|
73
|
+
change_best_available_object_status(key: key, number: number,status: Domain::ObjectStatus::BOOKED,
|
74
|
+
categories: categories, hold_token: hold_token, order_id: order_id)
|
75
|
+
end
|
76
|
+
|
77
|
+
def hold_best_available(key:, number:, categories: nil, hold_token: nil, order_id: nil)
|
78
|
+
change_best_available_object_status(key: key, number: number, status: Domain::ObjectStatus::HELD,
|
79
|
+
categories: categories, hold_token: hold_token, order_id: order_id)
|
80
|
+
end
|
81
|
+
|
82
|
+
def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil)
|
83
|
+
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id)
|
84
|
+
end
|
85
|
+
|
86
|
+
def delete(key:)
|
87
|
+
@http_client.delete("/events/#{key}")
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
def retrieve(key:)
|
92
|
+
response = @http_client.get("events/#{key}")
|
93
|
+
Domain::Event.new(response)
|
94
|
+
end
|
95
|
+
|
96
|
+
def list
|
97
|
+
Pagination::Cursor.new(Domain::Event, 'events', @http_client)
|
98
|
+
end
|
99
|
+
|
100
|
+
def list_status_changes(key, object_id = nil)
|
101
|
+
if object_id != nil
|
102
|
+
status_changes_for_object key: key, object_id: object_id
|
103
|
+
else
|
104
|
+
Pagination::Cursor.new(Domain::StatusChange, "/events/#{key}/status-changes", @http_client)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def status_changes_for_object(key:, object_id:)
|
109
|
+
Pagination::Cursor.new(Domain::StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
110
|
+
end
|
111
|
+
|
112
|
+
def mark_as_not_for_sale(key:, objects: nil, categories: nil)
|
113
|
+
request = build_parameters_for_mark_as_sale objects: objects, categories: categories
|
114
|
+
@http_client.post("events/#{key}/actions/mark-as-not-for-sale", request)
|
115
|
+
end
|
116
|
+
|
117
|
+
def mark_everything_as_for_sale(key: nil)
|
118
|
+
@http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
|
119
|
+
end
|
120
|
+
|
121
|
+
def mark_as_for_sale(key:, objects: nil, categories: nil)
|
122
|
+
request = build_parameters_for_mark_as_sale objects: objects, categories: categories
|
123
|
+
@http_client.post("events/#{key}/actions/mark-as-for-sale", request)
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
def build_parameters_for_mark_as_sale(objects: nil, categories: nil)
|
129
|
+
request = {}
|
130
|
+
request[:objects] = objects if objects
|
131
|
+
request[:categories] = categories if categories
|
132
|
+
request
|
133
|
+
end
|
134
|
+
|
135
|
+
def build_extra_data_request(extra_data)
|
136
|
+
payload = {}
|
137
|
+
payload[:extraData] = extra_data if extra_data
|
138
|
+
payload
|
139
|
+
end
|
140
|
+
|
141
|
+
def build_event_request(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
142
|
+
result = {}
|
143
|
+
result["chartKey"] = chart_key if chart_key
|
144
|
+
result["eventKey"] = event_key if event_key
|
145
|
+
result["bookWholeTables"] = book_whole_tables if book_whole_tables != nil
|
146
|
+
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
147
|
+
result
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "seatsio/exception"
|
2
|
+
require "base64"
|
3
|
+
require "seatsio/httpClient"
|
4
|
+
require "seatsio/domain"
|
5
|
+
require "json"
|
6
|
+
require "cgi"
|
7
|
+
require "seatsio/domain"
|
8
|
+
require "seatsio/events/change_object_status_request"
|
9
|
+
|
10
|
+
module Seatsio
|
11
|
+
|
12
|
+
class HoldTokensClient
|
13
|
+
# @return [Seatsio::HoldTokensClient]
|
14
|
+
def initialize(secret_key, base_url)
|
15
|
+
@http_client = ::Seatsio::HttpClient.new(secret_key, base_url)
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(expires_in_minutes: nil)
|
19
|
+
body = {}
|
20
|
+
if expires_in_minutes
|
21
|
+
body[:expiresInMinutes] = expires_in_minutes
|
22
|
+
end
|
23
|
+
response = @http_client.post('hold-tokens', body)
|
24
|
+
Domain::HoldToken.new(response)
|
25
|
+
end
|
26
|
+
|
27
|
+
def retrieve(hold_token: nil)
|
28
|
+
response = @http_client.get("/hold-tokens/#{hold_token}")
|
29
|
+
Domain::HoldToken.new(response)
|
30
|
+
end
|
31
|
+
|
32
|
+
def expire_in_minutes(hold_token: nil, expires_in_minutes: nil)
|
33
|
+
body = {"expiresInMinutes": expires_in_minutes}
|
34
|
+
response = @http_client.post("/hold-tokens/#{hold_token}", body)
|
35
|
+
Domain::HoldToken.new(response)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require "rest-client"
|
2
|
+
require "seatsio/exception"
|
3
|
+
require "base64"
|
4
|
+
require "cgi"
|
5
|
+
require "uri"
|
6
|
+
|
7
|
+
module Seatsio
|
8
|
+
class HttpClient
|
9
|
+
def initialize(secret_key, base_url)
|
10
|
+
@secret_key = Base64.encode64(secret_key)
|
11
|
+
@base_url = base_url
|
12
|
+
end
|
13
|
+
|
14
|
+
def execute(*args)
|
15
|
+
begin
|
16
|
+
headers = {:Authorization => "Basic #{@secret_key}"}
|
17
|
+
if args[2].include? :params
|
18
|
+
headers[:params] = args[2][:params]
|
19
|
+
end
|
20
|
+
#if args[2] != nil || args[0] == :post
|
21
|
+
# headers[:params] = args[2]
|
22
|
+
#end
|
23
|
+
|
24
|
+
url = "#{@base_url}/#{args[1]}"
|
25
|
+
|
26
|
+
request_options = {method: args[0], url: url, headers: headers}
|
27
|
+
|
28
|
+
if args[0] == :post
|
29
|
+
args[2].delete :params
|
30
|
+
request_options[:payload] = args[2].to_json
|
31
|
+
end
|
32
|
+
|
33
|
+
response = RestClient::Request.execute(request_options)
|
34
|
+
|
35
|
+
# If RAW
|
36
|
+
if args[3]
|
37
|
+
return response
|
38
|
+
end
|
39
|
+
JSON.parse(response) unless response.empty?
|
40
|
+
rescue RestClient::NotFound => e
|
41
|
+
raise Exception::NotFoundException.new(e.response)
|
42
|
+
rescue RestClient::ExceptionWithResponse => e
|
43
|
+
if e.response.include? "there is no page after" || e.response.empty?
|
44
|
+
raise Exception::NoMorePagesException
|
45
|
+
end
|
46
|
+
raise Exception::SeatsioException.new(e.response)
|
47
|
+
rescue RestClient::Exceptions::Timeout
|
48
|
+
raise Exception::SeatsioException.new("Timeout ERROR")
|
49
|
+
rescue SocketError
|
50
|
+
raise Exception::SeatsioException.new("Failed to connect to backend")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_raw(endpoint, params = {})
|
55
|
+
execute(:get, endpoint, params, true)
|
56
|
+
end
|
57
|
+
|
58
|
+
def get(endpoint, params = {})
|
59
|
+
payload = {:params => params}
|
60
|
+
execute(:get, endpoint, payload)
|
61
|
+
end
|
62
|
+
|
63
|
+
def post(endpoint, payload = {})
|
64
|
+
execute(:post, endpoint, payload)
|
65
|
+
end
|
66
|
+
|
67
|
+
def delete(endpoint)
|
68
|
+
execute(:delete, endpoint, {})
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'seatsio/exception'
|
2
|
+
|
3
|
+
module Seatsio
|
4
|
+
module Pagination
|
5
|
+
# Enumerable for every Domain
|
6
|
+
class Cursor
|
7
|
+
include Enumerable
|
8
|
+
|
9
|
+
attr_reader :params, :next_page_starts_after, :previous_page_ends_before
|
10
|
+
|
11
|
+
MAX = 20
|
12
|
+
|
13
|
+
def initialize(cls, endpoint, http_client, params = {})
|
14
|
+
@cls = cls
|
15
|
+
@endpoint = endpoint
|
16
|
+
@http_client = http_client
|
17
|
+
@params = params
|
18
|
+
@collection = []
|
19
|
+
@next_page_starts_after = nil
|
20
|
+
@previous_page_ends_before = nil
|
21
|
+
@first_page = false
|
22
|
+
end
|
23
|
+
|
24
|
+
def each(start = 0)
|
25
|
+
return to_enum(:each, start) unless block_given?
|
26
|
+
|
27
|
+
Array(@collection[start..-1]).each do |element|
|
28
|
+
yield(element)
|
29
|
+
end
|
30
|
+
return unless keep_running?
|
31
|
+
return if last?
|
32
|
+
|
33
|
+
start = [@collection.size, start].max
|
34
|
+
fetch_next_page
|
35
|
+
each(start, &Proc.new)
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_query_param(key, value)
|
39
|
+
@params[key] = value
|
40
|
+
end
|
41
|
+
|
42
|
+
def first_page(limit = nil)
|
43
|
+
@first_page = true
|
44
|
+
set_query_param(:limit, limit) unless limit.nil?
|
45
|
+
self
|
46
|
+
end
|
47
|
+
|
48
|
+
def page_after(after_id = nil, limit = nil)
|
49
|
+
set_query_param(:start_after_id, after_id) unless after_id.nil?
|
50
|
+
set_query_param(:limit, limit) unless limit.nil?
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
def page_before(before_id = nil, limit = nil)
|
55
|
+
set_query_param(:end_before_id, before_id) unless before_id.nil?
|
56
|
+
set_query_param(:limit, limit) unless limit.nil?
|
57
|
+
self
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def last?
|
63
|
+
@last_response_empty || @collection.size >= MAX
|
64
|
+
end
|
65
|
+
|
66
|
+
# @return [Bool]
|
67
|
+
def keep_running?
|
68
|
+
return false if @first_page && !@collection.empty?
|
69
|
+
return false if !params[:limit].nil? && !@collection.empty?
|
70
|
+
return false if @params.include?(:end_before_id) && !@collection.empty?
|
71
|
+
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
75
|
+
def fetch_next_page
|
76
|
+
response = @http_client.get(@endpoint, @params)
|
77
|
+
|
78
|
+
if response.nil?
|
79
|
+
@last_response_empty = true
|
80
|
+
return
|
81
|
+
end
|
82
|
+
|
83
|
+
@next_page_starts_after = response['next_page_starts_after'].to_i if response['next_page_starts_after']
|
84
|
+
@previous_page_ends_before = response['previous_page_ends_before'].to_i if response['previous_page_ends_before']
|
85
|
+
items = response['items']
|
86
|
+
parsed_items = []
|
87
|
+
|
88
|
+
items.each {|item| parsed_items << @cls.new(item)}
|
89
|
+
|
90
|
+
@collection += parsed_items
|
91
|
+
set_query_param(:start_after_id, items.last['id']) unless last?
|
92
|
+
rescue Seatsio::Exception::NoMorePagesException
|
93
|
+
@last_response_empty = true
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "seatsio/exception"
|
2
|
+
require "base64"
|
3
|
+
require "seatsio/httpClient"
|
4
|
+
require "seatsio/domain"
|
5
|
+
require "json"
|
6
|
+
require "cgi"
|
7
|
+
require "seatsio/domain"
|
8
|
+
|
9
|
+
module Seatsio
|
10
|
+
class SubaccountsClient
|
11
|
+
def initialize(secret_key, base_url)
|
12
|
+
@http_client = ::Seatsio::HttpClient.new(secret_key, base_url)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create(name: nil, email: nil)
|
16
|
+
body = {}
|
17
|
+
body['name'] = name if name
|
18
|
+
body['email'] = email if email
|
19
|
+
|
20
|
+
response = @http_client.post("subaccounts", body)
|
21
|
+
Domain::Subaccount.new(response)
|
22
|
+
end
|
23
|
+
|
24
|
+
def update(id:, name: nil, email: nil)
|
25
|
+
body = {}
|
26
|
+
body['name'] = name if name
|
27
|
+
body['email'] = email if email
|
28
|
+
@http_client.post("subaccounts/#{id}", body)
|
29
|
+
end
|
30
|
+
|
31
|
+
def list
|
32
|
+
cursor
|
33
|
+
end
|
34
|
+
|
35
|
+
def active
|
36
|
+
cursor status: 'active'
|
37
|
+
end
|
38
|
+
|
39
|
+
def inactive
|
40
|
+
cursor status: 'inactive'
|
41
|
+
end
|
42
|
+
|
43
|
+
def activate(id:)
|
44
|
+
@http_client.post("/subaccounts/#{id}/actions/activate")
|
45
|
+
end
|
46
|
+
|
47
|
+
def deactivate(id:)
|
48
|
+
@http_client.post("/subaccounts/#{id}/actions/deactivate")
|
49
|
+
end
|
50
|
+
|
51
|
+
def retrieve(id:)
|
52
|
+
response = @http_client.get("/subaccounts/#{id}")
|
53
|
+
Domain::Subaccount.new(response)
|
54
|
+
end
|
55
|
+
|
56
|
+
def copy_chart_to_parent(id: nil, chart_key: nil)
|
57
|
+
response = @http_client.post("/subaccounts/#{id}/charts/#{chart_key}/actions/copy-to/parent")
|
58
|
+
Domain::Chart.new(response)
|
59
|
+
end
|
60
|
+
|
61
|
+
def copy_chart_to_subaccount(from_id: nil, to_id: nil, chart_key: nil)
|
62
|
+
response = @http_client.post("/subaccounts/#{from_id}/charts/#{chart_key}/actions/copy-to/#{to_id}")
|
63
|
+
Domain::Chart.new(response)
|
64
|
+
end
|
65
|
+
|
66
|
+
def create_with_email(email: nil, name: nil)
|
67
|
+
do_create name: name, email: email
|
68
|
+
end
|
69
|
+
|
70
|
+
def regenerate_designer_key(id:)
|
71
|
+
@http_client.post("/subaccounts/#{id}/designer-key/actions/regenerate")
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def do_create(name: nil, email: nil)
|
77
|
+
body = {}
|
78
|
+
body['name'] = name if name
|
79
|
+
body['email'] = email if email
|
80
|
+
response = @http_client.post('subaccounts', body)
|
81
|
+
Domain::Subaccount.new(response)
|
82
|
+
end
|
83
|
+
|
84
|
+
def cursor(status: nil)
|
85
|
+
endpoint = status ? "subaccounts/#{status}" : 'subaccounts'
|
86
|
+
Pagination::Cursor.new(Domain::Subaccount, endpoint, @http_client)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/lib/seatsio/util.rb
ADDED
data/lib/seatsio.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'seatsio/version'
|
2
|
+
require 'seatsio/charts'
|
3
|
+
require 'seatsio/accounts'
|
4
|
+
require 'seatsio/subaccounts'
|
5
|
+
require 'seatsio/events'
|
6
|
+
require 'seatsio/hold_tokens'
|
7
|
+
require 'seatsio/chart_reports'
|
8
|
+
require 'seatsio/event_reports'
|
9
|
+
|
10
|
+
module Seatsio
|
11
|
+
# Main Seatsio Class
|
12
|
+
class Client
|
13
|
+
attr_reader :charts, :accounts, :subaccounts, :events,
|
14
|
+
:hold_tokens, :chart_reports, :event_reports
|
15
|
+
|
16
|
+
def initialize(secret_key, base_url = 'https://api.seatsio.net')
|
17
|
+
@charts = ChartsClient.new(secret_key, base_url)
|
18
|
+
@accounts = AccountsClient.new(secret_key, base_url)
|
19
|
+
@subaccounts = SubaccountsClient.new(secret_key, base_url)
|
20
|
+
@events = EventsClient.new(secret_key, base_url)
|
21
|
+
@hold_tokens = HoldTokensClient.new(secret_key, base_url)
|
22
|
+
@chart_reports = ChartReportsClient.new(secret_key, base_url)
|
23
|
+
@event_reports = EventReportsClient.new(secret_key, base_url)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/seatsio.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "seatsio/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "seatsio"
|
8
|
+
spec.version = Seatsio::VERSION
|
9
|
+
spec.authors = ["Seats.io"]
|
10
|
+
spec.email = ["nahuel@seats.io"]
|
11
|
+
|
12
|
+
spec.summary = "the official Seats.io Ruby client library"
|
13
|
+
spec.description = "This is the official Ruby client library for the Seats.io V2 REST API"
|
14
|
+
spec.homepage = "http://seats.io"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
26
|
+
spec.add_development_dependency "rest-client", '~> 2.0', '>= 2.0.2'
|
27
|
+
spec.add_development_dependency "coveralls", "~> 0.8.22"
|
28
|
+
spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
|
29
|
+
end
|