publishing_platform_api_adapters 0.5.1 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4cbccea8ae641f826ce2961ac0cc15f43276023f7626fa5ef069bf879989cdf
4
- data.tar.gz: 18d958e5143484a040340649c1709e59f43bf1fb6d92a6881c00066637affa64
3
+ metadata.gz: ba00f3fd59ac75e1c672ed3478d9db8503fbaa56ee682a4358620ff226e3cf6b
4
+ data.tar.gz: 190d8d347832fb1cab2df63a2b4dd49198e1c8fb147f4b593696755c31ae8490
5
5
  SHA512:
6
- metadata.gz: 6ecc55e99bf9b3940e3a9f58fa0068fcc121511e8e680e1dafeab3516c9cd8f8ac330b54d47c8e1264478cf689379e1a09abe755f2678b74efc4fc4a9eef5f5e
7
- data.tar.gz: 4533f2ff437bd7cda8d2c6d04b4e15dc0a40581e327ad62ffe2352cd1a14bb239db165ac9b4549fce10a4e5767c4e31202f3afaade3c2de9b48681a4d230f995
6
+ metadata.gz: a9996d745a94433034e222944d6c30cd76d70a3fff86cbe36ab6ec69ebf945f04defbf18a8d9df9e812006f73c5502dc3c01102ade2eb20bcbff576be5577585
7
+ data.tar.gz: 9ea06ebd27980708823a44525c22221fe18e9eaea4eadcf5a23cd43a46b20d6cd2176b87667bbf182e20e024eb133629225506e9729a6de30ac1c520367af032
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
- # frozen_string_literal: true
2
-
3
1
  require "bundler/gem_tasks"
2
+ require "rubocop/rake_task"
4
3
  require "rspec/core/rake_task"
5
4
 
6
5
  RSpec::Core::RakeTask.new(:spec)
6
+ RuboCop::RakeTask.new
7
7
 
8
- task default: :spec
8
+ task default: %i[rubocop spec]
@@ -198,4 +198,4 @@ module PublishingPlatformApi
198
198
  raise PublishingPlatformApi::SocketErrorException, e.message
199
199
  end
200
200
  end
201
- end
201
+ end
@@ -10,7 +10,7 @@ class PublishingPlatformApi::PublishingApi < PublishingPlatformApi::Base
10
10
  # Put a content item
11
11
  #
12
12
  # @param content_id [UUID]
13
- # @param payload [Hash] A valid content item
13
+ # @param payload [Hash] A valid content item
14
14
  def put_content(content_id, payload)
15
15
  put_json(content_url(content_id), payload)
16
16
  end
@@ -123,13 +123,13 @@ class PublishingPlatformApi::PublishingApi < PublishingPlatformApi::Base
123
123
  # }
124
124
  def get_links(content_id)
125
125
  get_json(links_url(content_id))
126
- end
126
+ end
127
127
 
128
128
  # Get expanded links
129
129
  #
130
130
  # Return the expanded links of the item.
131
131
  #
132
- # @param content_id [UUID]
132
+ # @param content_id [UUID]
133
133
  # @param with_drafts [Bool] Whether links to draft-only editions are returned, defaulting to `true`.
134
134
  # @param generate [Bool] Whether to require publishing-api to generate the expanded links, which may be slow. Defaults to `false`.
135
135
  #
@@ -155,14 +155,14 @@ class PublishingPlatformApi::PublishingApi < PublishingPlatformApi::Base
155
155
  query = query_string(params)
156
156
  validate_content_id(content_id)
157
157
  get_json("#{endpoint}/expanded-links/#{content_id}#{query}")
158
- end
158
+ end
159
159
 
160
160
  # Patch the links of a content item
161
161
  #
162
162
  # @param content_id [UUID]
163
163
  # @param params [Hash]
164
164
  # @option params [Hash] links A "links hash"
165
- # @option params [Integer] previous_version The previous version (returned by `get_links`). If this version is not the current version, the publishing-api will reject the change and return 409 Conflict. (optional)
165
+ # @option params [Integer] previous_version The previous version (returned by `get_links`). If this version is not the current version, the publishing-api will reject the change and return 409 Conflict. (optional)
166
166
  # @example
167
167
  #
168
168
  # publishing_api.patch_links(
@@ -214,7 +214,7 @@ class PublishingPlatformApi::PublishingApi < PublishingPlatformApi::Base
214
214
  end
215
215
 
216
216
  get_json("#{endpoint}/linkables?document_type=#{document_type}")
217
- end
217
+ end
218
218
 
219
219
  # Reserves a path for a publishing application
220
220
  #
@@ -278,4 +278,4 @@ private
278
278
  def validate_content_id(content_id)
279
279
  raise ArgumentError, "content_id cannot be nil" unless content_id
280
280
  end
281
- end
281
+ end
@@ -0,0 +1,63 @@
1
+ require_relative "base"
2
+
3
+ class PublishingPlatformApi::Router < PublishingPlatformApi::Base
4
+ ### Backends
5
+
6
+ def get_backend(id)
7
+ get_json("#{endpoint}/backends/#{CGI.escape(id)}")
8
+ end
9
+
10
+ def add_backend(id, url)
11
+ put_json("#{endpoint}/backends/#{CGI.escape(id)}", backend: { backend_url: url })
12
+ end
13
+
14
+ def delete_backend(id)
15
+ delete_json("#{endpoint}/backends/#{CGI.escape(id)}")
16
+ end
17
+
18
+ ### Routes
19
+
20
+ def get_route(path)
21
+ get_json("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}")
22
+ end
23
+
24
+ def add_route(path, type, backend_id)
25
+ put_json(
26
+ "#{endpoint}/routes",
27
+ route: {
28
+ incoming_path: path,
29
+ route_type: type,
30
+ handler: "backend",
31
+ backend_id:,
32
+ },
33
+ )
34
+ end
35
+
36
+ def add_redirect_route(path, type, destination, redirect_type = "permanent", options = {})
37
+ put_json(
38
+ "#{endpoint}/routes",
39
+ route: {
40
+ incoming_path: path,
41
+ route_type: type,
42
+ handler: "redirect",
43
+ redirect_to: destination,
44
+ redirect_type:,
45
+ segments_mode: options[:segments_mode],
46
+ },
47
+ )
48
+ end
49
+
50
+ def add_gone_route(path, type)
51
+ put_json(
52
+ "#{endpoint}/routes",
53
+ route: { incoming_path: path, route_type: type, handler: "gone" },
54
+ )
55
+ end
56
+
57
+ def delete_route(path, hard_delete: false)
58
+ url = "#{endpoint}/routes?incoming_path=#{CGI.escape(path)}"
59
+ url += "&hard_delete=true" if hard_delete
60
+
61
+ delete_json(url)
62
+ end
63
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PublishingPlatformApi
4
- VERSION = "0.5.1"
4
+ VERSION = "0.6.1"
5
5
  end
@@ -1,11 +1,25 @@
1
1
  require "addressable"
2
2
  require "publishing_platform_location"
3
3
  require "time"
4
- require "publishing_platform_api/publishing_api"
5
4
  require "publishing_platform_api/content_store"
5
+ require "publishing_platform_api/publishing_api"
6
+ require "publishing_platform_api/router"
6
7
 
7
8
  # @api documented
8
9
  module PublishingPlatformApi
10
+ # Creates a PublishingPlatformApi::ContentStore adapter
11
+ #
12
+ # This will set a bearer token if a CONTENT_STORE_BEARER_TOKEN environment
13
+ # variable is set
14
+ #
15
+ # @return [PublishingPlatformApi::ContentStore]
16
+ def self.content_store(options = {})
17
+ PublishingPlatformApi::ContentStore.new(
18
+ PublishingPlatformLocation.find("content-store"),
19
+ { bearer_token: ENV["CONTENT_STORE_BEARER_TOKEN"] }.merge(options),
20
+ )
21
+ end
22
+
9
23
  # Creates a PublishingPlatformApi::PublishingApi adapter
10
24
  #
11
25
  # This will set a bearer token if a PUBLISHING_API_BEARER_TOKEN environment
@@ -19,16 +33,16 @@ module PublishingPlatformApi
19
33
  )
20
34
  end
21
35
 
22
- # Creates a PublishingPlatformApi::ContentStore adapter
36
+ # Creates a PublishingPlatformApi::Router adapter for communicating with Router API
23
37
  #
24
- # This will set a bearer token if a CONTENT_STORE_BEARER_TOKEN environment
38
+ # This will set a bearer token if a ROUTER_API_BEARER_TOKEN environment
25
39
  # variable is set
26
40
  #
27
- # @return [PublishingPlatformApi::ContentStore]
28
- def self.content_store(options = {})
29
- PublishingPlatformApi::ContentStore.new(
30
- PublishingPlatformLocation.find("content-store"),
31
- { bearer_token: ENV["CONTENT_STORE_BEARER_TOKEN"] }.merge(options),
41
+ # @return [PublishingPlatformApi::Router]
42
+ def self.router(options = {})
43
+ PublishingPlatformApi::Router.new(
44
+ PublishingPlatformLocation.find("router-api"),
45
+ { bearer_token: ENV["ROUTER_API_BEARER_TOKEN"] }.merge(options),
32
46
  )
33
47
  end
34
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: publishing_platform_api_adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Publishing Platform
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-05 00:00:00.000000000 Z
11
+ date: 2024-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -113,6 +113,7 @@ files:
113
113
  - lib/publishing_platform_api/publishing_platform_headers.rb
114
114
  - lib/publishing_platform_api/railtie.rb
115
115
  - lib/publishing_platform_api/response.rb
116
+ - lib/publishing_platform_api/router.rb
116
117
  - lib/publishing_platform_api/version.rb
117
118
  - lib/publishing_platform_api_adapters.rb
118
119
  homepage:
@@ -127,14 +128,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
127
128
  requirements:
128
129
  - - ">="
129
130
  - !ruby/object:Gem::Version
130
- version: '3.0'
131
+ version: '3.1'
131
132
  required_rubygems_version: !ruby/object:Gem::Requirement
132
133
  requirements:
133
134
  - - ">="
134
135
  - !ruby/object:Gem::Version
135
136
  version: '0'
136
137
  requirements: []
137
- rubygems_version: 3.3.7
138
+ rubygems_version: 3.5.23
138
139
  signing_key:
139
140
  specification_version: 4
140
141
  summary: Adapters to work with Publishing Platform APIs