gds-api-adapters 60.1.0 → 61.0.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/Rakefile +0 -6
- data/lib/gds-api-adapters.rb +3 -3
- data/lib/gds_api.rb +45 -45
- data/lib/gds_api/asset_manager.rb +2 -2
- data/lib/gds_api/base.rb +5 -5
- data/lib/gds_api/calendars.rb +1 -1
- data/lib/gds_api/content_store.rb +3 -3
- data/lib/gds_api/email_alert_api.rb +4 -4
- data/lib/gds_api/imminence.rb +2 -2
- data/lib/gds_api/json_client.rb +19 -19
- data/lib/gds_api/link_checker_api.rb +6 -6
- data/lib/gds_api/local_links_manager.rb +1 -1
- data/lib/gds_api/mapit.rb +6 -6
- data/lib/gds_api/middleware/govuk_header_sniffer.rb +1 -1
- data/lib/gds_api/organisations.rb +1 -1
- data/lib/gds_api/performance_platform/data_in.rb +1 -1
- data/lib/gds_api/performance_platform/data_out.rb +14 -14
- data/lib/gds_api/publishing_api.rb +2 -2
- data/lib/gds_api/publishing_api/special_route_publisher.rb +2 -2
- data/lib/gds_api/publishing_api_v2.rb +8 -8
- data/lib/gds_api/railtie.rb +6 -6
- data/lib/gds_api/response.rb +4 -4
- data/lib/gds_api/router.rb +3 -3
- data/lib/gds_api/rummager.rb +1 -1
- data/lib/gds_api/search.rb +10 -20
- data/lib/gds_api/support.rb +1 -1
- data/lib/gds_api/support_api.rb +1 -1
- data/lib/gds_api/test_helpers/asset_manager.rb +4 -4
- data/lib/gds_api/test_helpers/calendars.rb +13 -13
- data/lib/gds_api/test_helpers/common_responses.rb +3 -3
- data/lib/gds_api/test_helpers/content_item_helpers.rb +2 -2
- data/lib/gds_api/test_helpers/content_store.rb +7 -7
- data/lib/gds_api/test_helpers/email_alert_api.rb +19 -19
- data/lib/gds_api/test_helpers/imminence.rb +3 -3
- data/lib/gds_api/test_helpers/json_client_helper.rb +1 -1
- data/lib/gds_api/test_helpers/licence_application.rb +1 -1
- data/lib/gds_api/test_helpers/link_checker_api.rb +5 -5
- data/lib/gds_api/test_helpers/local_links_manager.rb +14 -14
- data/lib/gds_api/test_helpers/mapit.rb +17 -17
- data/lib/gds_api/test_helpers/organisations.rb +7 -7
- data/lib/gds_api/test_helpers/performance_platform/data_out.rb +13 -13
- data/lib/gds_api/test_helpers/publishing_api.rb +8 -8
- data/lib/gds_api/test_helpers/publishing_api_v2.rb +24 -24
- data/lib/gds_api/test_helpers/router.rb +12 -12
- data/lib/gds_api/test_helpers/rummager.rb +3 -3
- data/lib/gds_api/test_helpers/search.rb +18 -18
- data/lib/gds_api/test_helpers/support.rb +1 -1
- data/lib/gds_api/test_helpers/support_api.rb +8 -8
- data/lib/gds_api/test_helpers/worldwide.rb +6 -6
- data/lib/gds_api/version.rb +1 -1
- data/lib/gds_api/worldwide.rb +1 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 03633d3f73a43534c9a5bf7f4dd962440da1e00413b8cb68eb26ccabf9a852fd
         | 
| 4 | 
            +
              data.tar.gz: 601382725376e9209d8e03898edffdf5d1cafe3e1afd7a7c42609c6a480d08fd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ce83aa7cc12f0fa50c45e082c1085dfb125eb20cc0060f7e4b3412c7f016d776aed2bb499def860d4d34d955bca43528c96d0a4fbd56017d92647c61577a6415
         | 
| 7 | 
            +
              data.tar.gz: 33690cb1426e6d63b5faa7f52b3521f80d046a1cc72a0c308ae8054e4b32f691c607770366ae4586042bf7aa808dc7cb91b2e8c8e5f5ad9bd0b8a43e92d1a751
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -29,12 +29,6 @@ PactBroker::Client::PublicationTask.new("branch") do |task| | |
| 29 29 | 
             
              configure_pact_broker_location(task)
         | 
| 30 30 | 
             
            end
         | 
| 31 31 |  | 
| 32 | 
            -
            PactBroker::Client::PublicationTask.new("released_version") do |task|
         | 
| 33 | 
            -
              require 'gds_api/version'
         | 
| 34 | 
            -
              task.consumer_version = GdsApi::VERSION
         | 
| 35 | 
            -
              configure_pact_broker_location(task)
         | 
| 36 | 
            -
            end
         | 
| 37 | 
            -
             | 
| 38 32 | 
             
            desc "Run the linter against changed files"
         | 
| 39 33 | 
             
            task :lint do
         | 
| 40 34 | 
             
              sh "bundle exec govuk-lint-ruby --format clang lib test"
         | 
    
        data/lib/gds-api-adapters.rb
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 1 | 
            +
            require "gds_api/railtie" if defined?(Rails)
         | 
| 2 | 
            +
            require "gds_api/exceptions"
         | 
| 3 | 
            +
            require "gds_api"
         | 
    
        data/lib/gds_api.rb
    CHANGED
    
    | @@ -1,23 +1,23 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require  | 
| 6 | 
            -
            require  | 
| 7 | 
            -
            require  | 
| 8 | 
            -
            require  | 
| 9 | 
            -
            require  | 
| 10 | 
            -
            require  | 
| 11 | 
            -
            require  | 
| 12 | 
            -
            require  | 
| 13 | 
            -
            require  | 
| 14 | 
            -
            require  | 
| 15 | 
            -
            require  | 
| 16 | 
            -
            require  | 
| 17 | 
            -
            require  | 
| 18 | 
            -
            require  | 
| 19 | 
            -
            require  | 
| 20 | 
            -
            require  | 
| 1 | 
            +
            require "plek"
         | 
| 2 | 
            +
            require "gds_api/asset_manager"
         | 
| 3 | 
            +
            require "gds_api/calendars"
         | 
| 4 | 
            +
            require "gds_api/content_store"
         | 
| 5 | 
            +
            require "gds_api/email_alert_api"
         | 
| 6 | 
            +
            require "gds_api/imminence"
         | 
| 7 | 
            +
            require "gds_api/licence_application"
         | 
| 8 | 
            +
            require "gds_api/link_checker_api"
         | 
| 9 | 
            +
            require "gds_api/local_links_manager"
         | 
| 10 | 
            +
            require "gds_api/mapit"
         | 
| 11 | 
            +
            require "gds_api/maslow"
         | 
| 12 | 
            +
            require "gds_api/organisations"
         | 
| 13 | 
            +
            require "gds_api/publishing_api"
         | 
| 14 | 
            +
            require "gds_api/publishing_api_v2"
         | 
| 15 | 
            +
            require "gds_api/router"
         | 
| 16 | 
            +
            require "gds_api/rummager"
         | 
| 17 | 
            +
            require "gds_api/search"
         | 
| 18 | 
            +
            require "gds_api/support"
         | 
| 19 | 
            +
            require "gds_api/support_api"
         | 
| 20 | 
            +
            require "gds_api/worldwide"
         | 
| 21 21 |  | 
| 22 22 | 
             
            # @api documented
         | 
| 23 23 | 
             
            module GdsApi
         | 
| @@ -29,8 +29,8 @@ module GdsApi | |
| 29 29 | 
             
              # @return [GdsApi::AssetManager]
         | 
| 30 30 | 
             
              def self.asset_manager(options = {})
         | 
| 31 31 | 
             
                GdsApi::AssetManager.new(
         | 
| 32 | 
            -
                  Plek.find( | 
| 33 | 
            -
                  { bearer_token: ENV[ | 
| 32 | 
            +
                  Plek.find("asset-manager"),
         | 
| 33 | 
            +
                  { bearer_token: ENV["ASSET_MANAGER_BEARER_TOKEN"] }.merge(options),
         | 
| 34 34 | 
             
                )
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| @@ -49,8 +49,8 @@ module GdsApi | |
| 49 49 | 
             
              # @return [GdsApi::ContentStore]
         | 
| 50 50 | 
             
              def self.content_store(options = {})
         | 
| 51 51 | 
             
                GdsApi::ContentStore.new(
         | 
| 52 | 
            -
                  Plek.find( | 
| 53 | 
            -
                  { bearer_token: ENV[ | 
| 52 | 
            +
                  Plek.find("content-store"),
         | 
| 53 | 
            +
                  { bearer_token: ENV["CONTENT_STORE_BEARER_TOKEN"] }.merge(options),
         | 
| 54 54 | 
             
                )
         | 
| 55 55 | 
             
              end
         | 
| 56 56 |  | 
| @@ -62,8 +62,8 @@ module GdsApi | |
| 62 62 | 
             
              # @return [GdsApi::EmailAlertApi]
         | 
| 63 63 | 
             
              def self.email_alert_api(options = {})
         | 
| 64 64 | 
             
                GdsApi::EmailAlertApi.new(
         | 
| 65 | 
            -
                  Plek.find( | 
| 66 | 
            -
                  { bearer_token: ENV[ | 
| 65 | 
            +
                  Plek.find("email-alert-api"),
         | 
| 66 | 
            +
                  { bearer_token: ENV["EMAIL_ALERT_API_BEARER_TOKEN"] }.merge(options),
         | 
| 67 67 | 
             
                )
         | 
| 68 68 | 
             
              end
         | 
| 69 69 |  | 
| @@ -71,14 +71,14 @@ module GdsApi | |
| 71 71 | 
             
              #
         | 
| 72 72 | 
             
              # @return [GdsApi::Imminence]
         | 
| 73 73 | 
             
              def self.imminence(options = {})
         | 
| 74 | 
            -
                GdsApi::Imminence.new(Plek.find( | 
| 74 | 
            +
                GdsApi::Imminence.new(Plek.find("imminence"), options)
         | 
| 75 75 | 
             
              end
         | 
| 76 76 |  | 
| 77 77 | 
             
              # Creates a GdsApi::LicenceApplication
         | 
| 78 78 | 
             
              #
         | 
| 79 79 | 
             
              # @return [GdsApi::LicenceApplication]
         | 
| 80 80 | 
             
              def self.licence_application(options = {})
         | 
| 81 | 
            -
                GdsApi::LicenceApplication.new(Plek.find( | 
| 81 | 
            +
                GdsApi::LicenceApplication.new(Plek.find("licensify"), options)
         | 
| 82 82 | 
             
              end
         | 
| 83 83 |  | 
| 84 84 | 
             
              # Creates a GdsApi::LinkCheckerApi adapter
         | 
| @@ -89,8 +89,8 @@ module GdsApi | |
| 89 89 | 
             
              # @return [GdsApi::LinkCheckerApi]
         | 
| 90 90 | 
             
              def self.link_checker_api(options = {})
         | 
| 91 91 | 
             
                GdsApi::LinkCheckerApi.new(
         | 
| 92 | 
            -
                  Plek.find( | 
| 93 | 
            -
                  { bearer_token: ENV[ | 
| 92 | 
            +
                  Plek.find("link-checker-api"),
         | 
| 93 | 
            +
                  { bearer_token: ENV["LINK_CHECKER_API_BEARER_TOKEN"] }.merge(options),
         | 
| 94 94 | 
             
                )
         | 
| 95 95 | 
             
              end
         | 
| 96 96 |  | 
| @@ -98,14 +98,14 @@ module GdsApi | |
| 98 98 | 
             
              #
         | 
| 99 99 | 
             
              # @return [GdsApi::LocalLinksManager]
         | 
| 100 100 | 
             
              def self.local_links_manager(options = {})
         | 
| 101 | 
            -
                GdsApi::LocalLinksManager.new(Plek.find( | 
| 101 | 
            +
                GdsApi::LocalLinksManager.new(Plek.find("local-links-manager"), options)
         | 
| 102 102 | 
             
              end
         | 
| 103 103 |  | 
| 104 104 | 
             
              # Creates a GdsApi::Mapit adapter
         | 
| 105 105 | 
             
              #
         | 
| 106 106 | 
             
              # @return [GdsApi::Mapit]
         | 
| 107 107 | 
             
              def self.mapit(options = {})
         | 
| 108 | 
            -
                GdsApi::Mapit.new(Plek.find( | 
| 108 | 
            +
                GdsApi::Mapit.new(Plek.find("mapit"), options)
         | 
| 109 109 | 
             
              end
         | 
| 110 110 |  | 
| 111 111 | 
             
              # Creates a GdsApi::Maslow adapter
         | 
| @@ -115,7 +115,7 @@ module GdsApi | |
| 115 115 | 
             
              #
         | 
| 116 116 | 
             
              # @return [GdsApi::Maslow]
         | 
| 117 117 | 
             
              def self.maslow(options = {})
         | 
| 118 | 
            -
                GdsApi::Maslow.new(Plek.new.external_url_for( | 
| 118 | 
            +
                GdsApi::Maslow.new(Plek.new.external_url_for("maslow"), options)
         | 
| 119 119 | 
             
              end
         | 
| 120 120 |  | 
| 121 121 | 
             
              # Creates a GdsApi::Organisations adapter for accessing Whitehall APIs on a
         | 
| @@ -134,8 +134,8 @@ module GdsApi | |
| 134 134 | 
             
              # @return [GdsApi::PublishingApi]
         | 
| 135 135 | 
             
              def self.publishing_api(options = {})
         | 
| 136 136 | 
             
                GdsApi::PublishingApi.new(
         | 
| 137 | 
            -
                  Plek.find( | 
| 138 | 
            -
                  { bearer_token: ENV[ | 
| 137 | 
            +
                  Plek.find("publishing-api"),
         | 
| 138 | 
            +
                  { bearer_token: ENV["PUBLISHING_API_BEARER_TOKEN"] }.merge(options),
         | 
| 139 139 | 
             
                )
         | 
| 140 140 | 
             
              end
         | 
| 141 141 |  | 
| @@ -147,8 +147,8 @@ module GdsApi | |
| 147 147 | 
             
              # @return [GdsApi::PublishingApiV2]
         | 
| 148 148 | 
             
              def self.publishing_api_v2(options = {})
         | 
| 149 149 | 
             
                GdsApi::PublishingApiV2.new(
         | 
| 150 | 
            -
                  Plek.find( | 
| 151 | 
            -
                  { bearer_token: ENV[ | 
| 150 | 
            +
                  Plek.find("publishing-api"),
         | 
| 151 | 
            +
                  { bearer_token: ENV["PUBLISHING_API_BEARER_TOKEN"] }.merge(options),
         | 
| 152 152 | 
             
                )
         | 
| 153 153 | 
             
              end
         | 
| 154 154 |  | 
| @@ -160,8 +160,8 @@ module GdsApi | |
| 160 160 | 
             
              # @return [GdsApi::Router]
         | 
| 161 161 | 
             
              def self.router(options = {})
         | 
| 162 162 | 
             
                GdsApi::Router.new(
         | 
| 163 | 
            -
                  Plek.find( | 
| 164 | 
            -
                  { bearer_token: ENV[ | 
| 163 | 
            +
                  Plek.find("router-api"),
         | 
| 164 | 
            +
                  { bearer_token: ENV["ROUTER_API_BEARER_TOKEN"] }.merge(options),
         | 
| 165 165 | 
             
                )
         | 
| 166 166 | 
             
              end
         | 
| 167 167 |  | 
| @@ -169,21 +169,21 @@ module GdsApi | |
| 169 169 | 
             
              #
         | 
| 170 170 | 
             
              # @return [GdsApi::Rummager]
         | 
| 171 171 | 
             
              def self.rummager(options = {})
         | 
| 172 | 
            -
                GdsApi::Rummager.new(Plek.find( | 
| 172 | 
            +
                GdsApi::Rummager.new(Plek.find("search"), options)
         | 
| 173 173 | 
             
              end
         | 
| 174 174 |  | 
| 175 175 | 
             
              # Creates a GdsApi::Search adapter to access via a search.* hostname
         | 
| 176 176 | 
             
              #
         | 
| 177 177 | 
             
              # @return [GdsApi::Search]
         | 
| 178 178 | 
             
              def self.search(options = {})
         | 
| 179 | 
            -
                GdsApi::Search.new(Plek.find( | 
| 179 | 
            +
                GdsApi::Search.new(Plek.find("search"), options)
         | 
| 180 180 | 
             
              end
         | 
| 181 181 |  | 
| 182 182 | 
             
              # Creates a GdsApi::Support adapter
         | 
| 183 183 | 
             
              #
         | 
| 184 184 | 
             
              # @return [GdsApi::Support]
         | 
| 185 185 | 
             
              def self.support(options = {})
         | 
| 186 | 
            -
                GdsApi::Support.new(Plek.find( | 
| 186 | 
            +
                GdsApi::Support.new(Plek.find("support"), options)
         | 
| 187 187 | 
             
              end
         | 
| 188 188 |  | 
| 189 189 | 
             
              # Creates a GdsApi::SupportApi adapter
         | 
| @@ -194,8 +194,8 @@ module GdsApi | |
| 194 194 | 
             
              # @return [GdsApi::SupportApi]
         | 
| 195 195 | 
             
              def self.support_api(options = {})
         | 
| 196 196 | 
             
                GdsApi::SupportApi.new(
         | 
| 197 | 
            -
                  Plek.find( | 
| 198 | 
            -
                  { bearer_token: ENV[ | 
| 197 | 
            +
                  Plek.find("support-api"),
         | 
| 198 | 
            +
                  { bearer_token: ENV["SUPPORT_API_BEARER_TOKEN"] }.merge(options),
         | 
| 199 199 | 
             
                )
         | 
| 200 200 | 
             
              end
         | 
| 201 201 |  | 
| @@ -204,6 +204,6 @@ module GdsApi | |
| 204 204 | 
             
              #
         | 
| 205 205 | 
             
              # @return [GdsApi::Worldwide]
         | 
| 206 206 | 
             
              def self.worldwide(options = {})
         | 
| 207 | 
            -
                GdsApi::Worldwide.new(Plek.find( | 
| 207 | 
            +
                GdsApi::Worldwide.new(Plek.find("whitehall-admin"), options)
         | 
| 208 208 | 
             
              end
         | 
| 209 209 | 
             
            end
         | 
    
        data/lib/gds_api/base.rb
    CHANGED
    
    | @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require_relative  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
            require  | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            require_relative  | 
| 1 | 
            +
            require_relative "json_client"
         | 
| 2 | 
            +
            require "cgi"
         | 
| 3 | 
            +
            require "null_logger"
         | 
| 4 | 
            +
            require "plek"
         | 
| 5 | 
            +
            require_relative "list_response"
         | 
| 6 6 |  | 
| 7 7 | 
             
            class GdsApi::Base
         | 
| 8 8 | 
             
              class InvalidAPIURL < StandardError
         | 
    
        data/lib/gds_api/calendars.rb
    CHANGED
    
    
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require "plek"
         | 
| 2 2 |  | 
| 3 | 
            -
            require_relative  | 
| 4 | 
            -
            require_relative  | 
| 3 | 
            +
            require_relative "base"
         | 
| 4 | 
            +
            require_relative "exceptions"
         | 
| 5 5 |  | 
| 6 6 | 
             
            class GdsApi::ContentStore < GdsApi::Base
         | 
| 7 7 | 
             
              class ItemNotFound < GdsApi::HTTPNotFound
         | 
| @@ -44,7 +44,7 @@ private | |
| 44 44 | 
             
                  raise UnresolvedRedirect, "Could not find a matching redirect" unless redirect
         | 
| 45 45 |  | 
| 46 46 | 
             
                  destination_uri = URI.parse(
         | 
| 47 | 
            -
                    resolve_destination(redirect, request_path, request_query)
         | 
| 47 | 
            +
                    resolve_destination(redirect, request_path, request_query),
         | 
| 48 48 | 
             
                  )
         | 
| 49 49 |  | 
| 50 50 | 
             
                  url = if destination_uri.absolute?
         | 
| @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            require_relative  | 
| 2 | 
            -
            require_relative  | 
| 1 | 
            +
            require_relative "base"
         | 
| 2 | 
            +
            require_relative "exceptions"
         | 
| 3 3 |  | 
| 4 4 | 
             
            # Adapter for the Email Alert API
         | 
| 5 5 | 
             
            #
         | 
| @@ -203,7 +203,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base | |
| 203 203 | 
             
              def change_subscriber(id:, new_address:)
         | 
| 204 204 | 
             
                patch_json(
         | 
| 205 205 | 
             
                  "#{endpoint}/subscribers/#{id}",
         | 
| 206 | 
            -
                  new_address: new_address
         | 
| 206 | 
            +
                  new_address: new_address,
         | 
| 207 207 | 
             
                )
         | 
| 208 208 | 
             
              end
         | 
| 209 209 |  | 
| @@ -216,7 +216,7 @@ class GdsApi::EmailAlertApi < GdsApi::Base | |
| 216 216 | 
             
              def change_subscription(id:, frequency:)
         | 
| 217 217 | 
             
                patch_json(
         | 
| 218 218 | 
             
                  "#{endpoint}/subscriptions/#{id}",
         | 
| 219 | 
            -
                  frequency: frequency
         | 
| 219 | 
            +
                  frequency: frequency,
         | 
| 220 220 | 
             
                )
         | 
| 221 221 | 
             
              end
         | 
| 222 222 |  | 
    
        data/lib/gds_api/imminence.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require_relative  | 
| 1 | 
            +
            require_relative "base"
         | 
| 2 2 |  | 
| 3 3 | 
             
            class GdsApi::Imminence < GdsApi::Base
         | 
| 4 4 | 
             
              def api_url(type, params)
         | 
| @@ -59,7 +59,7 @@ class GdsApi::Imminence < GdsApi::Base | |
| 59 59 | 
             
              def self.extract_address_hash(place_hash)
         | 
| 60 60 | 
             
                address_fields = [
         | 
| 61 61 | 
             
                  place_hash["address1"],
         | 
| 62 | 
            -
                  place_hash["address2"]
         | 
| 62 | 
            +
                  place_hash["address2"],
         | 
| 63 63 | 
             
                ].reject { |a| a.nil? || a == "" }
         | 
| 64 64 | 
             
                { "address" => address_fields.map(&:strip).join(", ") }
         | 
| 65 65 | 
             
              end
         | 
    
        data/lib/gds_api/json_client.rb
    CHANGED
    
    | @@ -1,9 +1,9 @@ | |
| 1 | 
            -
            require_relative  | 
| 2 | 
            -
            require_relative  | 
| 3 | 
            -
            require_relative  | 
| 4 | 
            -
            require_relative  | 
| 5 | 
            -
            require  | 
| 6 | 
            -
            require  | 
| 1 | 
            +
            require_relative "response"
         | 
| 2 | 
            +
            require_relative "exceptions"
         | 
| 3 | 
            +
            require_relative "version"
         | 
| 4 | 
            +
            require_relative "govuk_headers"
         | 
| 5 | 
            +
            require "rest-client"
         | 
| 6 | 
            +
            require "null_logger"
         | 
| 7 7 |  | 
| 8 8 | 
             
            module GdsApi
         | 
| 9 9 | 
             
              class JsonClient
         | 
| @@ -22,9 +22,9 @@ module GdsApi | |
| 22 22 |  | 
| 23 23 | 
             
                def self.default_request_headers
         | 
| 24 24 | 
             
                  {
         | 
| 25 | 
            -
                     | 
| 25 | 
            +
                    "Accept" => "application/json",
         | 
| 26 26 | 
             
                    # GOVUK_APP_NAME is set for all apps by Puppet
         | 
| 27 | 
            -
                     | 
| 27 | 
            +
                    "User-Agent" => "gds-api-adapters/#{GdsApi::VERSION} (#{ENV['GOVUK_APP_NAME']})",
         | 
| 28 28 | 
             
                  }
         | 
| 29 29 | 
             
                end
         | 
| 30 30 |  | 
| @@ -34,7 +34,7 @@ module GdsApi | |
| 34 34 |  | 
| 35 35 | 
             
                def self.json_body_headers
         | 
| 36 36 | 
             
                  {
         | 
| 37 | 
            -
                     | 
| 37 | 
            +
                    "Content-Type" => "application/json",
         | 
| 38 38 | 
             
                  }
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| @@ -119,12 +119,12 @@ module GdsApi | |
| 119 119 | 
             
                  if @options[:bearer_token]
         | 
| 120 120 | 
             
                    headers = method_params[:headers] || {}
         | 
| 121 121 | 
             
                    method_params.merge(headers: headers.merge(
         | 
| 122 | 
            -
                      "Authorization" => "Bearer #{@options[:bearer_token]}"
         | 
| 122 | 
            +
                      "Authorization" => "Bearer #{@options[:bearer_token]}",
         | 
| 123 123 | 
             
                    ))
         | 
| 124 124 | 
             
                  elsif @options[:basic_auth]
         | 
| 125 125 | 
             
                    method_params.merge(
         | 
| 126 126 | 
             
                      user: @options[:basic_auth][:user],
         | 
| 127 | 
            -
                      password: @options[:basic_auth][:password]
         | 
| 127 | 
            +
                      password: @options[:basic_auth][:password],
         | 
| 128 128 | 
             
                    )
         | 
| 129 129 | 
             
                  else
         | 
| 130 130 | 
             
                    method_params
         | 
| @@ -145,20 +145,20 @@ module GdsApi | |
| 145 145 | 
             
                    headers: default_headers
         | 
| 146 146 | 
             
                      .merge(method_params[:headers] || {})
         | 
| 147 147 | 
             
                      .merge(GdsApi::GovukHeaders.headers)
         | 
| 148 | 
            -
                      .merge(additional_headers)
         | 
| 148 | 
            +
                      .merge(additional_headers),
         | 
| 149 149 | 
             
                  )
         | 
| 150 150 | 
             
                end
         | 
| 151 151 |  | 
| 152 152 | 
             
                def with_ssl_options(method_params)
         | 
| 153 153 | 
             
                  method_params.merge(
         | 
| 154 154 | 
             
                    # This is the default value anyway, but we should probably be explicit
         | 
| 155 | 
            -
                    verify_ssl: OpenSSL::SSL::VERIFY_NONE
         | 
| 155 | 
            +
                    verify_ssl: OpenSSL::SSL::VERIFY_NONE,
         | 
| 156 156 | 
             
                  )
         | 
| 157 157 | 
             
                end
         | 
| 158 158 |  | 
| 159 159 | 
             
                def do_request(method, url, params = nil, additional_headers = {})
         | 
| 160 160 | 
             
                  loggable = { request_uri: url, start_time: Time.now.to_f }
         | 
| 161 | 
            -
                  start_logging = loggable.merge(action:  | 
| 161 | 
            +
                  start_logging = loggable.merge(action: "start")
         | 
| 162 162 | 
             
                  logger.debug start_logging.to_json
         | 
| 163 163 |  | 
| 164 164 | 
             
                  method_params = {
         | 
| @@ -176,13 +176,13 @@ module GdsApi | |
| 176 176 |  | 
| 177 177 | 
             
                  ::RestClient::Request.execute(method_params)
         | 
| 178 178 | 
             
                rescue Errno::ECONNREFUSED => e
         | 
| 179 | 
            -
                  logger.error loggable.merge(status:  | 
| 179 | 
            +
                  logger.error loggable.merge(status: "refused", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
         | 
| 180 180 | 
             
                  raise GdsApi::EndpointNotFound.new("Could not connect to #{url}")
         | 
| 181 181 | 
             
                rescue RestClient::Exceptions::Timeout => e
         | 
| 182 | 
            -
                  logger.error loggable.merge(status:  | 
| 182 | 
            +
                  logger.error loggable.merge(status: "timeout", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
         | 
| 183 183 | 
             
                  raise GdsApi::TimedOutException.new
         | 
| 184 184 | 
             
                rescue URI::InvalidURIError => e
         | 
| 185 | 
            -
                  logger.error loggable.merge(status:  | 
| 185 | 
            +
                  logger.error loggable.merge(status: "invalid_uri", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
         | 
| 186 186 | 
             
                  raise GdsApi::InvalidUrl
         | 
| 187 187 | 
             
                rescue RestClient::Exception => e
         | 
| 188 188 | 
             
                  # Log the error here, since we have access to loggable, but raise the
         | 
| @@ -191,10 +191,10 @@ module GdsApi | |
| 191 191 | 
             
                  logger.warn loggable.to_json
         | 
| 192 192 | 
             
                  raise
         | 
| 193 193 | 
             
                rescue Errno::ECONNRESET => e
         | 
| 194 | 
            -
                  logger.error loggable.merge(status:  | 
| 194 | 
            +
                  logger.error loggable.merge(status: "connection_reset", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
         | 
| 195 195 | 
             
                  raise GdsApi::TimedOutException.new
         | 
| 196 196 | 
             
                rescue SocketError => e
         | 
| 197 | 
            -
                  logger.error loggable.merge(status:  | 
| 197 | 
            +
                  logger.error loggable.merge(status: "socket_error", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
         | 
| 198 198 | 
             
                  raise GdsApi::SocketErrorException.new
         | 
| 199 199 | 
             
                end
         | 
| 200 200 | 
             
              end
         | 
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require_relative  | 
| 1 | 
            +
            require_relative "base"
         | 
| 2 2 |  | 
| 3 3 | 
             
            class GdsApi::LinkCheckerApi < GdsApi::Base
         | 
| 4 4 | 
             
              # Checks whether a link is broken.
         | 
| @@ -24,11 +24,11 @@ class GdsApi::LinkCheckerApi < GdsApi::Base | |
| 24 24 | 
             
                params = {
         | 
| 25 25 | 
             
                  uri: uri,
         | 
| 26 26 | 
             
                  synchronous: synchronous,
         | 
| 27 | 
            -
                  checked_within: checked_within
         | 
| 27 | 
            +
                  checked_within: checked_within,
         | 
| 28 28 | 
             
                }
         | 
| 29 29 |  | 
| 30 30 | 
             
                response = get_json(
         | 
| 31 | 
            -
                  "#{endpoint}/check" + query_string(params.delete_if { |_, v| v.nil? })
         | 
| 31 | 
            +
                  "#{endpoint}/check" + query_string(params.delete_if { |_, v| v.nil? }),
         | 
| 32 32 | 
             
                )
         | 
| 33 33 |  | 
| 34 34 | 
             
                LinkReport.new(response.to_hash)
         | 
| @@ -84,8 +84,8 @@ class GdsApi::LinkCheckerApi < GdsApi::Base | |
| 84 84 | 
             
              def get_batch(id)
         | 
| 85 85 | 
             
                BatchReport.new(
         | 
| 86 86 | 
             
                  get_json(
         | 
| 87 | 
            -
                    "#{endpoint}/batch/#{id}"
         | 
| 88 | 
            -
                  ).to_hash
         | 
| 87 | 
            +
                    "#{endpoint}/batch/#{id}",
         | 
| 88 | 
            +
                  ).to_hash,
         | 
| 89 89 | 
             
                )
         | 
| 90 90 | 
             
              end
         | 
| 91 91 |  | 
| @@ -106,7 +106,7 @@ class GdsApi::LinkCheckerApi < GdsApi::Base | |
| 106 106 | 
             
                payload = {
         | 
| 107 107 | 
             
                  links: links,
         | 
| 108 108 | 
             
                  app: app,
         | 
| 109 | 
            -
                  reference: reference
         | 
| 109 | 
            +
                  reference: reference,
         | 
| 110 110 | 
             
                }
         | 
| 111 111 |  | 
| 112 112 | 
             
                response = post_json("#{endpoint}/monitor", payload)
         |