plek 4.1.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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