Class: GdsApi::PublishingApiV2
- Defined in:
- lib/gds_api/publishing_api_v2.rb
Overview
Adapter for the Publishing API.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#discard_draft(content_id, options = {}) ⇒ Object
Discard a draft.
-
#get_content(content_id, params = {}) ⇒ GdsApi::Response
Return a content item.
-
#get_content!(content_id, params = {}) ⇒ GdsApi::Response
Return a content item.
-
#get_content_items(params) ⇒ Object
FIXME: Add documentation.
-
#get_expanded_links(content_id) ⇒ Object
Get expanded links.
-
#get_linkables(document_type: nil, format: nil) ⇒ Object
FIXME: Add documentation.
-
#get_linked_items(content_id, params = {}) ⇒ Object
FIXME: Add documentation.
-
#get_links(content_id) ⇒ Object
FIXME: Add documentation.
-
#lookup_content_id(base_path:) ⇒ UUID
Find the content_id for a base_path.
-
#lookup_content_ids(base_paths:) ⇒ Hash
Find the content_ids for a list of base_paths.
-
#patch_links(content_id, params) ⇒ Object
Patch the links of a content item.
-
#publish(content_id, update_type, options = {}) ⇒ Object
Publish a content item.
-
#put_content(content_id, payload) ⇒ Object
Put a content item.
-
#unpublish(content_id, type:, explanation: nil, alternative_path: nil, discard_drafts: false, allow_draft: false, previous_version: nil, locale: nil) ⇒ Object
Unpublish a content item.
Methods inherited from Base
#client, #create_client, #get_list!, #initialize, #url_for_slug
Constructor Details
This class inherits a constructor from GdsApi::Base
Instance Method Details
#discard_draft(content_id, options = {}) ⇒ Object
Discard a draft
Deletes the draft content item.
148 149 150 151 152 153 154 155 156 157 |
# File 'lib/gds_api/publishing_api_v2.rb', line 148 def discard_draft(content_id, = {}) optional_keys = [ :locale, :previous_version, ] params = merge_optional_keys({}, , optional_keys) post_json!(discard_url(content_id), params) end |
#get_content(content_id, params = {}) ⇒ GdsApi::Response
Return a content item
Returns nil if the content item doesn’t exist.
29 30 31 |
# File 'lib/gds_api/publishing_api_v2.rb', line 29 def get_content(content_id, params = {}) get_json(content_url(content_id, params)) end |
#get_content!(content_id, params = {}) ⇒ GdsApi::Response
Return a content item
Raises exception if the item doesn’t exist.
45 46 47 |
# File 'lib/gds_api/publishing_api_v2.rb', line 45 def get_content!(content_id, params = {}) get_json!(content_url(content_id, params)) end |
#get_content_items(params) ⇒ Object
FIXME: Add documentation
229 230 231 232 |
# File 'lib/gds_api/publishing_api_v2.rb', line 229 def get_content_items(params) query = query_string(params) get_json("#{endpoint}/v2/content#{query}") end |
#get_expanded_links(content_id) ⇒ Object
Get expanded links
Return the expanded links of the item.
190 191 192 193 194 |
# File 'lib/gds_api/publishing_api_v2.rb', line 190 def (content_id) validate_content_id(content_id) url = "#{endpoint}/v2/expanded-links/#{content_id}" get_json(url) end |
#get_linkables(document_type: nil, format: nil) ⇒ Object
FIXME: Add documentation
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 |
# File 'lib/gds_api/publishing_api_v2.rb', line 237 def get_linkables(document_type: nil, format: nil) if document_type.nil? if format.nil? raise ArgumentError.new("Please provide a `document_type`") else self.class.logger.warn( "Providing `format` to the `get_linkables` method is deprecated and will be removed in a " + "future release. Please use `document_type` instead." ) document_type = format end end get_json("#{endpoint}/v2/linkables?document_type=#{document_type}") end |
#get_linked_items(content_id, params = {}) ⇒ Object
FIXME: Add documentation
256 257 258 259 260 |
# File 'lib/gds_api/publishing_api_v2.rb', line 256 def get_linked_items(content_id, params = {}) query = query_string(params) validate_content_id(content_id) get_json("#{endpoint}/v2/linked/#{content_id}#{query}") end |
#get_links(content_id) ⇒ Object
FIXME: Add documentation
162 163 164 |
# File 'lib/gds_api/publishing_api_v2.rb', line 162 def get_links(content_id) get_json(links_url(content_id)) end |
#lookup_content_id(base_path:) ⇒ UUID
Find the content_id for a base_path.
Convenience method if you only need to look up one content_id for a base_path. For multiple base_paths, use #lookup_content_ids.
79 80 81 82 |
# File 'lib/gds_api/publishing_api_v2.rb', line 79 def lookup_content_id(base_path:) lookups = lookup_content_ids(base_paths: [base_path]) lookups[base_path] end |
#lookup_content_ids(base_paths:) ⇒ Hash
Find the content_ids for a list of base_paths.
59 60 61 62 |
# File 'lib/gds_api/publishing_api_v2.rb', line 59 def lookup_content_ids(base_paths:) response = post_json!("#{endpoint}/lookup-by-base-path", base_paths: base_paths) response.to_hash end |
#patch_links(content_id, params) ⇒ Object
Patch the links of a content item
216 217 218 219 220 221 222 223 224 |
# File 'lib/gds_api/publishing_api_v2.rb', line 216 def patch_links(content_id, params) payload = { links: params.fetch(:links) } payload = merge_optional_keys(payload, params, [:previous_version, :bulk_publishing]) patch_json!(links_url(content_id), payload) end |
#publish(content_id, update_type, options = {}) ⇒ Object
Publish a content item
The publishing-api will “publish” a draft item, so that it will be visible on the public site.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/gds_api/publishing_api_v2.rb', line 95 def publish(content_id, update_type, = {}) params = { update_type: update_type } optional_keys = [ :locale, :previous_version, ] params = merge_optional_keys(params, , optional_keys) post_json!(publish_url(content_id), params) end |
#put_content(content_id, payload) ⇒ Object
Put a content item
15 16 17 |
# File 'lib/gds_api/publishing_api_v2.rb', line 15 def put_content(content_id, payload) put_json!(content_url(content_id), payload) end |
#unpublish(content_id, type:, explanation: nil, alternative_path: nil, discard_drafts: false, allow_draft: false, previous_version: nil, locale: nil) ⇒ Object
Unpublish a content item
The publishing API will “unpublish” a live item, to remove it from the public site, or update an existing unpublishing.
124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/gds_api/publishing_api_v2.rb', line 124 def unpublish(content_id, type:, explanation: nil, alternative_path: nil, discard_drafts: false, allow_draft: false, previous_version: nil, locale: nil) params = { type: type } params.merge!(explanation: explanation) if explanation params.merge!(alternative_path: alternative_path) if alternative_path params.merge!(previous_version: previous_version) if previous_version params.merge!(discard_drafts: discard_drafts) if discard_drafts params.merge!(allow_draft: allow_draft) if allow_draft params.merge!(locale: locale) if locale post_json!(unpublish_url(content_id), params) end |