content_block_tools 1.5.1 → 1.6.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: c915d105c0d5c7ec20f90a8e697bdbfa6fcc1b0379eb13ff03cc1185e49e326d
4
- data.tar.gz: 4cd037fefbf68fbfff42a6149b159b8a1054b3ca1d396c291390f8b4b0b72806
3
+ metadata.gz: ada84776869d31e963dd84b2c81e612641e4f9d89725525fcce126f5d30c83ca
4
+ data.tar.gz: 0a02bda2f0661cbd056aca4fe97d0c9bfe5db1ea8ba6d08086192d4eceadf55c
5
5
  SHA512:
6
- metadata.gz: a590e3fbbdbe0a8d1fa23971bf6db5f6eb02fee0b7dd372df143fa2d17991612c42d5f98364c5ceb137d240c5efb23da63cc863828b47ed38c0637403890f974
7
- data.tar.gz: 97c88d5c7773b6cc8672b6f48ebf71f7acf3f9d3b79c96b0fa4a2064ed404c5ecd4b75064edc70776ad845c3a3c18bdefc5a51f95cc9a3ac9b8500d04ee9bb5e
6
+ metadata.gz: 753f49592ddd8c25daafcb90ff7eea44b378e815a1fc9b363f9ca91de98543605d967966f5801a9472759f5105824f9d1000cad59e1ab638c1f5edd512418ea1
7
+ data.tar.gz: 0e96c19771c1708e12abeca733fd5ba39c3061266b76e2ea285bddb9a30e57c01b47bbee416dc45f7cbf97c117ff0beeaa49cea4dbfac94e59eb652dbe790c0d
@@ -46,6 +46,38 @@ module ContentBlockTools
46
46
 
47
47
  attr_reader :content_id, :title, :embed_code
48
48
 
49
+ # Creates a ContentBlock instance from an embed code string by fetching
50
+ # the content item data from the Content Store API.
51
+ #
52
+ # @param embed_code [String] The embed code string to parse and fetch content for
53
+ # @example
54
+ # ContentBlock.from_embed_code("{{embed:content_block_pension:2b92cade-549c-4449-9796-e7a3957f3a86}}")
55
+ #
56
+ # @return [ContentBlock] A new ContentBlock instance populated with data from the Content Store
57
+ #
58
+ # @raise [ContentBlockTools::InvalidEmbedCodeError] if the embed code format is invalid
59
+ # @raise [GdsApi::HTTPErrorResponse] if the API request fails
60
+ #
61
+ # @example Create a ContentBlock from an embed code
62
+ # embed_code = "{{embed:content_block_email:123e4567-e89b-12d3-a456-426614174000}}"
63
+ # content_block = ContentBlock.from_embed_code(embed_code)
64
+ # content_block.title #=> "Contact Email"
65
+ # content_block.document_type #=> "email"
66
+ #
67
+ # @see ContentBlockReference.from_string
68
+ # @see GdsApi.content_store
69
+ def self.from_embed_code(embed_code)
70
+ reference = ContentBlockReference.from_string(embed_code)
71
+ api_response = GdsApi.content_store.content_item(reference.content_store_identifier)
72
+ new(
73
+ content_id: api_response["content_id"],
74
+ title: api_response["title"],
75
+ document_type: api_response["document_type"],
76
+ details: api_response["details"],
77
+ embed_code:,
78
+ )
79
+ end
80
+
49
81
  def initialize(content_id:, title:, document_type:, details:, embed_code:)
50
82
  @content_id = content_id
51
83
  @title = title
@@ -45,6 +45,21 @@ module ContentBlockTools
45
45
  !identifier.match?(UUID_REGEX)
46
46
  end
47
47
 
48
+ # Returns the content store path for this content block reference
49
+ #
50
+ # Constructs a path used to identify and retrieve the content block from the content store.
51
+ # The path follows the format `/content-blocks/{document_type}/{identifier}`.
52
+ #
53
+ # @example
54
+ # reference = ContentBlockReference.new(document_type: "content_block_contact", identifier: "some-slug", embed_code: "...")
55
+ # reference.content_store_identifier
56
+ # #=> "/content-blocks/content_block_contact/some-slug"
57
+ #
58
+ # @return [String] the content store path for this content block
59
+ def content_store_identifier
60
+ "/content-blocks/#{document_type}/#{identifier}"
61
+ end
62
+
48
63
  class << self
49
64
  # Finds all content block references within a document, using `ContentBlockReference::EMBED_REGEX`
50
65
  # to scan through the document
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContentBlockTools
4
- VERSION = "1.5.1"
4
+ VERSION = "1.6.1"
5
5
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "action_view"
4
4
  require "uri"
5
+ require "gds-api-adapters"
5
6
  require "govspeak"
6
7
 
7
8
  require "content_block_tools/helpers/govspeak"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: content_block_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 13.3.0
18
+ version: 13.3.1
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 13.3.0
25
+ version: 13.3.1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec-html-matchers
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -88,7 +88,7 @@ dependencies:
88
88
  version: '6'
89
89
  - - "<"
90
90
  - !ruby/object:Gem::Version
91
- version: 8.0.4
91
+ version: 8.1.2
92
92
  type: :runtime
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
@@ -98,7 +98,21 @@ dependencies:
98
98
  version: '6'
99
99
  - - "<"
100
100
  - !ruby/object:Gem::Version
101
- version: 8.0.4
101
+ version: 8.1.2
102
+ - !ruby/object:Gem::Dependency
103
+ name: gds-api-adapters
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 101.0.0
109
+ type: :runtime
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: 101.0.0
102
116
  - !ruby/object:Gem::Dependency
103
117
  name: govspeak
104
118
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +136,7 @@ dependencies:
122
136
  version: '6'
123
137
  - - "<"
124
138
  - !ruby/object:Gem::Version
125
- version: 8.0.4
139
+ version: 8.1.2
126
140
  type: :runtime
127
141
  prerelease: false
128
142
  version_requirements: !ruby/object:Gem::Requirement
@@ -132,7 +146,7 @@ dependencies:
132
146
  version: '6'
133
147
  - - "<"
134
148
  - !ruby/object:Gem::Version
135
- version: 8.0.4
149
+ version: 8.1.2
136
150
  - !ruby/object:Gem::Dependency
137
151
  name: view_component
138
152
  requirement: !ruby/object:Gem::Requirement