mio-config 2.0.3 → 2.1.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/README.md +3 -1
- data/lib/mio/client.rb +12 -3
- data/lib/mio/model/metadata_definition.rb +97 -0
- data/lib/mio/model/metadatadefinition/definition.rb +22 -0
- data/lib/mio/model/metadatadefinition/option.rb +17 -0
- data/lib/mio/requests.rb +10 -4
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28407f60a388f31bddba0f9a24b88db63c528e89
|
4
|
+
data.tar.gz: 6af9294987eb672ea0a8a7cdb179e5cf11b6fc7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a74e724e2d92f5c35f80089b3da5ad52ac7340f916983e770338e53caf3f805fe55611b419afe9851d1bb64e8e2fcb96956134ec7e6d64641b0d9911626ff24a
|
7
|
+
data.tar.gz: 681151eaad94803edb5d756a3f1bae3943eb2ca1d2e9eee198927cad94d435ebf3e488469bcf4be9de0b8c207ddaa06a7f761e25090442f08610e2c0b779e895
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Mio Config
|
2
2
|
|
3
|
-
](https://circleci.com/gh/Financial-Times/mio-config)
|
4
|
+
|
5
|
+
[](https://badge.fury.io/rb/mio-config)
|
4
6
|
|
5
7
|
This simple rubygem will allow for a codified build out of mio resources and configuration.
|
6
8
|
|
data/lib/mio/client.rb
CHANGED
@@ -50,7 +50,6 @@ class Mio
|
|
50
50
|
make_object response.body
|
51
51
|
end
|
52
52
|
|
53
|
-
|
54
53
|
def configure resource, id, payload, opts={}
|
55
54
|
url = path(resource, id, :configuration)
|
56
55
|
response = put url, payload, opts
|
@@ -61,6 +60,16 @@ class Mio
|
|
61
60
|
make_object response.body
|
62
61
|
end
|
63
62
|
|
63
|
+
def definition resource, payload, opts={}
|
64
|
+
url = path(resource)
|
65
|
+
response = put url, payload, opts, 'application/vnd.nativ.mio.v1+xml'
|
66
|
+
unless response.success?
|
67
|
+
raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}"
|
68
|
+
end
|
69
|
+
|
70
|
+
make_object response.body
|
71
|
+
end
|
72
|
+
|
64
73
|
def action resource, id, payload, opts={}
|
65
74
|
url = path(resource, id, :actions)
|
66
75
|
statuses = get url, opts
|
@@ -87,8 +96,8 @@ class Mio
|
|
87
96
|
Mio::Requests.make_request :post, @agent, url, opts, payload
|
88
97
|
end
|
89
98
|
|
90
|
-
def put url, payload, opts
|
91
|
-
Mio::Requests.make_request :put, @agent, url, opts, payload
|
99
|
+
def put url, payload, opts, content_type='application/vnd.nativ.mio.v1+json'
|
100
|
+
Mio::Requests.make_request :put, @agent, url, opts, payload, content_type
|
92
101
|
end
|
93
102
|
|
94
103
|
def make_object response
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require 'builder'
|
2
|
+
|
3
|
+
class Mio
|
4
|
+
class Model
|
5
|
+
class MetadataDefinition < Model
|
6
|
+
set_resource :metadataDefinitions
|
7
|
+
|
8
|
+
field :name, String, 'Name of the metadata definition'
|
9
|
+
field :displayName, String, 'Display name'
|
10
|
+
field :visibility, Array,'IDs of accounts that may see this', [4]
|
11
|
+
field :searchable, Symbol, 'Searchable metadata'
|
12
|
+
field :required, Symbol, 'Required Metadata'
|
13
|
+
field :editable, Symbol, 'Editable within the workflow tool'
|
14
|
+
field :definitions, Array, 'List of definitions'
|
15
|
+
|
16
|
+
field :enable, Symbol, ':true or :false', :true
|
17
|
+
field :start, Symbol, ':true or :false', :true
|
18
|
+
|
19
|
+
def create_hash
|
20
|
+
{name: @args.name,
|
21
|
+
visibilityIds: @args.visibility}
|
22
|
+
end
|
23
|
+
|
24
|
+
def trim_xml_from_element xml, endTag='</metadata>'
|
25
|
+
endTagIdx = xml.index endTag
|
26
|
+
if (endTagIdx)
|
27
|
+
xmlEnd = endTagIdx + endTag.length
|
28
|
+
if (xmlEnd < xml.length)
|
29
|
+
xml = xml[0...-(xml.length-xmlEnd)]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
xml
|
33
|
+
end
|
34
|
+
|
35
|
+
def definition_xml
|
36
|
+
builder = Builder::XmlMarkup.new
|
37
|
+
builder.metadata name: @args.name do |metadata|
|
38
|
+
metadata.searchable @args.searchable.to_s;
|
39
|
+
metadata.editable @args.editable.to_s;
|
40
|
+
metadata.required @args.required.to_s;
|
41
|
+
metadata.children do |children|
|
42
|
+
@args.definitions.each do |definition|
|
43
|
+
case definition.fetch :formType
|
44
|
+
when "textarea"
|
45
|
+
children.text(name: definition.fetch(:name), display_name: @args.displayName) do |text|
|
46
|
+
text.searchable definition.fetch(:searchable).to_s;
|
47
|
+
text.editable definition.fetch(:editable).to_s;
|
48
|
+
text.required definition.fetch(:required);
|
49
|
+
text.validation(handler: definition.fetch(:validationHandler));
|
50
|
+
text.tag! "form-type" do |x|
|
51
|
+
x.text! definition.fetch(:formType);
|
52
|
+
end
|
53
|
+
end
|
54
|
+
when "select"
|
55
|
+
children.tag!("single-option", name: definition.fetch(:name)) do |singleOption|
|
56
|
+
singleOption.searchable definition.fetch(:searchable).to_s;
|
57
|
+
singleOption.editable definition.fetch(:editable).to_s;
|
58
|
+
singleOption.required definition.fetch(:required);
|
59
|
+
singleOption.children do |children|
|
60
|
+
definition.fetch(:options).each do |option|
|
61
|
+
children.tag!("option-child", name: option.fetch(:name),
|
62
|
+
default: option.fetch(:default),
|
63
|
+
value: option.fetch(:value),
|
64
|
+
display_name: option.fetch(:displayName));
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
trim_xml_from_element builder.target!
|
73
|
+
end
|
74
|
+
|
75
|
+
def go
|
76
|
+
if @args.definitions.empty?
|
77
|
+
raise Mio::Model::EmptyField, 'Field definitions to Mio::Model::MetadataDefinition must contain at least one definition'
|
78
|
+
end
|
79
|
+
|
80
|
+
unless look_up
|
81
|
+
@object = create
|
82
|
+
else
|
83
|
+
@object = look_up
|
84
|
+
set_start :stop
|
85
|
+
end
|
86
|
+
definition_path = "#{self.class.resource_name}/#{@object['id']}/definition"
|
87
|
+
|
88
|
+
@client.definition definition_path, definition_xml
|
89
|
+
|
90
|
+
set_enable
|
91
|
+
return @object
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Mio
|
2
|
+
class Model
|
3
|
+
class MetadataDefinition
|
4
|
+
class Definition < Model
|
5
|
+
set_resource :metadatadefinition
|
6
|
+
|
7
|
+
field :name, String, 'Metadata Definition Name'
|
8
|
+
field :description, String, 'Metadata Definition Description'
|
9
|
+
field :type, String, 'Metadata type'
|
10
|
+
field :searchable, Symbol, 'Indexed and searchable', :true
|
11
|
+
field :editable, Symbol, 'Editable field', :true
|
12
|
+
field :required, Symbol, 'Required mandatory metadata item', :true
|
13
|
+
field :formType, String, 'Form control type'
|
14
|
+
field :validationHandler, String, 'Validation handler', nil
|
15
|
+
field :options, Array, 'Array of options', nil
|
16
|
+
|
17
|
+
nested true
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Mio
|
2
|
+
class Model
|
3
|
+
class MetadataDefinition
|
4
|
+
class Option < Model
|
5
|
+
set_resource :metadatadefinition
|
6
|
+
|
7
|
+
field :name, String, 'Metadata Definition Name'
|
8
|
+
field :displayName, String, 'Metadata Definition Description'
|
9
|
+
field :default, Symbol, 'Metadata type'
|
10
|
+
field :value, String, 'Indexed and searchable',
|
11
|
+
|
12
|
+
nested true
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/mio/requests.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
class Mio
|
2
2
|
module Requests
|
3
|
-
@@content_type = 'application/vnd.nativ.mio.v1+json'
|
4
3
|
|
5
|
-
def self.make_request type, agent, url, opts, body=nil
|
4
|
+
def self.make_request type, agent, url, opts, body=nil, content_type='application/vnd.nativ.mio.v1+json'
|
5
|
+
if content_type.nil?
|
6
|
+
content_type = 'application/vnd.nativ.mio.v1+json'
|
7
|
+
end
|
6
8
|
agent.method(type).call do |r|
|
7
9
|
r.url url
|
8
10
|
unless body.nil?
|
9
|
-
|
11
|
+
if content_type.include? 'json'
|
12
|
+
r.body = body.to_json
|
13
|
+
else
|
14
|
+
r.body = body
|
15
|
+
end
|
10
16
|
end
|
11
|
-
r.headers[:content_type] =
|
17
|
+
r.headers[:content_type] = content_type
|
12
18
|
end
|
13
19
|
end
|
14
20
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mio-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jspc
|
@@ -11,6 +11,20 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2016-04-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: builder
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: colorize
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +96,7 @@ dependencies:
|
|
82
96
|
- !ruby/object:Gem::Version
|
83
97
|
version: '0'
|
84
98
|
description: Configure MIO
|
85
|
-
email: james.condron@ft.com
|
99
|
+
email: james.condron@ft.com, jem.rayfield@ft.com
|
86
100
|
executables: []
|
87
101
|
extensions: []
|
88
102
|
extra_rdoc_files:
|
@@ -99,6 +113,9 @@ files:
|
|
99
113
|
- "./lib/mio/model/groovy_script_wait.rb"
|
100
114
|
- "./lib/mio/model/hotfolder.rb"
|
101
115
|
- "./lib/mio/model/import_action.rb"
|
116
|
+
- "./lib/mio/model/metadata_definition.rb"
|
117
|
+
- "./lib/mio/model/metadatadefinition/definition.rb"
|
118
|
+
- "./lib/mio/model/metadatadefinition/option.rb"
|
102
119
|
- "./lib/mio/model/s3.rb"
|
103
120
|
- "./lib/mio/model/workflow.rb"
|
104
121
|
- "./lib/mio/model/workflow/node.rb"
|