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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffa8ff46bb173daec87410efdf09804467ce84af
4
- data.tar.gz: 075426f4fa4607bd59a53b27c6c6b043659a0b05
3
+ metadata.gz: 28407f60a388f31bddba0f9a24b88db63c528e89
4
+ data.tar.gz: 6af9294987eb672ea0a8a7cdb179e5cf11b6fc7e
5
5
  SHA512:
6
- metadata.gz: c5fe677351fe8a6de052dee690799b4a3a5f89ac6c92da1c46f08f1bd5a91b6139068019c6631f2ce4838a2f2e541a4d08adcce263a4ef9d7e695b740fffe1c0
7
- data.tar.gz: 11d7b7ed2af6bc29bfb3851bd973f758be80b4b391a4efe39c16afbfab5049dab03e2af173c419f101c0e95078682c69947b35e53752b297a28d4b122db8ae50
6
+ metadata.gz: a74e724e2d92f5c35f80089b3da5ad52ac7340f916983e770338e53caf3f805fe55611b419afe9851d1bb64e8e2fcb96956134ec7e6d64641b0d9911626ff24a
7
+ data.tar.gz: 681151eaad94803edb5d756a3f1bae3943eb2ca1d2e9eee198927cad94d435ebf3e488469bcf4be9de0b8c207ddaa06a7f761e25090442f08610e2c0b779e895
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Mio Config
2
2
 
3
- ![build status](https://circleci.com/gh/Financial-Times/mio-config.png)
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
- r.body = body.to_json
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] = @@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.3
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"