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 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"