Sha256: 594a5529a349b3b0429f7d76df27a598d2e3e32583b3894e8f38e582355df3b1

Contents?: true

Size: 1.48 KB

Versions: 410

Compression:

Stored size: 1.48 KB

Contents

module GovukPublishingComponents
  module Presenters
    class GovernmentServiceSchema
      attr_reader :page

      def initialize(page)
        @page = page
      end

      def structured_data
        # http://schema.org/GovernmentService
        {
          "@context" => "http://schema.org",
          "@type" => "GovernmentService",
          "name" => page.title,
          "description" => page.description,
          "url" => page.canonical_url,
        }
          .merge(provider)
          .merge(related_services)
      end

    private

      def related_services
        related_links = page.content_item.dig("links", "ordered_related_items")

        return {} unless related_links.present?

        {
          "isRelatedTo" => related_links.each_with_object([]) do |link, items|
            next unless link["schema_name"] == "transaction"

            items << {
              "@type" => "GovernmentService",
              "name" => link["title"],
              "url" => link["web_url"],
            }
          end,
        }
      end

      def provider
        organisations = page.content_item.dig("links", "organisations")

        return {} unless organisations.present?

        providers = organisations.map do |organisation|
          {
            "@type" => "GovernmentOrganization",
            "name" => organisation["title"],
            "url" => organisation["web_url"],
          }
        end

        {
          "provider" => providers,
        }
      end
    end
  end
end

Version data entries

410 entries across 410 versions & 1 rubygems

Version Path
govuk_publishing_components-54.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-53.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-52.1.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-52.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-51.2.1 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-51.2.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-51.1.1 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-51.1.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-51.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-50.0.1 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-50.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-49.1.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-49.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-48.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-47.0.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-46.4.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-46.3.1 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-46.3.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-46.2.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb
govuk_publishing_components-46.1.0 lib/govuk_publishing_components/presenters/machine_readable/government_service_schema.rb