plek 4.1.0 → 5.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/plek/version.rb +1 -1
  3. data/lib/plek.rb +26 -48
  4. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1157f1b8a26836a70c428e595d27392858f6a858043dd44bfeda13314c4e7e99
4
- data.tar.gz: 7b970caacd3c079d9bd31836fbc53dee83d98da3110982f67e16d618c89e5f91
3
+ metadata.gz: e6a63e60446a37aebde2d7ecbb659286e8afa0e31da683f37652e889f32b1dfc
4
+ data.tar.gz: afd8884693b6ed5d8cf8757dbe679854f657565d3d03fd68647ade3378699cba
5
5
  SHA512:
6
- metadata.gz: bffcec46ce28fbfdc43d276ddea36fc741dca07a3db9292952d5f7717ecd0eed704a15a96c0ca223f29260b903843374e1c6e317a1e0ba8193dd332cfa07f4bd
7
- data.tar.gz: 74501f62f53fb5263e6a41d679604685ca07147599c42d48afbd9921936f18e7c7f900d163ad5255bbfbd7022f0cef8ae1551cfdd61b67deafa528afc57bb92f
6
+ metadata.gz: b398f7c452471fd8b76a3620b8d29669b91df4febfb6956acc5877f5521c8deda8d3a17ac5193dcf122972e531deb2ced1f67473cc5ac3917c42850e0833e54f
7
+ data.tar.gz: 865f7dec648f21375336fa29c7eb57789d2a4d9b1a22374e9cc635c66616a32c8a07cbba173a12245357a50f08cfa236c38b49fa3dcfa29dc4c74f468618af1c
data/lib/plek/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Plek
2
- VERSION = "4.1.0".freeze
2
+ VERSION = "5.0.0".freeze
3
3
  end
data/lib/plek.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "plek/version"
2
2
  require "uri"
3
+ require "forwardable"
3
4
 
4
5
  # Plek resolves service names to a corresponding base URL.
5
6
  #
@@ -71,7 +72,7 @@ class Plek
71
72
  # scheme (eg `//foo.example.com`)
72
73
  # @return [String] The base URL for the service.
73
74
  def find(service, options = {})
74
- name = clean_name(service)
75
+ name = valid_service_name(service)
75
76
  if (service_uri = defined_service_uri_for(name))
76
77
  return service_uri
77
78
  end
@@ -101,15 +102,6 @@ class Plek
101
102
  find(service, options.merge(external: true))
102
103
  end
103
104
 
104
- # Find the base URL for a service/application, and parse as a URI object.
105
- # This wraps #find and returns the parsed result.
106
- #
107
- # @param args see {#find}
108
- # @return [URI::HTTPS,URI::HTTP,URI::Generic] The base URL for the service
109
- def find_uri(*args)
110
- URI(find(*args))
111
- end
112
-
113
105
  # Find the base URL for assets.
114
106
  #
115
107
  # @return [String] The assets base URL.
@@ -124,51 +116,37 @@ class Plek
124
116
  env_var_or_dev_fallback("GOVUK_WEBSITE_ROOT") { find("www") }
125
117
  end
126
118
 
127
- # Find the base URL for assets.
128
- #
129
- # @return [URI::HTTPS,URI::HTTP,URI::Generic] The assets base URL.
130
- def asset_uri
131
- URI(asset_root)
132
- end
133
-
134
- # Find the base URL for the public website frontend.
135
- #
136
- # @return [URI::HTTPS,URI::HTTP,URI::Generic] The website base URL.
137
- def website_uri
138
- URI(website_root)
139
- end
140
-
141
- # TODO: clean up all references to these and then remove them.
142
119
  class << self
143
- # This alias allows calls to be made in the old style:
144
- # Plek.current.find('foo')
145
- # as well as the new style:
146
- # Plek.new.find('foo')
147
- def current(...)
148
- warn "Plek.current is deprecated and will be removed. Use Plek.new or Plek.find instead."
149
- new(...)
150
- end
151
-
152
- # Convenience wrapper. The same as calling +Plek.new.find+.
153
- # @see #find
154
- def find(*args)
155
- new.find(*args)
156
- end
157
-
158
- # Convenience wrapper. The same as calling +Plek.new.find_uri+.
159
- # @see #find_uri
160
- def find_uri(*args)
161
- new.find_uri(*args)
162
- end
120
+ extend Forwardable
121
+
122
+ # @!method find
123
+ # Convenience wrapper. The same as calling +Plek.new.find+.
124
+ # @see #find
125
+ # @return [String]
126
+ # @!method external_url_for
127
+ # Convenience wrapper. The same as calling +Plek.new.external_url_for+.
128
+ # @see #external_url_for
129
+ # @return [String]
130
+ # @!method asset_root
131
+ # Convenience wrapper. The same as calling +Plek.new.asset_root+.
132
+ # @see #asset_root
133
+ # @return [String]
134
+ # @!method website_root
135
+ # Convenience wrapper. The same as calling +Plek.new.website_root+.
136
+ # @see #website_root
137
+ # @return [String]
138
+ def_delegators :new, :find, :external_url_for, :asset_root, :website_root
163
139
  end
164
140
 
165
141
  private
166
142
 
167
143
  attr_reader :host_prefix, :unprefixable_hosts, :use_http_for_single_label_domains
168
144
 
169
- # TODO: clean up call sites throughout alphagov and then delete clean_name.
170
- def clean_name(service)
171
- service.to_s.downcase.strip.gsub(/[^a-z.-]+/, "")
145
+ def valid_service_name(name)
146
+ service_name = name.to_s
147
+ return service_name if service_name.match?(/\A[a-z1-9.-]+\z/)
148
+
149
+ raise ArgumentError, "Plek expects a service name to only contain lowercase a-z, numbers . (period) and - (dash) characters."
172
150
  end
173
151
 
174
152
  def http_domain?(domain)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plek
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-03 00:00:00.000000000 Z
11
+ date: 2022-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 4.7.0
61
+ version: 4.8.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 4.7.0
68
+ version: 4.8.0
69
69
  description: Find the right hostname for each service in an environment-dependent
70
70
  manner
71
71
  email:
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  requirements: []
100
- rubygems_version: 3.3.22
100
+ rubygems_version: 3.3.26
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: Locations for services