mio-config 2.10.0 → 2.11.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: 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"