ecoportal-api 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b5603297e3d8f896195915049712b370adfe3dd903fa980bb89d57b4c41c8cb
4
- data.tar.gz: 46ea17c5f957ac03f8db92241477b8c823e2f0685fc0ef6bbf2dbf3e0722461e
3
+ metadata.gz: dc61e1dcd4fce98df40134e6d8803ecb1cf173dfc3fc2e728fffe1651b9b00be
4
+ data.tar.gz: edc0798d69fc802c50f0f6fce556e9bb62c4242a05145286332148c3ee4fce72
5
5
  SHA512:
6
- metadata.gz: f8ebd19ddf1ccce8b78bd703043f9e2f02fa9296c4872bea6f4143aa097b4dba200e65dbb030bb2c06694615e2e9e4de29b8fa4b0f6d10d5aff8a649a005826c
7
- data.tar.gz: a2437d527e4043160bd2cd8c74bf011ee419b4348f37679ed02db890a95de436ae4d325f3a9f84b44f270c8cefa518bb8a4f11c481958379513080a82d116ff7
6
+ metadata.gz: 29ea3c284644656303b702dd507e1d133319bf9cd6b48403ae2b738b4e16ba19d93692ffcd20b110070c571086f0cda7b3ea1db2b0a7f8afd69b7c56bb261b64
7
+ data.tar.gz: aeb583b4065f68809d52145913854faac2feb8098ff0e2f993db03916df08fa55a70d3fe27383c02bdc01ebf1988602c20c55e801b5f553abe961f7af7ef2ea7
@@ -28,10 +28,11 @@ module Ecoportal
28
28
  body = subresponse["response"]
29
29
  method = @operations[idx][:method]
30
30
 
31
- batch_response = BatchResponse.new(status, body)
32
- if batch_response.success? && method == "GET"
33
- callback.call batch_response, @wrapper.new(body)
31
+ if status == 200 && method == "GET"
32
+ batch_response = BatchResponse.new(status, body, @wrapper.new(body))
33
+ callback.call batch_response, batch_response.result
34
34
  else
35
+ batch_response = BatchResponse.new(status, body)
35
36
  callback.call batch_response
36
37
  end
37
38
  end
@@ -61,10 +62,11 @@ module Ecoportal
61
62
  end
62
63
 
63
64
  def upsert(doc)
64
- id = get_id(doc)
65
- body = get_body(doc)
65
+ id = get_id(doc)
66
+ external_id = get_external_id(doc)
67
+ body = get_body(doc)
66
68
  @operations << {
67
- path: @base_path + "/" + CGI::escape(id),
69
+ path: @base_path + "/" + CGI::escape(external_id || id),
68
70
  method: "POST",
69
71
  body: body,
70
72
  callback: block_given? && Proc.new
@@ -2,14 +2,27 @@ module Ecoportal
2
2
  module API
3
3
  module Common
4
4
  class BatchResponse
5
- attr_reader :status, :body
6
- def initialize(status, body)
5
+ attr_reader :status, :body, :result
6
+ def initialize(status, body, result = nil)
7
7
  @status = status
8
8
  @body = body
9
+ @result = result
9
10
  end
10
11
  def success?
11
12
  (0..299).include?(status)
12
13
  end
14
+ def each
15
+ [*@result].each do |doc|
16
+ yield doc
17
+ end
18
+ end
19
+ def print
20
+ if success?
21
+ each(&:print)
22
+ else
23
+ puts "Request failed."
24
+ end
25
+ end
13
26
  end
14
27
  end
15
28
  end
@@ -18,17 +18,23 @@ module Ecoportal
18
18
  end
19
19
  end
20
20
  end
21
+ def body
22
+ response.body.to_s
23
+ end
21
24
  def each
22
25
  [*@result].each do |doc|
23
26
  yield doc
24
27
  end
25
28
  end
29
+ def status
30
+ @response.status.code
31
+ end
26
32
  def success?
27
33
  @response.success?
28
34
  end
29
35
  def print
30
36
  if success?
31
- @result&.map(&:print)
37
+ each(&:print)
32
38
  else
33
39
  puts "Request failed."
34
40
  end
@@ -4,10 +4,24 @@ module Ecoportal
4
4
  class Account < Common::BaseModel
5
5
  passthrough :policy_group_ids, :landing_page_id, :permissions_preset, :permissions_custom, :preferences, :prefilter, :filter_tags, :login_provider_ids, :starred_ids, to: :doc
6
6
 
7
+ VALID_TAG_REGEX = /^[A-Za-z0-9 &_'\/-]+$/
8
+
7
9
  def preset=(value)
8
10
  self.permissions_preset = value == "custom" ? nil : value
9
11
  end
10
12
 
13
+ def filter_tags=(value)
14
+ unless value.is_a?(Array)
15
+ raise "filter_tags= needs to be passed an Array, got #{value.class}"
16
+ end
17
+ doc["filter_tags"] = value.map do |tag|
18
+ unless tag.match(VALID_TAG_REGEX)
19
+ raise "Invalid filter tag #{tag.inspect}"
20
+ end
21
+ tag.upcase
22
+ end
23
+ end
24
+
11
25
  def preset
12
26
  self.permissions_preset.nil? ? "custom" : self.permissions_preset
13
27
  end
@@ -41,6 +41,10 @@ module Ecoportal
41
41
  "value" => field.multiple ? [] : nil
42
42
  )
43
43
  end
44
+ # Patch out static data from as_update
45
+ original = details.instance_variable_get("@original_doc")
46
+ original["fields"] = JSON.parse(details.doc["fields"].to_json)
47
+ return
44
48
  end
45
49
 
46
50
  private
@@ -12,7 +12,7 @@ module Ecoportal
12
12
  when "date"
13
13
  if doc["value"]
14
14
  maybe_multiple(doc["value"]) do |v|
15
- DateTime.iso8601(v)
15
+ Date.iso8601(v)
16
16
  end
17
17
  end
18
18
  else
@@ -37,13 +37,13 @@ module Ecoportal
37
37
  doc["value"] = @value = !!value
38
38
  when "date"
39
39
  maybe_multiple(value) do |v|
40
- unless v.nil? || v.respond_to?(:iso8601)
40
+ unless v.nil? || v.respond_to?(:to_date)
41
41
  raise "Invalid date type #{v.class}"
42
42
  end
43
43
  end
44
44
  @value = value
45
45
  doc["value"] = maybe_multiple(@value) do |v|
46
- v&.iso8601
46
+ v&.to_date&.to_s
47
47
  end
48
48
  else
49
49
  raise "Unknown type #{type}"
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tapio Saarinen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-20 00:00:00.000000000 Z
11
+ date: 2018-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler