wtw_uk 1.0.0 → 1.0.1
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 +9 -0
- data/lib/wtw_uk/internal/parser/showtime.rb +1 -2
- data/lib/wtw_uk/internal/website.rb +5 -3
- data/lib/wtw_uk/performance.rb +1 -3
- data/lib/wtw_uk/version.rb +2 -2
- data/lib/wtw_uk.rb +0 -1
- metadata +3 -4
- data/lib/wtw_uk/internal/http.rb +0 -41
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f2cdd341fe1a494392295da71cb4b33b7203e872036f3693915eaea98765f769
|
|
4
|
+
data.tar.gz: d817e88ade9214f76cbe2fae6494f3bd50cab36872a1954cd669f40d7b240158
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5cafeb98b9646fcd1884113fc175dedc4d9553f8aa6bf0d5c53287393edb4d40ad908141b47326345870d94045c0e0f7e28a00efa84192a87b672999976adbf5
|
|
7
|
+
data.tar.gz: f6ac081804beaafe3f5774c141860a409e69e9899dc9a32630bf5b0a9def957375ef6016f0ff4cfca213be1a5eac74c23967d68e15e1c6a0be5b1c95d9faf65f
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
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
|
+
## [1.0.1] - 2026-11-02
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Requests and London times use cinebase 5.8's `Cinebase::Http` and `Cinebase::London`.
|
|
9
|
+
- HTTP errors read "HTTP error 500 from wtwcinemas.co.uk" instead of "WTW Cinemas HTTP error 500".
|
|
10
|
+
|
|
11
|
+
### Removed
|
|
12
|
+
- `WtwUk::Performance::TIME_ZONE`, now unused.
|
|
13
|
+
|
|
5
14
|
## [1.0.0] - 2026-11-02
|
|
6
15
|
|
|
7
16
|
### Added
|
|
@@ -35,7 +35,6 @@ module WtwUk
|
|
|
35
35
|
# Venues differ over hyphens and en dashes in the same title
|
|
36
36
|
EN_DASH = ' – '
|
|
37
37
|
LANGUAGE = /\((#{Cinebase::TitleSanitizer::LANGUAGES.join('|')})\)/i
|
|
38
|
-
TIME_ZONE = 'Europe/London'
|
|
39
38
|
|
|
40
39
|
# @return [Date] the local date of the showtime
|
|
41
40
|
attr_reader :date
|
|
@@ -76,7 +75,7 @@ module WtwUk
|
|
|
76
75
|
def starting_at
|
|
77
76
|
hour, minute = @markup.match(START).captures.map(&:to_i)
|
|
78
77
|
local = Time.utc(@date.year, @date.month, @date.day, hour, minute)
|
|
79
|
-
|
|
78
|
+
Cinebase::London.utc(local)
|
|
80
79
|
end
|
|
81
80
|
|
|
82
81
|
def variant
|
|
@@ -7,8 +7,6 @@ module WtwUk
|
|
|
7
7
|
# Reads WTW's WordPress website, built on Jacro's cinema plugin, with a
|
|
8
8
|
# subsite for each venue. No token is needed.
|
|
9
9
|
class Website
|
|
10
|
-
include Http
|
|
11
|
-
|
|
12
10
|
HOME = 'https://wtwcinemas.co.uk'
|
|
13
11
|
# The what's on page's request when a date is chosen
|
|
14
12
|
ACTION = 'jacro_filter_result'
|
|
@@ -16,13 +14,17 @@ module WtwUk
|
|
|
16
14
|
ALL_DATES = 'moredates'
|
|
17
15
|
FILM_TYPE = 'Now Showing'
|
|
18
16
|
|
|
17
|
+
def initialize
|
|
18
|
+
@http = Cinebase::Http.new
|
|
19
|
+
end
|
|
20
|
+
|
|
19
21
|
# @param [String] path the venue's subsite, e.g. 'truro'
|
|
20
22
|
# @param [String] location Jacro's cinema id for the venue, e.g. '2'
|
|
21
23
|
# @return [String] every film the venue has on sale, each with every
|
|
22
24
|
# showtime under date headings, however far ahead
|
|
23
25
|
def programme(path, location)
|
|
24
26
|
form = { 'action' => ACTION, 'film_date' => ALL_DATES, 'film_type' => FILM_TYPE, 'cinema_id' => location }
|
|
25
|
-
JSON.parse(post("#{HOME}/#{path}/wp-admin/admin-ajax.php", form)).fetch('html', '').to_s
|
|
27
|
+
JSON.parse(@http.post("#{HOME}/#{path}/wp-admin/admin-ajax.php", form: form)).fetch('html', '').to_s
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
end
|
data/lib/wtw_uk/performance.rb
CHANGED
|
@@ -24,8 +24,6 @@ module WtwUk
|
|
|
24
24
|
# @option options [String] :language (nil) audio language, e.g. 'Hindi'
|
|
25
25
|
# @option options [Time] :starting_at listed start time of the performance
|
|
26
26
|
|
|
27
|
-
TIME_ZONE = 'Europe/London'.freeze
|
|
28
|
-
|
|
29
27
|
# Performances within an inclusive range of showing dates, from one
|
|
30
28
|
# request: the venue's programme holds every advertised date.
|
|
31
29
|
# @param [String] cinema_id the venue's TapOS site code, e.g. 'PLATRU'
|
|
@@ -34,7 +32,7 @@ module WtwUk
|
|
|
34
32
|
# @return [Array<WtwUk::Performance>]
|
|
35
33
|
def self.at(
|
|
36
34
|
cinema_id,
|
|
37
|
-
from:
|
|
35
|
+
from: Cinebase::London.today,
|
|
38
36
|
to: from + 13
|
|
39
37
|
)
|
|
40
38
|
raise ArgumentError, 'to must not precede from' if to < from
|
data/lib/wtw_uk/version.rb
CHANGED
data/lib/wtw_uk.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wtw_uk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andy Croll
|
|
@@ -99,14 +99,14 @@ dependencies:
|
|
|
99
99
|
requirements:
|
|
100
100
|
- - "~>"
|
|
101
101
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '5.
|
|
102
|
+
version: '5.8'
|
|
103
103
|
type: :runtime
|
|
104
104
|
prerelease: false
|
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
106
|
requirements:
|
|
107
107
|
- - "~>"
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '5.
|
|
109
|
+
version: '5.8'
|
|
110
110
|
description: Pull movie & cinema information from the WTW Cinemas website
|
|
111
111
|
email:
|
|
112
112
|
- andy@goodscary.com
|
|
@@ -120,7 +120,6 @@ files:
|
|
|
120
120
|
- README.md
|
|
121
121
|
- lib/wtw_uk.rb
|
|
122
122
|
- lib/wtw_uk/cinema.rb
|
|
123
|
-
- lib/wtw_uk/internal/http.rb
|
|
124
123
|
- lib/wtw_uk/internal/parser/programme.rb
|
|
125
124
|
- lib/wtw_uk/internal/parser/showtime.rb
|
|
126
125
|
- lib/wtw_uk/internal/title_sanitizer.rb
|
data/lib/wtw_uk/internal/http.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'net/http'
|
|
4
|
-
|
|
5
|
-
module WtwUk
|
|
6
|
-
# Internal utility classes: Do not use
|
|
7
|
-
# @api private
|
|
8
|
-
module Internal
|
|
9
|
-
# Requests to wtwcinemas.co.uk
|
|
10
|
-
module Http
|
|
11
|
-
RETRIES = 2
|
|
12
|
-
TRANSIENT_ERRORS = [
|
|
13
|
-
EOFError, Errno::ECONNRESET, Errno::ECONNREFUSED, Net::OpenTimeout, Net::ReadTimeout, OpenSSL::SSL::SSLError
|
|
14
|
-
].freeze
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
def post(url, form)
|
|
19
|
-
uri = URI(url)
|
|
20
|
-
request = Net::HTTP::Post.new(uri)
|
|
21
|
-
request.set_form_data(form)
|
|
22
|
-
attempts = 0
|
|
23
|
-
begin
|
|
24
|
-
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, open_timeout: 10, read_timeout: 30) do |http|
|
|
25
|
-
http.request(request)
|
|
26
|
-
end
|
|
27
|
-
rescue *TRANSIENT_ERRORS
|
|
28
|
-
attempts += 1
|
|
29
|
-
raise if attempts > RETRIES
|
|
30
|
-
|
|
31
|
-
sleep(attempts)
|
|
32
|
-
retry
|
|
33
|
-
end
|
|
34
|
-
# Omit response bodies from errors, and never follow redirects.
|
|
35
|
-
raise "WTW Cinemas HTTP error #{response.code}" unless response.is_a?(Net::HTTPSuccess)
|
|
36
|
-
|
|
37
|
-
String.new(response.body, encoding: Encoding::UTF_8)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|