gds-api-adapters 50.7.0 → 50.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: faf3854827267da31728562ff26f512b43f272bc
4
- data.tar.gz: df50983626ae794d8f1717906fb7c4ab7e1509ce
3
+ metadata.gz: d32b7a11e6c88bfa89fe4586abcb1eb802385a3c
4
+ data.tar.gz: 9387022778924d8df0ef6379912aa88d059a0c0d
5
5
  SHA512:
6
- metadata.gz: 61f47409afa2b78987c88c9b839938d4cee19b2c04dd16c2041cb141a1e688bbba97b27d83c5d0857cefcc4327ffcb4350dfe48a92f258644469074a209b27c7
7
- data.tar.gz: 71b7c2d2dc38a69ba2a7e222943acb9a345efc9ec28c1114719518a76139d5233745b26c2345b0aeb44a6d6c3a002a312c2bdc94a096b487771c2c1843fb96a9
6
+ metadata.gz: 02f43b8750d1bc646dc608f16eac7e9176691d2d5b7536b2a6c807f63e82bc4db22c65c01882b2d75b5592fe40ca139adceca12921279600e7aab9a2723fd7c1
7
+ data.tar.gz: 39f75553dd24fce6da6c17fecf314ffe911556337fea3542e242fa6b8fe9b2edd40dcd250f35dc3480eecded8829646e5ec7bb9b550b17769ec68597960a55a8
@@ -4,6 +4,62 @@ require 'rack/utils'
4
4
  module GdsApi
5
5
  # @api documented
6
6
  class Rummager < Base
7
+ # @api documented
8
+ class V1 < SimpleDelegator
9
+ def add_document(type, id, document)
10
+ post_json(
11
+ documents_url,
12
+ document.merge(
13
+ _type: type,
14
+ _id: id,
15
+ )
16
+ )
17
+ end
18
+
19
+ def delete_document(type, id)
20
+ delete_json(
21
+ "#{documents_url}/#{id}",
22
+ _type: type,
23
+ )
24
+ end
25
+ end
26
+
27
+ # @api documented
28
+ class V2 < SimpleDelegator
29
+ class InvalidIndex < StandardError; end
30
+
31
+ def add_document(id, document, index_name)
32
+ raise(InvalidIndex, index_name) unless index_name == 'metasearch'
33
+ post_json(
34
+ "#{base_url}/v2/metasearch/documents",
35
+ document.merge(
36
+ _id: id,
37
+ )
38
+ )
39
+ end
40
+
41
+ def delete_document(id, index_name)
42
+ raise(InvalidIndex, index_name) unless index_name == 'metasearch'
43
+ delete_json("#{base_url}/v2/metasearch/documents/#{id}")
44
+ end
45
+ end
46
+
47
+ DEFAULT_API_VERSION = 'V1'.freeze
48
+ API_VERSIONS = {
49
+ 'V1' => GdsApi::Rummager::V1,
50
+ 'V2' => GdsApi::Rummager::V2,
51
+ }.freeze
52
+ class UnknownAPIVersion < StandardError; end
53
+
54
+ def initialize(endpoint_url, options = {})
55
+ super
56
+ # The API version provides a simple wrapper around this base class so that we
57
+ # can still access the shared methods present in this class.
58
+ version = options.fetch(:api_version, DEFAULT_API_VERSION)
59
+ api_class = API_VERSIONS[version] || raise(UnknownAPIVersion)
60
+ @api = api_class.new(self)
61
+ end
62
+
7
63
  # Perform a search.
8
64
  #
9
65
  # @param args [Hash] A valid search query. See Rummager documentation for options.
@@ -52,17 +108,13 @@ module GdsApi
52
108
  # @param type [String] The rummager/elasticsearch document type.
53
109
  # @param id [String] The rummager/elasticsearch id. Typically the same as the `link` field, but this is not strictly enforced.
54
110
  # @param document [Hash] The document to add. Must match the rummager schema matchin the `type` parameter and contain a `link` field.
111
+ # @param index_name (V2 only) Name of the index to be deleted from on
112
+ # GOV.UK - we only allow deletion from metasearch
55
113
  # @return [GdsApi::Response] A status code of 202 indicates the document has been successfully queued.
56
114
  #
57
115
  # @see https://github.com/alphagov/rummager/blob/master/doc/documents.md
58
- def add_document(type, id, document)
59
- post_json(
60
- documents_url,
61
- document.merge(
62
- _type: type,
63
- _id: id,
64
- )
65
- )
116
+ def add_document(*args)
117
+ @api.add_document(*args)
66
118
  end
67
119
 
68
120
  # Delete a content-document from the index by base path.
@@ -107,15 +159,12 @@ module GdsApi
107
159
  #
108
160
  # @param type [String] The rummager/elasticsearch document type.
109
161
  # @param id [String] The rummager/elasticsearch id. Typically the same as the `link` field.
110
- def delete_document(type, id)
111
- delete_json(
112
- "#{documents_url}/#{id}",
113
- _type: type,
114
- )
162
+ # @param index_name (V2 only) Name of the index to be deleted from on
163
+ # GOV.UK - we only allow deletion from metasearch
164
+ def delete_document(*args)
165
+ @api.delete_document(*args)
115
166
  end
116
167
 
117
- private
118
-
119
168
  def base_url
120
169
  endpoint
121
170
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '50.7.0'.freeze
2
+ VERSION = '50.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gds-api-adapters
3
3
  version: !ruby/object:Gem::Version
4
- version: 50.7.0
4
+ version: 50.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Stewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-20 00:00:00.000000000 Z
11
+ date: 2017-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plek