loader_droid 0.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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/loader_droid +44 -0
  3. data/case_manager.rb +59 -0
  4. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7857681d212763c24b2fc247bb3daaa9fe45f414
4
+ data.tar.gz: a6076627d10312882bf5700e1d4f8ad48fd58fcd
5
+ SHA512:
6
+ metadata.gz: 45d62f3387c847eb36fea9da82ce70ea614b659d85b4725771ed66d4a2b756529c98b54ad18d86e60262143b50dc256d564891acf3d5c51f135fc763442ab828
7
+ data.tar.gz: 891a9a1168b9b5867e33d23db1be048e35728cf0d248e2eabfdbd552a6a953700f1be8bc64b89ac648677fb7eecf31156ca5dd566e9f5d394f0cb72bdb54040d
data/bin/loader_droid ADDED
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ require "thor"
3
+ require "faker"
4
+
5
+ require_relative "../case_manager.rb"
6
+
7
+ class LoaderDroid < Thor
8
+
9
+ desc "solutions URL USERNAME PASSWORD", "List solutions"
10
+ def solutions(base_url, username, password)
11
+ c = CaseManager.new(base_url, username, password)
12
+ response = c.solution_list
13
+ json = JSON.parse(response.body)
14
+ json.each do |solution_json|
15
+ puts "#{solution_json["name"]}\n"
16
+ end
17
+ end
18
+
19
+ desc "create_case YML_FILE PASSWORD", "Create a case"
20
+ method_options :count => 1
21
+ def create_case(properties_yml_file, password)
22
+ config = YAML.load_file(properties_yml_file)
23
+ c = CaseManager.new(config["server"]["base_url"], config["server"]["username"], password)
24
+
25
+ case_properties = config["case_properties"]
26
+ options[:count].times do
27
+ dynamic_properties = {}
28
+ config["dynamic_case_properties"].each_pair do |k,v|
29
+ dynamic_properties[k] = eval(v)
30
+ end
31
+
32
+ all_case_properties = {}
33
+ all_case_properties.merge!(dynamic_properties) if dynamic_properties
34
+ all_case_properties.merge!(case_properties) if case_properties
35
+
36
+ puts "** #{all_case_properties}"
37
+
38
+ response = c.create_case(config["solution_name"], config["case_type"], all_case_properties)
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ LoaderDroid.start
data/case_manager.rb ADDED
@@ -0,0 +1,59 @@
1
+ require "httparty"
2
+
3
+ class CaseManager
4
+ include HTTParty
5
+
6
+ #debug_output $stdout
7
+
8
+ def initialize(base_url, username, password)
9
+ @base_url = base_url
10
+ @username = username
11
+ @password = password
12
+ end
13
+
14
+ def logon
15
+ options = {query: {userid: @username, password: @password}}
16
+ response = self.class.post("#{@base_url}/logon.do", options)
17
+ json = JSON.parse(response.body[4..-1])
18
+ @security_token = json['security_token']
19
+ @cookie = response.headers['Set-Cookie']
20
+ end
21
+
22
+ def solution_list
23
+ self.logon unless @security_token
24
+
25
+ options = query_options("SolutionListService").merge(cookie_options)
26
+
27
+ self.class.get("#{@base_url}/plugin.do", options)
28
+ end
29
+
30
+ def solution_details(solution_name)
31
+ self.logon unless @security_token
32
+
33
+ options = query_options("SolutionDetailsService", solution_name).merge(cookie_options)
34
+
35
+ self.class.get("#{@base_url}/plugin.do", options)
36
+ end
37
+
38
+ def create_case(solution_name, case_type, case_properties)
39
+ self.logon unless @security_token
40
+
41
+ options = query_options("CreateCaseService", solution_name)
42
+ options[:query].merge!({case_type: case_type, case_properties: case_properties.to_json })
43
+ options.merge!(cookie_options)
44
+
45
+ self.class.post("#{@base_url}/plugin.do", options)
46
+ end
47
+
48
+ private
49
+ def query_options(action, solution_name = nil)
50
+ options = { query: {security_token: @security_token, plugin: "CaseAccelerator", action: action} }
51
+ options[:query][:solution_name] = solution_name if solution_name
52
+ return options
53
+ end
54
+
55
+
56
+ def cookie_options
57
+ { headers: {"Cookie" => @cookie} }
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: loader_droid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Matt Brooke-Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem to help loading cases into Case Manager
14
+ email: matt@futureworkshops.com
15
+ executables:
16
+ - loader_droid
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/loader_droid
21
+ - case_manager.rb
22
+ homepage: http://rubygems.org/gems/loader_droid
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.4.5.1
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: IBM Case Manager Loader Droid
46
+ test_files: []