mio-config 2.10.0 → 2.11.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: d1308045c8215a36a9bdc6e4bf48814c7d6e106c
4
- data.tar.gz: 6ce46bd3210f83ad1aae98cdc30bbbea234599db
3
+ metadata.gz: 1fdb93a6563908c0714373acc4eb3bb028de7266
4
+ data.tar.gz: de125590f391106cdb7385da4f0515c50ea38cab
5
5
  SHA512:
6
- metadata.gz: 095e1e0f82f81ce4e89242d33b33482eb3f340f66c37ccaa4317cf1e0a76016e0c6f27272575821b95313c83b8c0a95720b402d965b9d4e2079cf82fa714ff85
7
- data.tar.gz: dab75e68bda7f74fa933dfd66472c3170629d9e344ffd9a5be4c8ab2c38430cd4827f985344295c2e32cf1767099cb5da91df6ea5a3c1197ef8b1c3e41d189a5
6
+ metadata.gz: 1f087130190f9791497ef9a1cb41d73f1373d5ecfc80abd447231226eaf93ee69b0fe99d1cbfa8d106ad984880120872296250ecc72132381f94919a02e679a3
7
+ data.tar.gz: 0c3084fa2ad9a61955c09a8ed43fe2ded2a25471019b275eaf091700ab488dcb4534039aa762d48da647fd4d52fa6b08acabb4619b254ca66f90043d252808e9
data/lib/mio/client.rb CHANGED
@@ -19,6 +19,18 @@ class Mio
19
19
  @agent.basic_auth(username, password)
20
20
  end
21
21
 
22
+ def find resource, id, opts={}, accept='application/json'
23
+ url = path resource, id
24
+ response = get url, opts, accept
25
+ unless response.success? || response.status == 404
26
+ raise Mio::Client::LoadOfBollocks, "GET on #{url}, returned #{response.status}"
27
+ end
28
+
29
+ h = make_object response.body
30
+ h[:status] = response.status
31
+ h
32
+ end
33
+
22
34
  def find_all resource, opts={}, accept='application/json'
23
35
  url = path(resource)
24
36
  response = get url, opts, accept
data/lib/mio/errors.rb CHANGED
@@ -10,6 +10,8 @@ class Mio
10
10
  class DataValueError < ArgumentError ; end
11
11
  class NoSuchResource < ArgumentError ; end
12
12
  class EmptyField < ArgumentError ; end
13
+ class DateVariableInvalid < ArgumentError ; end
14
+ class ObjectVariableInvalid < ArgumentError ; end
13
15
  end
14
16
 
15
17
  class Config
data/lib/mio/model.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Mio
2
2
  class Model
3
- attr_reader :args
3
+ attr_reader :args, :search, :client
4
4
  class << self
5
5
  attr_accessor :fields, :resource_name
6
6
  def set_resource r
@@ -97,7 +97,7 @@ class Mio
97
97
  alias_method :start!, :set_start
98
98
 
99
99
  def validate
100
- testable = @args.dup.to_h
100
+ testable = self.args.dup.to_h
101
101
 
102
102
  self.class.fields.each do |f|
103
103
  unless testable.key? f[:name]
@@ -109,7 +109,8 @@ class Mio
109
109
  raise Mio::Model::DataTypeError, "#{f[:name]} should be of type #{f[:type]} for #{self}"
110
110
  end
111
111
 
112
- unless f['matcher'].nil? or extracted_field.to_s.match(f[:matcher])
112
+ #unless f[:matcher].nil? or extracted_field.to_s.match(f[:matcher])
113
+ if !f[:matcher].nil? && extracted_field.to_s.match(f[:matcher]).nil?
113
114
  raise Mio::Model::DataValueError, "#{self} #{f[:name]} value '#{extracted_field}' does not match #{f[:matcher]}"
114
115
  end
115
116
  end
@@ -8,4 +8,8 @@ end
8
8
 
9
9
  Dir[File.join(File.dirname(__FILE__), 'metadatadefinition', '*.rb')].each do |file|
10
10
  require File.join('mio', 'model', 'metadatadefinition', File.basename(file, File.extname(file)))
11
+ end
12
+
13
+ Dir[File.join(File.dirname(__FILE__), 'launchworkflow', '*.rb')].each do |file|
14
+ require File.join('mio', 'model', 'launchworkflow', File.basename(file, File.extname(file)))
11
15
  end
@@ -21,20 +21,13 @@ class Mio
21
21
  }
22
22
  end
23
23
 
24
- def get_message_template_id mesage_template_name
25
- r = 'messageTemplates'
26
- message_templates = @client.find_all(r)
27
-
28
- md = message_templates[r].find{|md| md['name'] == mesage_template_name}
29
- if md.nil?
30
- raise Mio::Model::NoSuchResource, 'No such message template [' + mesage_template_name + ']'
24
+ def config_hash
25
+ template = @search.find_messageTemplates_by_name(@args.template).first
26
+ if template.nil?
27
+ raise Mio::Model::NoSuchResource, 'No such template [' + @args.template + ']'
31
28
  end
32
29
 
33
- md['id']
34
- end
35
-
36
- def config_hash
37
- { 'message-template': { id: get_message_template_id(@args.template) },
30
+ { 'message-template': { id: template['id'] },
38
31
  recipients: { expression: [ { value: @args.recipientExpression, isExpression: false } ] }
39
32
  }
40
33
  end
@@ -24,19 +24,12 @@ class Mio
24
24
  }
25
25
  end
26
26
 
27
- def metadata_definition_id metadata_definition_name
28
- r = 'metadataDefinitions'
29
- metadata_definitions = @client.find_all(r)
30
-
31
- md = metadata_definitions[r].find{|md| md['name'] == metadata_definition_name}
32
- if md.nil?
33
- raise Mio::Model::NoSuchResource, 'No such metadata definition[' + metadata_definition_name + ']'
27
+ def config_hash
28
+ metadata_definition = @search.find_metadataDefinitions_by_name(@args.metadataDefinition).first
29
+ if metadata_definition.nil?
30
+ raise Mio::Model::NoSuchResource, 'No such metadata definition [' + @args.metadataDefinition + ']'
34
31
  end
35
32
 
36
- md['id']
37
- end
38
-
39
- def config_hash
40
33
  {
41
34
  "source-file": {
42
35
  "source": {
@@ -84,7 +77,7 @@ class Mio
84
77
  },
85
78
  "metadata": {
86
79
  "metadata-definition": {
87
- "id": metadata_definition_id(@args.metadataDefinition)
80
+ "id": metadata_definition['id']
88
81
  },
89
82
  "source-json-variable": {
90
83
  "value": @args.sourceJsonVariable,
@@ -0,0 +1,36 @@
1
+ class Mio
2
+ class Model
3
+ class LaunchWorkflowAction < Model
4
+ set_resource :actions
5
+
6
+ field :name, String, 'Name of the Import Action'
7
+ field :visibility, Array, 'Ids of the accounts which may see the import action', [4]
8
+ field :workflows, Array, 'Array of Launch Workflow configuration'
9
+ field :enable, Symbol, ':true or :false', :true
10
+ field :start, Symbol, ':true or :false', :true
11
+
12
+ def create_hash
13
+ plugin = 'tv.nativ.mio.enterprise.execution.action.file.impl.launch.DefaultLaunchWorkflowCommand'
14
+ {name: @args.name,
15
+ pluginClass: plugin,
16
+ visibilityIds: @args.visibility,
17
+ 'type': 'launch',
18
+ 'runRuleExpression': ''
19
+ }
20
+ end
21
+
22
+ def config_hash
23
+ {workflows: @args.workflows
24
+ }
25
+ end
26
+
27
+ def validate
28
+ super
29
+ if @args.workflows.empty?
30
+ raise Mio::Model::EmptyField, 'Field workflows to Mio::Model::LaunchWorkflowAction must contain at least one launch workflow'
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,32 @@
1
+ class Mio
2
+ class Model
3
+ class LaunchWorkflowAction
4
+ class LaunchWorkflow < Model
5
+ set_resource :actions
6
+
7
+ field :name, String, 'Name of the workflow to launch'
8
+ field :inheritVariables, Symbol, 'Inherit variables from calling workflow'
9
+ field :workFlowStringVariables, Array, ''
10
+ field :workFlowObjectVariables, Array, ''
11
+ field :workflowDateVariables, Array, ''
12
+
13
+ nested true
14
+
15
+ def create_hash
16
+ workflow_definition = @search.find_workflowDefinitions_by_name(@args.name).first
17
+ if workflow_definition.nil?
18
+ raise Mio::Model::NoSuchResource, 'No such workflowDefinition [' + @args.name + ']'
19
+ end
20
+
21
+ {Workflow: { id: workflow_definition['id']},
22
+ 'inherit-variables': @args.inheritVariables,
23
+ 'workflow-string-variable': @args.workFlowStringVariables,
24
+ 'workflow-object-variable': @args.workFlowObjectVariables,
25
+ 'workflow-date-variable': @args.workflowDateVariables
26
+ }
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,58 @@
1
+ class Mio
2
+ class Model
3
+ class LaunchWorkflowAction
4
+ class WorkflowVariable < Model
5
+ set_resource :actions
6
+
7
+ field :key, String, 'Variable key'
8
+ field :value, String, 'Variable value if type==date must be dd-MM-yy HH:mm:ss, if type==object must be numeric and exist as an asset'
9
+ field :type, String, 'Key type or prefix', nil, /^(string|date|object)$/
10
+
11
+ nested true
12
+
13
+ def create_hash
14
+ {@args.type+'-variable-key' => {value: @args.key, isExpression: false},
15
+ @args.type+'-variable-value' => {value: @args.value, isExpression: false}
16
+ }
17
+ end
18
+
19
+ def validate_date_value
20
+ # Ensure value conforms to dd-MM-yyyy HH:mm:ss
21
+ unless @args.value =~ /^(?:0?[1-9]|[1-2]\d|3[01])-(?:0?[1-9]|1[0-2])-\d{4}\s([0]?\d|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/
22
+ raise Mio::Model::DateVariableInvalid, 'Workflow variable of type date must conform to dd-MM-yy HH:mm:ss [' + @args.value + ']'
23
+ end
24
+ end
25
+
26
+ def asset_by_id
27
+ asset = @client.find 'assets', @args.value
28
+
29
+ if asset[:status] == 404
30
+ raise Mio::Model::NoSuchResource, 'No such asset [' + @args.value + ']'
31
+ end
32
+ @args.value
33
+ end
34
+
35
+ def validate_object_value
36
+ unless @args.value =~ /^[0-9]*$/
37
+ raise Mio::Model::ObjectVariableInvalid, 'Workflow variable of type object must be a number [' + @args.value + ']'
38
+ end
39
+ asset_by_id
40
+ end
41
+
42
+ def validate
43
+ super
44
+ if @args.type == 'date'
45
+ validate_date_value
46
+ end
47
+ if @args.type == 'object'
48
+ validate_object_value
49
+ end
50
+
51
+ true
52
+ end
53
+ alias_method :valid?, :validate
54
+
55
+ end
56
+ end
57
+ end
58
+ end
@@ -6,7 +6,7 @@ class Mio
6
6
  field :name, String, 'Name of the Email Message Action'
7
7
  field :visibility, Array, 'Ids of the accounts which may see the import action', [4]
8
8
  field :subject, String, 'Subject of email'
9
- field :priority, String, 'Email Priority - Highest, High, Normal, Low, Lowest', 'Normal'
9
+ field :priority, String, 'Email Priority - Highest, High, Normal, Low, Lowest', 'Normal', /^(Highest|High|Normal|Low|Lowest)$/
10
10
  field :template, String, 'Email template HTML'
11
11
 
12
12
  field :enable, Symbol, ':true or :false', :true
@@ -6,12 +6,12 @@ class Mio
6
6
 
7
7
  field :name, String, 'Metadata Definition Name'
8
8
  field :displayName, String, 'Display name'
9
- field :type, String, 'Metdata type text|single-option|checkbox|image', 'textarea'
9
+ field :type, String, 'Metdata type tsingle-option|text|url|boolean|image', 'text', /^(single-option|text|url|boolean|image)$/
10
10
  field :description, String, 'Metadata Definition Description'
11
11
  field :searchable, Symbol, 'Indexed and searchable', :true
12
12
  field :editable, Symbol, 'Editable field', :true
13
13
  field :required, Symbol, 'Required mandatory metadata item', :true
14
- field :formType, String, 'Form control type'
14
+ field :formType, String, 'Form control type', 'textarea' , /^(select|textarea|text|checkbox|file)$/
15
15
  field :maxLength, Fixnum, 'MaxLength', -1
16
16
  field :validationHandler, String, 'Validation handler', ''
17
17
  field :options, Array, 'Array of options', []
@@ -22,24 +22,17 @@ class Mio
22
22
  }
23
23
  end
24
24
 
25
- def metadata_definition_id metadata_definition_name
26
- r = 'metadataDefinitions'
27
- metadata_definitions = @client.find_all(r)
28
-
29
- md = metadata_definitions[r].find{|md| md['name'] == metadata_definition_name}
30
- if md.nil?
31
- raise Mio::Model::NoSuchResource, 'No such metadata definition[' + metadata_definition_name + ']'
25
+ def config_hash
26
+ metadata_definition = @search.find_metadataDefinitions_by_name(@args.metadataDefinition).first
27
+ if metadata_definition.nil?
28
+ raise Mio::Model::NoSuchResource, 'No such metadata definition [' + @args.metadataDefinition + ']'
32
29
  end
33
30
 
34
- md['id']
35
- end
36
-
37
- def config_hash
38
31
  {"name": @args.name,
39
32
  "asset-type": 'group-asset',
40
33
  "creation-context": @args.creationContext,
41
34
  "variant-and-metadata": {"variant-name": @args.variantName,
42
- "metadata-details": {"metadata-definition": {"id": metadata_definition_id(@args.metadataDefinition)}}
35
+ "metadata-details": {"metadata-definition": {"id": metadata_definition['id']}}
43
36
  }
44
37
  }
45
38
  end
@@ -9,17 +9,6 @@ class Mio
9
9
  field :metadataDefinitions, Array, 'Array of metadata definition names'
10
10
  field :defaultMetadataDefinition, String, 'Default metadata definition name'
11
11
 
12
- def object_type_id object_type_name
13
- r = 'objectTypes'
14
- all_object_types = @client.find_all(r)
15
- object_type = all_object_types[r].find{|object_type| object_type['name'] == object_type_name}
16
- if object_type.nil?
17
- raise Mio::Model::NoSuchResource, 'No such object type [' + object_type_name + ']'
18
- end
19
-
20
- object_type['id']
21
- end
22
-
23
12
  def metadata_definition_hash metadata_definitions
24
13
  r = 'metadataDefinitions'
25
14
  all_metadata_definitions = @client.find_all(r)
@@ -56,8 +45,13 @@ class Mio
56
45
  def create_hash
57
46
  metadata_definitions = metadata_definition_hash @args.metadataDefinitions
58
47
 
48
+ object_type = @search.find_objectTypes_by_name(@args.objectType).first
49
+ if object_type.nil?
50
+ raise Mio::Model::NoSuchResource, 'No such object type [' + @args.objectType + ']'
51
+ end
52
+
59
53
  {name: @args.name,
60
- objectTypeId: object_type_id(@args.objectType),
54
+ objectTypeId: object_type['id'],
61
55
  defaultVariant: @args.defaultVariant,
62
56
  metadataDefinitionIds: metadata_definition_ids(metadata_definitions, @args.metadataDefinitions),
63
57
  defaultMetadataDefinition: metadata_definition_id(metadata_definitions, @args.defaultMetadataDefinition)}
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.10.0
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jspc
@@ -117,6 +117,9 @@ files:
117
117
  - "./lib/mio/model/groovy_script_wait.rb"
118
118
  - "./lib/mio/model/hotfolder.rb"
119
119
  - "./lib/mio/model/import_action.rb"
120
+ - "./lib/mio/model/launch_workflow_action.rb"
121
+ - "./lib/mio/model/launchworkflow/launch_workflow.rb"
122
+ - "./lib/mio/model/launchworkflow/workflow_variable.rb"
120
123
  - "./lib/mio/model/message_template.rb"
121
124
  - "./lib/mio/model/metadata_definition.rb"
122
125
  - "./lib/mio/model/metadatadefinition/definition.rb"