mio-config 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
![
|
3
|
+
[![Build Status](https://circleci.com/gh/Financial-Times/mio-config.png)](https://circleci.com/gh/Financial-Times/mio-config)
|
4
|
+
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/mio-config.svg)](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"
|