queue_it 1.1.7 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rbenv-gemsets +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +16 -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/url_builder.rb +2 -2
- data/lib/queue_it/version.rb +1 -1
- data/queue_it.gemspec +3 -3
- data/spec/queue_it/api/client_spec.rb +3 -3
- data/spec/queue_it/api/event_spec.rb +6 -7
- metadata +23 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 11e2e993d7d7786358079cd70de8f3e0c5937e5b17838dbf018885aac63b3aab
|
4
|
+
data.tar.gz: c96be7f3a372d1259f431fb803588a1377edee8552454572ec245c924b7d8523
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '009611414e2b920b4e3fb84a9b62fbd79957f6ba3454a966218e30c299afb051ca60afff1fa1910a852176b01e3f6d9b483b43e023913f9ec8a4ea36dd45f0e5'
|
7
|
+
data.tar.gz: 452e61cfdfd7a168d752cf5e687347c45ddbc740b751160428e605a7ff7a21115572867331ff39ecaea240cee20f7d36862c80e5e4ab2f9aaa46c347d476aecc
|
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,19 @@
|
|
1
|
+
### 2.0.2 - 2021-07-21
|
2
|
+
|
3
|
+
* Defaults changed when creating/updating a queue: CustomLayout set to dark theme, MaxNoOfRedirectsPrQueueId to 3, QueueNumberValidityInMinutes to 30.
|
4
|
+
* UseSSL parameter is no longer sent since the use of https will be enforced.
|
5
|
+
|
6
|
+
### 2.0.1 - 2021-04-26
|
7
|
+
|
8
|
+
* Updated the queue and cancel URL from `q.queue-it.net` to `customer_id.queue-it.net`.
|
9
|
+
* Updated the queue URLs to use https.
|
10
|
+
|
11
|
+
### 2.0.0 - 2020-10-29
|
12
|
+
|
13
|
+
* A customer ID is needed to create a client instance
|
14
|
+
* Always include the Customer ID in the API request URL
|
15
|
+
* Bump webmock to properly handle Ruby 2.4+
|
16
|
+
|
1
17
|
### 1.1.6 - 2017-03-15
|
2
18
|
|
3
19
|
* 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/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
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_runtime_dependency "addressable", "~> 2.3"
|
22
|
-
spec.add_runtime_dependency "faraday", "
|
23
|
-
spec.add_runtime_dependency "faraday_middleware", "
|
22
|
+
spec.add_runtime_dependency "faraday", "<= 2.0", ">= 0.9"
|
23
|
+
spec.add_runtime_dependency "faraday_middleware", "<= 2.0", ">= 0.9"
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.2"
|
27
|
-
spec.add_development_dependency "webmock", "~>
|
27
|
+
spec.add_development_dependency "webmock", "~> 3.3"
|
28
28
|
end
|
@@ -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: 2.0.2
|
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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -28,28 +28,40 @@ dependencies:
|
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "<="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
- - ">="
|
32
35
|
- !ruby/object:Gem::Version
|
33
36
|
version: '0.9'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - "<="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.0'
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: '0.9'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: faraday_middleware
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
|
-
- - "
|
51
|
+
- - "<="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.0'
|
54
|
+
- - ">="
|
46
55
|
- !ruby/object:Gem::Version
|
47
56
|
version: '0.9'
|
48
57
|
type: :runtime
|
49
58
|
prerelease: false
|
50
59
|
version_requirements: !ruby/object:Gem::Requirement
|
51
60
|
requirements:
|
52
|
-
- - "
|
61
|
+
- - "<="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '2.0'
|
64
|
+
- - ">="
|
53
65
|
- !ruby/object:Gem::Version
|
54
66
|
version: '0.9'
|
55
67
|
- !ruby/object:Gem::Dependency
|
@@ -86,14 +98,14 @@ dependencies:
|
|
86
98
|
requirements:
|
87
99
|
- - "~>"
|
88
100
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
101
|
+
version: '3.3'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
93
105
|
requirements:
|
94
106
|
- - "~>"
|
95
107
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
108
|
+
version: '3.3'
|
97
109
|
description: Gem to handle the implementation of http://queue-it.net!
|
98
110
|
email:
|
99
111
|
- development@billetto.dk
|
@@ -102,6 +114,8 @@ extensions: []
|
|
102
114
|
extra_rdoc_files: []
|
103
115
|
files:
|
104
116
|
- ".gitignore"
|
117
|
+
- ".rbenv-gemsets"
|
118
|
+
- ".ruby-version"
|
105
119
|
- CHANGELOG.md
|
106
120
|
- Gemfile
|
107
121
|
- LICENSE.txt
|
@@ -142,8 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
156
|
- !ruby/object:Gem::Version
|
143
157
|
version: '0'
|
144
158
|
requirements: []
|
145
|
-
|
146
|
-
rubygems_version: 2.6.14.4
|
159
|
+
rubygems_version: 3.1.2
|
147
160
|
signing_key:
|
148
161
|
specification_version: 4
|
149
162
|
summary: Gem to handle the implementation of http://queue-it.net
|