govuk_personalisation 0.6.0 → 0.10.0
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 +4 -4
- data/CHANGELOG.md +15 -0
- data/govuk_personalisation.gemspec +2 -0
- data/lib/govuk_personalisation/controller_concern.rb +16 -0
- data/lib/govuk_personalisation/redirect.rb +23 -0
- data/lib/govuk_personalisation/urls.rb +87 -0
- data/lib/govuk_personalisation/version.rb +1 -1
- data/lib/govuk_personalisation.rb +2 -0
- metadata +32 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d966869deca66c3fbea1730d7b2478ca77bc019d499b824269a9456eeffa82d9
         | 
| 4 | 
            +
              data.tar.gz: fc4735bde8c3077c1e8e2795e4deb496b2c7816bfe6006057b0c8e59ceb27196
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 826c826f13b08be03d467655bab27bab323ec6b8823bdddc25b52f0d20906344ee4ece5c95a31bf7726e2aabdea0511b46934b5a37137d7e8788d496b570395f
         | 
| 7 | 
            +
              data.tar.gz: a74b510d5f549e3d0cc9df6b533763d5ac9a3c9211e424f49372b705acb9bb64229f35794f0aadaeee5492d8108040a5780acdc9a8e4d5c7bb4cf54a88b4b979
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,18 @@ | |
| 1 | 
            +
            # 0.10.0
         | 
| 2 | 
            +
            - Add `url_with_analytics` helper to allow apps to access the URL used for `redirect_with_analytics` ([#22](https://github.com/alphagov/govuk_personalisation/pull/22))
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            # 0.9.0
         | 
| 5 | 
            +
            - Add `redirect_with_analytics` helper, attaches _ga and cookie_consent values from existing params to redirects. ([#19](https://github.com/alphagov/govuk_personalisation/pull/19))
         | 
| 6 | 
            +
            - Add `GovukPersonalisation::Redirect` and `.build_url` helper to construct valid URLs with additional parameters. ([#19](https://github.com/alphagov/govuk_personalisation/pull/19))
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # 0.8.0
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            - Change sign in path to `/sign-in/redirect` ([#17](https://github.com/alphagov/govuk_personalisation/pull/17))
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            # 0.7.0
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            - Add `GovukPersonalisation::Urls` module ([#14](https://github.com/alphagov/govuk_personalisation/pull/14) [#16](https://github.com/alphagov/govuk_personalisation/pull/16))
         | 
| 15 | 
            +
             | 
| 1 16 | 
             
            # 0.6.0
         | 
| 2 17 |  | 
| 3 18 | 
             
            - Add `GovukPersonalisation::Flash` and helper methods to the concern ([#9](https://github.com/alphagov/govuk_personalisation/pull/9))
         | 
| @@ -25,9 +25,11 @@ Gem::Specification.new do |spec| | |
| 25 25 | 
             
              spec.executables   = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
         | 
| 26 26 | 
             
              spec.require_paths = %w[lib]
         | 
| 27 27 |  | 
| 28 | 
            +
              spec.add_dependency "plek", ">= 1.9.0"
         | 
| 28 29 | 
             
              spec.add_dependency "rails", "~> 6"
         | 
| 29 30 |  | 
| 30 31 | 
             
              spec.add_development_dependency "bundler"
         | 
| 32 | 
            +
              spec.add_development_dependency "climate_control"
         | 
| 31 33 | 
             
              spec.add_development_dependency "pry-byebug"
         | 
| 32 34 | 
             
              spec.add_development_dependency "rake"
         | 
| 33 35 | 
             
              spec.add_development_dependency "rspec-rails"
         | 
| @@ -125,5 +125,21 @@ module GovukPersonalisation | |
| 125 125 | 
             
                  @new_account_flash = @account_flash.merge(@new_account_flash)
         | 
| 126 126 | 
             
                  set_account_session_header
         | 
| 127 127 | 
             
                end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                # Redirect to a URL adding parameters necessary for cross-domain analytics
         | 
| 130 | 
            +
                # and cookie consent
         | 
| 131 | 
            +
                #
         | 
| 132 | 
            +
                # @param url [String] The URL to redirect to
         | 
| 133 | 
            +
                def redirect_with_analytics(url)
         | 
| 134 | 
            +
                  redirect_to url_with_analytics(url)
         | 
| 135 | 
            +
                end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                # Build a URL adding parameters necessary for cross-domain analytics
         | 
| 138 | 
            +
                # and cookie consent
         | 
| 139 | 
            +
                #
         | 
| 140 | 
            +
                # @param url [String] The URL
         | 
| 141 | 
            +
                def url_with_analytics(url)
         | 
| 142 | 
            +
                  GovukPersonalisation::Redirect.build_url(url, params.permit(:_ga, :cookie_consent).to_h)
         | 
| 143 | 
            +
                end
         | 
| 128 144 | 
             
              end
         | 
| 129 145 | 
             
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module GovukPersonalisation::Redirect
         | 
| 2 | 
            +
              # Builds a URL with additional query parameters
         | 
| 3 | 
            +
              #
         | 
| 4 | 
            +
              # Allows for a simple method call to add params on to an existing
         | 
| 5 | 
            +
              # URL, for instance when adding _ga tracking params to a redirect
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              # @param          base_url          [String] The URL to attach additional parameters to
         | 
| 8 | 
            +
              # @param optional additional_params [Hash{String,Symbol => String}] additional parameters
         | 
| 9 | 
            +
              #                                   to be added to the URL. If empty, returns the base URL.
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # @return                           [String] a new URL with additional parameters
         | 
| 12 | 
            +
              def self.build_url(base_url, additional_params = {})
         | 
| 13 | 
            +
                return base_url if additional_params.empty?
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                additional_query = additional_params.to_a.map { |param| param.join("=") }.join("&")
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                if base_url.include? "?"
         | 
| 18 | 
            +
                  "#{base_url}&#{additional_query}"
         | 
| 19 | 
            +
                else
         | 
| 20 | 
            +
                  "#{base_url}?#{additional_query}"
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            require "plek"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module GovukPersonalisation::Urls
         | 
| 4 | 
            +
              # Find the GOV.UK URL for the "sign in" page
         | 
| 5 | 
            +
              #
         | 
| 6 | 
            +
              # @return [String] the URL
         | 
| 7 | 
            +
              def self.sign_in
         | 
| 8 | 
            +
                find_govuk_url(var: "SIGN_IN", application: "frontend", path: "/sign-in/redirect")
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              # Find the GOV.UK URL for the "sign out" page
         | 
| 12 | 
            +
              #
         | 
| 13 | 
            +
              # @return [String] the URL
         | 
| 14 | 
            +
              def self.sign_out
         | 
| 15 | 
            +
                find_govuk_url(var: "SIGN_OUT", application: "frontend", path: "/sign-out")
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              # Find the GOV.UK URL for the "your account" page
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              # @return [String] the URL
         | 
| 21 | 
            +
              def self.your_account
         | 
| 22 | 
            +
                find_govuk_url(var: "YOUR_ACCOUNT", application: "frontend", path: "/account/home")
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              # Find the external URL for the "manage" page
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              # @return [String] the URL
         | 
| 28 | 
            +
              def self.manage
         | 
| 29 | 
            +
                find_external_url(var: "MANAGE", application: "account-manager", path: "/account/manage")
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              # Find the external URL for the "security" page
         | 
| 33 | 
            +
              #
         | 
| 34 | 
            +
              # @return [String] the URL
         | 
| 35 | 
            +
              def self.security
         | 
| 36 | 
            +
                find_external_url(var: "SECURITY", application: "account-manager", path: "/account/security")
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              # Find the external URL for the "feedback" page
         | 
| 40 | 
            +
              #
         | 
| 41 | 
            +
              # @return [String] the URL
         | 
| 42 | 
            +
              def self.feedback
         | 
| 43 | 
            +
                find_external_url(var: "FEEDBACK", application: "account-manager", path: "/feedback")
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              # Finds a URL on www.gov.uk.  This method is used so we can have
         | 
| 47 | 
            +
              # links which work both in production (where the website root is
         | 
| 48 | 
            +
              # returned) and in local development (where an application URL is
         | 
| 49 | 
            +
              # returned).
         | 
| 50 | 
            +
              #
         | 
| 51 | 
            +
              # If `GOVUK_PERSONALISATION_#{var}_URI` is in the environment, that
         | 
| 52 | 
            +
              # will be returned.
         | 
| 53 | 
            +
              #
         | 
| 54 | 
            +
              # Otherwise, a `www.gov.uk` URL will be returned (a `dev.gov.uk`
         | 
| 55 | 
            +
              # domain in development mode)
         | 
| 56 | 
            +
              #
         | 
| 57 | 
            +
              # @param var         [String] the name of the variable to look up
         | 
| 58 | 
            +
              # @param application [String] the name of the frontend application, passed to Plek, to use in development mode (if the env var is set, this is ignored)
         | 
| 59 | 
            +
              # @param path        [String] the path to use (if the env var is set this is ignored)
         | 
| 60 | 
            +
              #
         | 
| 61 | 
            +
              # @return [String] the URL
         | 
| 62 | 
            +
              def self.find_govuk_url(var:, application:, path:)
         | 
| 63 | 
            +
                value_from_env_var = ENV["GOVUK_PERSONALISATION_#{var}_URI"]
         | 
| 64 | 
            +
                if value_from_env_var
         | 
| 65 | 
            +
                  value_from_env_var
         | 
| 66 | 
            +
                else
         | 
| 67 | 
            +
                  plek_application_uri = Rails.env.development? ? Plek.find(application) : Plek.new.website_root
         | 
| 68 | 
            +
                  "#{plek_application_uri}#{path}"
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              # Finds a URL outside www.gov.uk
         | 
| 73 | 
            +
              #
         | 
| 74 | 
            +
              # If `GOVUK_PERSONALISATION_#{var}_URI` is in the environment, that
         | 
| 75 | 
            +
              # will be returned.
         | 
| 76 | 
            +
              #
         | 
| 77 | 
            +
              # Otherwise, an application URL generated by Plek will be returned.
         | 
| 78 | 
            +
              #
         | 
| 79 | 
            +
              # @param var         [String] the name of the variable to look up
         | 
| 80 | 
            +
              # @param application [String] the name of the frontend application, passed to Plek (if the env var is set, this is ignored)
         | 
| 81 | 
            +
              # @param path        [String] the path to use (if the env var is set this is ignored)
         | 
| 82 | 
            +
              #
         | 
| 83 | 
            +
              # @return [String] the URL
         | 
| 84 | 
            +
              def self.find_external_url(var:, application:, path:)
         | 
| 85 | 
            +
                ENV.fetch("GOVUK_PERSONALISATION_#{var}_URI", "#{Plek.find(application)}#{path}")
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
            end
         | 
| @@ -3,7 +3,9 @@ | |
| 3 3 | 
             
            require "govuk_personalisation/version"
         | 
| 4 4 | 
             
            require "govuk_personalisation/controller_concern"
         | 
| 5 5 | 
             
            require "govuk_personalisation/flash"
         | 
| 6 | 
            +
            require "govuk_personalisation/redirect"
         | 
| 6 7 | 
             
            require "govuk_personalisation/test_helpers/features"
         | 
| 7 8 | 
             
            require "govuk_personalisation/test_helpers/requests"
         | 
| 9 | 
            +
            require "govuk_personalisation/urls"
         | 
| 8 10 |  | 
| 9 11 | 
             
            module GovukPersonalisation; end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: govuk_personalisation
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.10.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - GOV.UK Dev
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-10-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: plek
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 1.9.0
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 1.9.0
         | 
| 13 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 28 | 
             
              name: rails
         | 
| 15 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -38,6 +52,20 @@ dependencies: | |
| 38 52 | 
             
                - - ">="
         | 
| 39 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 54 | 
             
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: climate_control
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ">="
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 41 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 70 | 
             
              name: pry-byebug
         | 
| 43 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -118,8 +146,10 @@ files: | |
| 118 146 | 
             
            - lib/govuk_personalisation.rb
         | 
| 119 147 | 
             
            - lib/govuk_personalisation/controller_concern.rb
         | 
| 120 148 | 
             
            - lib/govuk_personalisation/flash.rb
         | 
| 149 | 
            +
            - lib/govuk_personalisation/redirect.rb
         | 
| 121 150 | 
             
            - lib/govuk_personalisation/test_helpers/features.rb
         | 
| 122 151 | 
             
            - lib/govuk_personalisation/test_helpers/requests.rb
         | 
| 152 | 
            +
            - lib/govuk_personalisation/urls.rb
         | 
| 123 153 | 
             
            - lib/govuk_personalisation/version.rb
         | 
| 124 154 | 
             
            homepage: https://github.com/alphagov/govuk_personalisation
         | 
| 125 155 | 
             
            licenses:
         |