queue_it 1.1.8 → 3.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 +4 -4
- data/.rbenv-gemsets +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +20 -0
- data/README.md +1 -1
- data/lib/queue_it/api/client.rb +5 -4
- data/lib/queue_it/api/event.rb +8 -6
- data/lib/queue_it/queueable.rb +6 -6
- data/lib/queue_it/url_builder.rb +2 -2
- data/lib/queue_it/version.rb +1 -1
- data/queue_it.gemspec +1 -1
- data/spec/queue_it/api/client_spec.rb +3 -3
- data/spec/queue_it/api/event_spec.rb +6 -7
- metadata +19 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 37fa1c47d1ae47fffa2b3bc9b78dad1a983356b232329d8016ea14a6d0a2ecd2
|
|
4
|
+
data.tar.gz: e2a72cd51b72e2da2ae74f388924e59e4c2664977d8d826d2b35d1a646f4a519
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e4f59ab64f17ce5991d321bfbd59ec9d4189a00cc820e080945e58877a8e58eeb368a533a464fe3f4a05e002d889f5ee0723905caf2760cfbd421502cdd938f3
|
|
7
|
+
data.tar.gz: 48a90881475da361a4b1446162f612419a6c56e250ebe1750c92b504b77a0c8d97f70d5d1909dc24f7bae490a1c076ed13639a3e0c8f688d75a31dbc16035275
|
data/.rbenv-gemsets
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
queue-it
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.7.1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
### 3.0.0 - 2021-07-30
|
|
2
|
+
|
|
3
|
+
* Replace session store with cookie store to prevent some users of being kicked out of the queue
|
|
4
|
+
|
|
5
|
+
### 2.0.2 - 2021-07-21
|
|
6
|
+
|
|
7
|
+
* Defaults changed when creating/updating a queue: CustomLayout set to dark theme, MaxNoOfRedirectsPrQueueId to 3, QueueNumberValidityInMinutes to 30.
|
|
8
|
+
* UseSSL parameter is no longer sent since the use of https will be enforced.
|
|
9
|
+
|
|
10
|
+
### 2.0.1 - 2021-04-26
|
|
11
|
+
|
|
12
|
+
* Updated the queue and cancel URL from `q.queue-it.net` to `customer_id.queue-it.net`.
|
|
13
|
+
* Updated the queue URLs to use https.
|
|
14
|
+
|
|
15
|
+
### 2.0.0 - 2020-10-29
|
|
16
|
+
|
|
17
|
+
* A customer ID is needed to create a client instance
|
|
18
|
+
* Always include the Customer ID in the API request URL
|
|
19
|
+
* Bump webmock to properly handle Ruby 2.4+
|
|
20
|
+
|
|
1
21
|
### 1.1.6 - 2017-03-15
|
|
2
22
|
|
|
3
23
|
* Now by default, during creation event, we support using redirect urls
|
data/README.md
CHANGED
data/lib/queue_it/api/client.rb
CHANGED
|
@@ -8,11 +8,12 @@ module QueueIt
|
|
|
8
8
|
module Api
|
|
9
9
|
class Client
|
|
10
10
|
JSON_FORMAT = "application/json".freeze
|
|
11
|
-
ENDPOINT_URL = URI("https://api2.queue-it.net/2_0/event").freeze
|
|
12
11
|
|
|
13
|
-
def initialize(api_key: nil, debug: false)
|
|
12
|
+
def initialize(customer_id, api_key: nil, debug: false)
|
|
13
|
+
self.customer_id = customer_id
|
|
14
14
|
self.api_key = api_key
|
|
15
15
|
self.debug = debug
|
|
16
|
+
self.endpoint = URI("https://#{customer_id}.api2.queue-it.net/2_0/event")
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def put(path, body)
|
|
@@ -21,11 +22,11 @@ module QueueIt
|
|
|
21
22
|
|
|
22
23
|
private
|
|
23
24
|
|
|
24
|
-
attr_accessor :api_key, :debug
|
|
25
|
+
attr_accessor :api_key, :customer_id, :debug, :endpoint
|
|
25
26
|
|
|
26
27
|
def options
|
|
27
28
|
{
|
|
28
|
-
url:
|
|
29
|
+
url: endpoint.dup,
|
|
29
30
|
headers: {
|
|
30
31
|
accept: JSON_FORMAT,
|
|
31
32
|
content_type: JSON_FORMAT,
|
data/lib/queue_it/api/event.rb
CHANGED
|
@@ -11,7 +11,7 @@ module QueueIt
|
|
|
11
11
|
self.client = client
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def create_or_update(event_id:, display_name:, start_time:, pre_queue_start_time:nil, know_user_secret_key: nil, redirect_url:, end_time: nil, description: "", event_culture_name: "en-US", time_zone: "UTC", queue_number_validity_in_minutes:
|
|
14
|
+
def create_or_update(event_id:, display_name:, start_time:, pre_queue_start_time:nil, know_user_secret_key: nil, redirect_url:, end_time: nil, description: "", event_culture_name: "en-US", time_zone: "UTC", queue_number_validity_in_minutes: 30, max_no_of_redirects: 1, custom_layout: "Default layout by Queue-it")
|
|
15
15
|
raise InvalidEventIdFormat unless valid_event_id_format?(event_id)
|
|
16
16
|
|
|
17
17
|
attributes = queue_attributes(
|
|
@@ -24,7 +24,10 @@ module QueueIt
|
|
|
24
24
|
display_name: display_name,
|
|
25
25
|
event_culture_name: event_culture_name,
|
|
26
26
|
queue_number_validity_in_minutes: queue_number_validity_in_minutes,
|
|
27
|
-
time_zone: time_zone
|
|
27
|
+
time_zone: time_zone,
|
|
28
|
+
max_no_of_redirects: max_no_of_redirects,
|
|
29
|
+
custom_layout: custom_layout
|
|
30
|
+
)
|
|
28
31
|
|
|
29
32
|
perform_request(:put, event_id, attributes)
|
|
30
33
|
end
|
|
@@ -97,7 +100,7 @@ module QueueIt
|
|
|
97
100
|
MICROSOFT_TIME_ZONE_INDEX_VALUES.fetch(time_zone, time_zone)
|
|
98
101
|
end
|
|
99
102
|
|
|
100
|
-
def queue_attributes(pre_queue_start_time:, start_time:, end_time:, know_user_secret_key:, redirect_url:, description:, display_name:, event_culture_name:, queue_number_validity_in_minutes:, time_zone:)
|
|
103
|
+
def queue_attributes(pre_queue_start_time:, start_time:, end_time:, know_user_secret_key:, redirect_url:, description:, display_name:, event_culture_name:, queue_number_validity_in_minutes:, time_zone:, max_no_of_redirects:, custom_layout:)
|
|
101
104
|
{
|
|
102
105
|
"DisplayName" => display_name,
|
|
103
106
|
"RedirectUrl" => URI(redirect_url).to_s,
|
|
@@ -107,17 +110,16 @@ module QueueIt
|
|
|
107
110
|
"EventStartTime" => format_time( utc_start_time(start_time) ),
|
|
108
111
|
"EventEndTime" => format_time( utc_end_time(start_time, end_time) ),
|
|
109
112
|
"EventCulture" => event_culture_name,
|
|
110
|
-
"MaxNoOfRedirectsPrQueueId" => "
|
|
113
|
+
"MaxNoOfRedirectsPrQueueId" => "#{max_no_of_redirects}",
|
|
111
114
|
"QueueNumberValidityInMinutes" => "#{queue_number_validity_in_minutes}",
|
|
112
115
|
"AfterEventLogic" => "RedirectUsersToTargetPage",
|
|
113
116
|
"AfterEventRedirectPage" => "",
|
|
114
|
-
"UseSSL" => "Auto",
|
|
115
117
|
"JavaScriptSupportEnabled" => "False",
|
|
116
118
|
"TargetUrlSupportEnabled" => "True",
|
|
117
119
|
"SafetyNetMode" => "Disabled",
|
|
118
120
|
"KnowUserSecurity" => "MD5Hash",
|
|
119
121
|
"KnowUserSecretKey" => know_user_secret_key,
|
|
120
|
-
"CustomLayout" =>
|
|
122
|
+
"CustomLayout" => custom_layout,
|
|
121
123
|
"XUsersInFrontOfYou" => nil,
|
|
122
124
|
"TargetUrlValidationRegex" => "",
|
|
123
125
|
"DomainAlias" => "",
|
data/lib/queue_it/queueable.rb
CHANGED
|
@@ -15,18 +15,18 @@ module QueueIt
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def queue_it_queue_id(event_id)
|
|
18
|
-
|
|
18
|
+
cookies.signed[queue_it_session_variable(event_id)].to_i
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def destroy_all_queue_it_sessions
|
|
22
22
|
session_variable_prefix = queue_it_session_variable("")
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
cookies.each do |key, _|
|
|
24
|
+
cookies.signed.delete(key) if key.starts_with?(session_variable_prefix)
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def destroy_queue_it_session(event_id)
|
|
29
|
-
|
|
29
|
+
cookies.signed.delete(queue_it_session_variable(event_id))
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def queue_it_session_variable(event_id)
|
|
@@ -37,14 +37,14 @@ module QueueIt
|
|
|
37
37
|
|
|
38
38
|
def create_or_verify_queue_it_session(secret_key, event_id, customer_id, request_url, params, current_tickets_url)
|
|
39
39
|
# If there exists a session, we return. This needs to be refactored when we start to look at the timestamp parameter
|
|
40
|
-
return if
|
|
40
|
+
return if cookies.signed[queue_it_session_variable(event_id)].present?
|
|
41
41
|
|
|
42
42
|
begin
|
|
43
43
|
queue_number = QueueIt::ExtractQueueNumber.new.(
|
|
44
44
|
secret_key: secret_key,
|
|
45
45
|
request_url: request_url,
|
|
46
46
|
request_params: params)
|
|
47
|
-
|
|
47
|
+
cookies.signed[queue_it_session_variable(event_id)] = { value: queue_number, expires: 24.hours.from_now }
|
|
48
48
|
|
|
49
49
|
# If the request URL contains queue_it params we remove them and redirect
|
|
50
50
|
# this is done to mask the params we use to create and verify the queue_it session
|
data/lib/queue_it/url_builder.rb
CHANGED
|
@@ -3,11 +3,11 @@ require 'addressable/uri'
|
|
|
3
3
|
module QueueIt
|
|
4
4
|
class UrlBuilder
|
|
5
5
|
def self.build_queue_url(customer_id, event_id, redirect_url)
|
|
6
|
-
"
|
|
6
|
+
"https://#{customer_id}.queue-it.net/?c=#{customer_id}&e=#{event_id}&t=#{CGI.escape(redirect_url)}"
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def self.build_cancel_url(customer_id, event_id, queue_id = nil)
|
|
10
|
-
"
|
|
10
|
+
"https://#{customer_id}.queue-it.net/cancel.aspx?c=#{customer_id}&e=#{event_id}&q=#{queue_id}"
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
# Removes all queue_it params from URL
|
data/lib/queue_it/version.rb
CHANGED
data/queue_it.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ require 'queue_it/api/client'
|
|
|
5
5
|
module QueueIt
|
|
6
6
|
module Api
|
|
7
7
|
describe Client do
|
|
8
|
-
subject(:client) {
|
|
8
|
+
subject(:client) { Client.new("customerid", api_key: "SECURE_KEY") }
|
|
9
9
|
|
|
10
10
|
specify "PUT data under given endpoint & path in JSON format" do
|
|
11
11
|
request_hash = { "Request" => true }
|
|
@@ -71,7 +71,7 @@ module QueueIt
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
specify "debugging mode puts to STDOUT" do
|
|
74
|
-
client = Client.new(api_key: "SECURE_KEY", debug: true)
|
|
74
|
+
client = Client.new("customerid", api_key: "SECURE_KEY", debug: true)
|
|
75
75
|
|
|
76
76
|
request_hash = { "Request" => true }
|
|
77
77
|
|
|
@@ -83,7 +83,7 @@ module QueueIt
|
|
|
83
83
|
private
|
|
84
84
|
|
|
85
85
|
def endpoint_url
|
|
86
|
-
|
|
86
|
+
"https://customerid.api2.queue-it.net/2_0/event/fancy_event"
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
def stub_request_factory(method: :put, status: 200, request_body: "{}", response_body: "{}", content_type: "application/json")
|
|
@@ -20,7 +20,7 @@ module QueueIt
|
|
|
20
20
|
let(:pre_queue_start_time) { Time.new(2015,04,28,15,25,46, "+02:00") }
|
|
21
21
|
let(:start_time) { Time.new(2015,04,28,17,25,46, "+02:00") }
|
|
22
22
|
let(:end_time) { Time.new(2015,04,28,21,25,46, "+02:00") }
|
|
23
|
-
let(:queue_number_validity_in_minutes) {
|
|
23
|
+
let(:queue_number_validity_in_minutes) { 30 }
|
|
24
24
|
|
|
25
25
|
specify "Submits proper request" do
|
|
26
26
|
expect(client).to receive(:put).with(event_id, valid_create_body).and_return(double(body:{}))
|
|
@@ -108,12 +108,12 @@ module QueueIt
|
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
specify "Request hits proper endpoint" do
|
|
111
|
-
client = Client.new(api_key: "SECURE_KEY")
|
|
111
|
+
client = Client.new("customerid", api_key: "SECURE_KEY")
|
|
112
112
|
event_adapter = Event.new(client)
|
|
113
113
|
|
|
114
114
|
body = JSON.generate(valid_create_body)
|
|
115
115
|
|
|
116
|
-
stub = stub_request(:put, "https://api2.queue-it.net/2_0/event/fancyevent")
|
|
116
|
+
stub = stub_request(:put, "https://customerid.api2.queue-it.net/2_0/event/fancyevent")
|
|
117
117
|
.with(body: body, headers: headers)
|
|
118
118
|
|
|
119
119
|
event_adapter.create_or_update(event_id: event_id,
|
|
@@ -146,7 +146,6 @@ module QueueIt
|
|
|
146
146
|
"QueueNumberValidityInMinutes" => "#{queue_number_validity_in_minutes}",
|
|
147
147
|
"AfterEventLogic" => "RedirectUsersToTargetPage",
|
|
148
148
|
"AfterEventRedirectPage" => "",
|
|
149
|
-
"UseSSL" => "Auto",
|
|
150
149
|
"JavaScriptSupportEnabled" => "False",
|
|
151
150
|
"TargetUrlSupportEnabled" => "True",
|
|
152
151
|
"SafetyNetMode" => "Disabled",
|
|
@@ -165,13 +164,13 @@ module QueueIt
|
|
|
165
164
|
end
|
|
166
165
|
|
|
167
166
|
context "#set_speed" do
|
|
168
|
-
let(:client) { Client.new(api_key: "SECURE_KEY") }
|
|
167
|
+
let(:client) { Client.new("customerid", api_key: "SECURE_KEY") }
|
|
169
168
|
let(:max_redirects_per_minute) { 15 }
|
|
170
169
|
|
|
171
170
|
specify "Proper speed value is set" do
|
|
172
171
|
body = { "MaxRedirectsPerMinute" => "15" }
|
|
173
172
|
|
|
174
|
-
stub = stub_request(:put, "https://api2.queue-it.net/2_0/event/fancyevent/queue/speed")
|
|
173
|
+
stub = stub_request(:put, "https://customerid.api2.queue-it.net/2_0/event/fancyevent/queue/speed")
|
|
175
174
|
.with(body: body, headers: headers)
|
|
176
175
|
|
|
177
176
|
event_adapter.set_speed(event_id: event_id, max_redirects_per_minute: max_redirects_per_minute)
|
|
@@ -182,7 +181,7 @@ module QueueIt
|
|
|
182
181
|
specify "Speed must be greater than 5 so we send at least 5" do
|
|
183
182
|
expected_body = { "MaxRedirectsPerMinute" => "5" }
|
|
184
183
|
|
|
185
|
-
stub = stub_request(:put, "https://api2.queue-it.net/2_0/event/fancyevent/queue/speed")
|
|
184
|
+
stub = stub_request(:put, "https://customerid.api2.queue-it.net/2_0/event/fancyevent/queue/speed")
|
|
186
185
|
.with(body: expected_body, headers: headers)
|
|
187
186
|
|
|
188
187
|
event_adapter.set_speed(event_id: event_id, max_redirects_per_minute: 1)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: queue_it
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Billetto
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: addressable
|
|
@@ -28,42 +28,42 @@ dependencies:
|
|
|
28
28
|
name: faraday
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.9'
|
|
34
31
|
- - "<="
|
|
35
32
|
- !ruby/object:Gem::Version
|
|
36
33
|
version: '2.0'
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '0.9'
|
|
37
37
|
type: :runtime
|
|
38
38
|
prerelease: false
|
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
40
|
requirements:
|
|
41
|
-
- - ">="
|
|
42
|
-
- !ruby/object:Gem::Version
|
|
43
|
-
version: '0.9'
|
|
44
41
|
- - "<="
|
|
45
42
|
- !ruby/object:Gem::Version
|
|
46
43
|
version: '2.0'
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0.9'
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: faraday_middleware
|
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
|
-
- - ">="
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0.9'
|
|
54
51
|
- - "<="
|
|
55
52
|
- !ruby/object:Gem::Version
|
|
56
53
|
version: '2.0'
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: '0.9'
|
|
57
57
|
type: :runtime
|
|
58
58
|
prerelease: false
|
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
60
60
|
requirements:
|
|
61
|
-
- - ">="
|
|
62
|
-
- !ruby/object:Gem::Version
|
|
63
|
-
version: '0.9'
|
|
64
61
|
- - "<="
|
|
65
62
|
- !ruby/object:Gem::Version
|
|
66
63
|
version: '2.0'
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0.9'
|
|
67
67
|
- !ruby/object:Gem::Dependency
|
|
68
68
|
name: bundler
|
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -98,14 +98,14 @@ dependencies:
|
|
|
98
98
|
requirements:
|
|
99
99
|
- - "~>"
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: '
|
|
101
|
+
version: '3.3'
|
|
102
102
|
type: :development
|
|
103
103
|
prerelease: false
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements:
|
|
106
106
|
- - "~>"
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
|
-
version: '
|
|
108
|
+
version: '3.3'
|
|
109
109
|
description: Gem to handle the implementation of http://queue-it.net!
|
|
110
110
|
email:
|
|
111
111
|
- development@billetto.dk
|
|
@@ -114,6 +114,8 @@ extensions: []
|
|
|
114
114
|
extra_rdoc_files: []
|
|
115
115
|
files:
|
|
116
116
|
- ".gitignore"
|
|
117
|
+
- ".rbenv-gemsets"
|
|
118
|
+
- ".ruby-version"
|
|
117
119
|
- CHANGELOG.md
|
|
118
120
|
- Gemfile
|
|
119
121
|
- LICENSE.txt
|
|
@@ -154,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
154
156
|
- !ruby/object:Gem::Version
|
|
155
157
|
version: '0'
|
|
156
158
|
requirements: []
|
|
157
|
-
rubygems_version: 3.
|
|
159
|
+
rubygems_version: 3.1.2
|
|
158
160
|
signing_key:
|
|
159
161
|
specification_version: 4
|
|
160
162
|
summary: Gem to handle the implementation of http://queue-it.net
|