ecoportal-api-oozes 0.5.5
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 +7 -0
- data/.gitignore +20 -0
- data/.rspec +3 -0
- data/.rubocop.yml +55 -0
- data/.travis.yml +5 -0
- data/.yardopts +10 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.md +20 -0
- data/Rakefile +27 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/ecoportal-api-oozes.gemspec +31 -0
- data/lib/ecoportal/api-oozes.rb +10 -0
- data/lib/ecoportal/api/common.rb +18 -0
- data/lib/ecoportal/api/common/content.rb +18 -0
- data/lib/ecoportal/api/common/content/array_model.rb +287 -0
- data/lib/ecoportal/api/common/content/class_helpers.rb +111 -0
- data/lib/ecoportal/api/common/content/client.rb +40 -0
- data/lib/ecoportal/api/common/content/collection_model.rb +223 -0
- data/lib/ecoportal/api/common/content/doc_helpers.rb +67 -0
- data/lib/ecoportal/api/common/content/double_model.rb +334 -0
- data/lib/ecoportal/api/common/content/hash_diff_patch.rb +162 -0
- data/lib/ecoportal/api/common/content/string_digest.rb +22 -0
- data/lib/ecoportal/api/common/content/wrapped_response.rb +42 -0
- data/lib/ecoportal/api/v2.rb +48 -0
- data/lib/ecoportal/api/v2/page.rb +30 -0
- data/lib/ecoportal/api/v2/page/component.rb +105 -0
- data/lib/ecoportal/api/v2/page/component/action.rb +17 -0
- data/lib/ecoportal/api/v2/page/component/action_field.rb +16 -0
- data/lib/ecoportal/api/v2/page/component/checklist_field.rb +16 -0
- data/lib/ecoportal/api/v2/page/component/checklist_item.rb +15 -0
- data/lib/ecoportal/api/v2/page/component/date_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/file.rb +16 -0
- data/lib/ecoportal/api/v2/page/component/files_field.rb +14 -0
- data/lib/ecoportal/api/v2/page/component/gauge_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/geo_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/image.rb +16 -0
- data/lib/ecoportal/api/v2/page/component/images_field.rb +14 -0
- data/lib/ecoportal/api/v2/page/component/law_field.rb +12 -0
- data/lib/ecoportal/api/v2/page/component/number_field.rb +12 -0
- data/lib/ecoportal/api/v2/page/component/people_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/plain_text_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/reference_field.rb +12 -0
- data/lib/ecoportal/api/v2/page/component/rich_text_field.rb +13 -0
- data/lib/ecoportal/api/v2/page/component/selection_field.rb +18 -0
- data/lib/ecoportal/api/v2/page/component/selection_option.rb +15 -0
- data/lib/ecoportal/api/v2/page/component/signature_field.rb +14 -0
- data/lib/ecoportal/api/v2/page/component/tag_field.rb +12 -0
- data/lib/ecoportal/api/v2/page/components.rb +20 -0
- data/lib/ecoportal/api/v2/page/section.rb +36 -0
- data/lib/ecoportal/api/v2/page/sections.rb +14 -0
- data/lib/ecoportal/api/v2/page/stage.rb +16 -0
- data/lib/ecoportal/api/v2/page/stages.rb +14 -0
- data/lib/ecoportal/api/v2/pages.rb +63 -0
- data/lib/ecoportal/api/v2/register.rb +36 -0
- data/lib/ecoportal/api/v2/registers.rb +35 -0
- data/lib/ecoportal/api/v2/template.rb +10 -0
- data/lib/ecoportal/api/v2/version.rb +7 -0
- metadata +219 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class ChecklistField < Page::Component
|
7
|
+
class_resolver :checklist_item_class, "Ecoportal::API::V2::Page::Component::ChecklistItem"
|
8
|
+
embeds_multiple :items, klass: :checklist_item_class, order_key: :weight
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'ecoportal/api/v2/page/component/checklist_item'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class File < Common::Content::DoubleModel
|
7
|
+
passkey :id
|
8
|
+
passthrough :patch_ver, :position
|
9
|
+
passthrough :content_type, :file_size, :file_container_id
|
10
|
+
passdate :file_update_at
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class FilesField < Page::Component
|
7
|
+
class_resolver :file_class, "Ecoportal::API::V2::Page::File"
|
8
|
+
embeds_multiple :items, klass: :file_class, order_key: :position
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class Image < Common::Content::DoubleModel
|
7
|
+
passkey :id
|
8
|
+
passthrough :patch_ver, :weight
|
9
|
+
passthrough :height, :width, :caption
|
10
|
+
passthrough :dimensions, :styles
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class ImagesField < Page::Component
|
7
|
+
class_resolver :image_class, "Ecoportal::API::V2::Page::Image"
|
8
|
+
embeds_multiple :images, klass: :image_class, order_key: :weight
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class SelectionField < Page::Component
|
7
|
+
passthrough :multiple, :other, :other_desc
|
8
|
+
|
9
|
+
class_resolver :selection_option_class, "Ecoportal::API::V2::Page::Component::SelectionOption"
|
10
|
+
embeds_multiple :options, klass: :selection_option_class, order_key: :weight
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'ecoportal/api/v2/page/component/selection_option'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Component
|
6
|
+
class SelectionOption < Common::Content::DoubleModel
|
7
|
+
passkey :id
|
8
|
+
passthrough :patch_ver, :name, :value
|
9
|
+
passthrough :weight, :selected
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Components < Common::Content::CollectionModel
|
6
|
+
class_resolver :component_class, "Ecoportal::API::V2::Page::Component"
|
7
|
+
|
8
|
+
self.klass do |doc|
|
9
|
+
component_class.get_class(doc).tap do |klass|
|
10
|
+
klass.key = :id
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
order_matters = true
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Section < Common::Content::DoubleModel
|
6
|
+
passkey :id
|
7
|
+
passthrough :patch_ver, :weight, :type
|
8
|
+
passthrough :heading, :left_heading, :right_heading
|
9
|
+
passarray :component_ids, :left_component_ids, :right_component_ids
|
10
|
+
|
11
|
+
def split?
|
12
|
+
doc && doc["type"] == "split"
|
13
|
+
end
|
14
|
+
|
15
|
+
def all_component_ids
|
16
|
+
return component_ids.to_a unless split?
|
17
|
+
left_component_ids.to_a | right_component_ids.to_a
|
18
|
+
end
|
19
|
+
|
20
|
+
def component?(id)
|
21
|
+
all_component_ids.include?(id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def components
|
25
|
+
sec_ids = all_component_ids
|
26
|
+
root.components.values_at(*sec_ids).select.with_index do |fld, i|
|
27
|
+
puts "Warning: section #{id} points to missing field #{sec_ids[i]}" if !fld
|
28
|
+
fld && (!block_given? || yield(fld))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
class Page
|
5
|
+
class Stage < Common::Content::DoubleModel
|
6
|
+
passkey :id
|
7
|
+
passthrough :patch_ver
|
8
|
+
passthrough :name
|
9
|
+
passarray :subtags, order_matters: false
|
10
|
+
passarray :section_ids
|
11
|
+
passthrough :can
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class V2
|
4
|
+
# @attr_reader client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
|
5
|
+
class Pages
|
6
|
+
extend Common::BaseClass
|
7
|
+
include Common::Content::DocHelpers
|
8
|
+
|
9
|
+
class_resolver :page_class, "Ecoportal::API::V2::Page"
|
10
|
+
|
11
|
+
attr_reader :client
|
12
|
+
|
13
|
+
# @param client [Common::Client] a `Common::Client` object that holds the configuration of the api connection.
|
14
|
+
# @return [Schemas] an instance object ready to make schema api requests.
|
15
|
+
def initialize(client)
|
16
|
+
@client = client
|
17
|
+
end
|
18
|
+
|
19
|
+
# Gets a page via api.
|
20
|
+
# @note if the request has `success?` the returned `object.result` gives an object with that `Page`.
|
21
|
+
# @param doc [String, Hash, Page] data containing an `id` of the target page.
|
22
|
+
# @return [Ecoportal::API::V2::Page] the target page.
|
23
|
+
def get(doc)
|
24
|
+
id = get_id(doc)
|
25
|
+
response = client.get("/pages/#{CGI.escape(id)}")
|
26
|
+
Common::Content::WrappedResponse.new(response, page_class).result
|
27
|
+
end
|
28
|
+
|
29
|
+
# Gets a `new` non-existing page via api with all the ids initialized.
|
30
|
+
# @param from [String, Hash, Page] template or `id` of the template
|
31
|
+
# @return [Ecoportal::API::V2::Page] the new page object.
|
32
|
+
def get_new(from)
|
33
|
+
id = get_id(from)
|
34
|
+
response = client.get("/pages/new", params: {template_id: id})
|
35
|
+
# TODO: make it so the obtained `doc` can be used as `doc`, yet `source_doc` to be empty {}
|
36
|
+
#Common::Content::WrappedResponse.new(response, page_class).result
|
37
|
+
end
|
38
|
+
|
39
|
+
# Requests a creation of a page via api.
|
40
|
+
# @param doc [Hash, Page] data that at least contains an `id` (internal or external) of the target page.
|
41
|
+
# @param from [String, Hash, Page] template or `id` of the template
|
42
|
+
# @return [Response] an object with the api response.
|
43
|
+
def create(doc, from:)
|
44
|
+
body = get_body(doc)
|
45
|
+
id = get_id(from)
|
46
|
+
client.post("/pages", data: body, params: {template_id: id})
|
47
|
+
end
|
48
|
+
|
49
|
+
# Requests to update an existing page via api.
|
50
|
+
# @param doc [Hash, Page] data that at least contains an `id` (internal or external) of the target page.
|
51
|
+
# @return [Response] an object with the api response.
|
52
|
+
def update(doc)
|
53
|
+
body = get_body(doc) # , level: "page"
|
54
|
+
id = get_id(doc)
|
55
|
+
client.patch("/pages/#{CGI.escape(id)}", data: body)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
require 'ecoportal/api/v2/page'
|