cineworld_uk 4.3.1-aarch64-linux-gnu → 4.3.2-aarch64-linux-gnu
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/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/cineworld_uk.gemspec +1 -1
- data/lib/cineworld_uk/internal/api_response.rb +11 -2
- data/lib/cineworld_uk/performance.rb +5 -1
- data/lib/cineworld_uk/version.rb +2 -2
- data/test/lib/cineworld_uk/internal/api_response_test.rb +39 -0
- data/test/support/vista_fixtures.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 14cb5242f05eeed5d33d552343b6e8776c0c503dcf5ffc160da8c27a12f64f7e
|
|
4
|
+
data.tar.gz: 15f50f8493be63748390c5511bc8d9def8ce730a67c79e07f53df602f89f64cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 700a1af26d3110e3b2b920144280a53d2892390ba7e08d87e268b8ca54e8e79e327e0dfd7a2b02c136a554f2d0225966e9ffb4a18d3bb843f6b9e7815d5eec24
|
|
7
|
+
data.tar.gz: b6a2b40e8b5f0df0a12f3c357245ef150d87042b0131ed350b754e7d227b9141d3e794318cef2e6804b5052c9b7c48e80b10d094424c4ea2e007f2465b0cfbcb
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
+
## 4.3.2 - 2026-10-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Reuse one Vista client, and so one kept-alive connection, per thread instead of opening a TLS connection for every request. Requires cinebase 5.5. A cinema day now takes about 0.19s rather than 0.37s.
|
|
9
|
+
|
|
5
10
|
## 4.3.1 - 2026-10-22
|
|
6
11
|
|
|
7
12
|
### Fixed
|
data/README.md
CHANGED
|
@@ -229,7 +229,7 @@ To build and check just one platform on a matching host:
|
|
|
229
229
|
|
|
230
230
|
```sh
|
|
231
231
|
bundle exec rake 'package:native[x86_64-linux-gnu]'
|
|
232
|
-
CINEWORLD_PACKAGE=pkg/cineworld_uk-4.3.
|
|
232
|
+
CINEWORLD_PACKAGE=pkg/cineworld_uk-4.3.2-x86_64-linux-gnu.gem bundle exec ruby test/package_test.rb
|
|
233
233
|
```
|
|
234
234
|
|
|
235
235
|
Native packaging downloads pinned upstream archives at **build time**, verifies
|
data/cineworld_uk.gemspec
CHANGED
|
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
spec.add_development_dependency 'simplecov', '< 1'
|
|
26
26
|
spec.add_development_dependency 'webmock'
|
|
27
27
|
|
|
28
|
-
spec.add_runtime_dependency 'cinebase', '~> 5.
|
|
28
|
+
spec.add_runtime_dependency 'cinebase', '~> 5.5'
|
|
29
29
|
spec.add_runtime_dependency 'nokogiri', '>= 1.11'
|
|
30
30
|
end
|
|
@@ -86,8 +86,17 @@ module CineworldUk
|
|
|
86
86
|
private
|
|
87
87
|
|
|
88
88
|
def fetch(path, query = {})
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
client.get(path, query)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# One client keeps one connection open, so reuse it until the token changes.
|
|
93
|
+
def client
|
|
94
|
+
token = CineworldUk.token
|
|
95
|
+
if @client.nil? || @client_token != token
|
|
96
|
+
@client_token = token
|
|
97
|
+
@client = Cinebase::Vista::Client.new(base_url: BASE_URL, region_code: "GB", token: token)
|
|
98
|
+
end
|
|
99
|
+
@client
|
|
91
100
|
end
|
|
92
101
|
end
|
|
93
102
|
end
|
|
@@ -56,9 +56,13 @@ module CineworldUk
|
|
|
56
56
|
|
|
57
57
|
# private
|
|
58
58
|
|
|
59
|
+
API = :cineworld_uk_performance_api
|
|
60
|
+
|
|
59
61
|
# @api private
|
|
62
|
+
# One API, and so one kept-alive connection, per thread: job runners
|
|
63
|
+
# import several cinemas at once.
|
|
60
64
|
def self.api
|
|
61
|
-
|
|
65
|
+
Thread.current[API] ||= Internal::ApiResponse.new
|
|
62
66
|
end
|
|
63
67
|
private_class_method :api
|
|
64
68
|
|
data/lib/cineworld_uk/version.rb
CHANGED
|
@@ -14,6 +14,45 @@ class CineworldUk::Internal::ApiResponseTest < Minitest::Test
|
|
|
14
14
|
super
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
def test_reuses_one_client_while_the_token_holds
|
|
18
|
+
stub_request(:get, "#{BASE_URL}sites").to_return(body: '{"sites":[]}')
|
|
19
|
+
api = CineworldUk::Internal::ApiResponse.new
|
|
20
|
+
|
|
21
|
+
clients = count_clients { 3.times { api.cinema_list } }
|
|
22
|
+
|
|
23
|
+
assert_equal 1, clients
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_builds_a_new_client_for_a_new_token
|
|
27
|
+
stub_request(:get, "#{BASE_URL}sites").to_return(body: '{"sites":[]}')
|
|
28
|
+
api = CineworldUk::Internal::ApiResponse.new
|
|
29
|
+
|
|
30
|
+
clients = count_clients do
|
|
31
|
+
api.cinema_list
|
|
32
|
+
CineworldUk.token = "renewed-token"
|
|
33
|
+
api.cinema_list
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
assert_equal 2, clients
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_each_thread_has_its_own_performance_api
|
|
40
|
+
main = CineworldUk::Performance.send(:api)
|
|
41
|
+
|
|
42
|
+
other = Thread.new { CineworldUk::Performance.send(:api) }.value
|
|
43
|
+
|
|
44
|
+
assert_same main, CineworldUk::Performance.send(:api)
|
|
45
|
+
refute_same main, other
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def count_clients
|
|
49
|
+
clients = 0
|
|
50
|
+
original = Cinebase::Vista::Client.method(:new)
|
|
51
|
+
counting = ->(**options) { clients += 1; original.call(**options) }
|
|
52
|
+
Cinebase::Vista::Client.stub(:new, counting) { yield }
|
|
53
|
+
clients
|
|
54
|
+
end
|
|
55
|
+
|
|
17
56
|
def test_rejects_missing_token
|
|
18
57
|
CineworldUk.token = nil
|
|
19
58
|
|
|
@@ -53,6 +53,7 @@ module Support
|
|
|
53
53
|
[CineworldUk::Cinema, CineworldUk::Performance].each do |klass|
|
|
54
54
|
klass.instance_variables.each { |name| klass.remove_instance_variable(name) }
|
|
55
55
|
end
|
|
56
|
+
Thread.current[CineworldUk::Performance::API] = nil if defined?(CineworldUk::Performance::API)
|
|
56
57
|
end
|
|
57
58
|
end
|
|
58
59
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cineworld_uk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.3.
|
|
4
|
+
version: 4.3.2
|
|
5
5
|
platform: aarch64-linux-gnu
|
|
6
6
|
authors:
|
|
7
7
|
- Andy Croll
|
|
@@ -113,14 +113,14 @@ dependencies:
|
|
|
113
113
|
requirements:
|
|
114
114
|
- - "~>"
|
|
115
115
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '5.
|
|
116
|
+
version: '5.5'
|
|
117
117
|
type: :runtime
|
|
118
118
|
prerelease: false
|
|
119
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
120
120
|
requirements:
|
|
121
121
|
- - "~>"
|
|
122
122
|
- !ruby/object:Gem::Version
|
|
123
|
-
version: '5.
|
|
123
|
+
version: '5.5'
|
|
124
124
|
- !ruby/object:Gem::Dependency
|
|
125
125
|
name: nokogiri
|
|
126
126
|
requirement: !ruby/object:Gem::Requirement
|