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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20e097fe8e19ea0378db319599e5019b1d8708b41639df28e97a8c4e7e0ca71b
4
- data.tar.gz: 533a724be8e4c60fdac1ae47372f38a41d90c90add650df9738b419dd7cc9172
3
+ metadata.gz: f2cdd341fe1a494392295da71cb4b33b7203e872036f3693915eaea98765f769
4
+ data.tar.gz: d817e88ade9214f76cbe2fae6494f3bd50cab36872a1954cd669f40d7b240158
5
5
  SHA512:
6
- metadata.gz: 0b4a4dff907cb990855d88efdbe81603c73d680bb8b1da4427490042b320c3f0559b006ae6cc97910de09d574c08112599daa313544df5563f15cd1d0c90a2fe
7
- data.tar.gz: 406e29c5e7d7159cfcd9527acb3f0df93617428e6a66db89a5847a30e8ab1cc8031ea3e5412d1abd181e0c57867540f66f1242a9a16b00daa2abdf38dd80c0ca
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
- TZInfo::Timezone.get(TIME_ZONE).local_to_utc(local) { |periods| periods.first }.utc
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
@@ -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: TZInfo::Timezone.get(TIME_ZONE).now.to_date,
35
+ from: Cinebase::London.today,
38
36
  to: from + 13
39
37
  )
40
38
  raise ArgumentError, 'to must not precede from' if to < from
@@ -1,6 +1,6 @@
1
1
  # Ruby interface for https://wtwcinemas.co.uk
2
- # @version 1.0.0
2
+ # @version 1.0.1
3
3
  module WtwUk
4
4
  # Gem version
5
- VERSION = '1.0.0'.freeze
5
+ VERSION = '1.0.1'.freeze
6
6
  end
data/lib/wtw_uk.rb CHANGED
@@ -5,7 +5,6 @@ require 'cinebase'
5
5
 
6
6
  require_relative './wtw_uk/version'
7
7
 
8
- require_relative './wtw_uk/internal/http'
9
8
  require_relative './wtw_uk/internal/website'
10
9
  require_relative './wtw_uk/internal/title_sanitizer'
11
10
  require_relative './wtw_uk/internal/parser/showtime'
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.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.7'
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.7'
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
@@ -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