Birst_Command 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Birst_Command.gemspec +4 -3
- data/CHANGELOG.md +23 -0
- data/Gemfile +7 -3
- data/Gemfile.lock +65 -0
- data/README.md +34 -23
- data/Rakefile +0 -13
- data/bin/birstcl +5 -12
- data/lib/birst_command.rb +3 -1
- data/lib/birst_command/core_additions.rb +8 -0
- data/lib/birst_command/session.rb +110 -47
- data/lib/birst_command/settings.rb +26 -0
- data/lib/birst_command/version.rb +1 -1
- data/spec/bc_spec_fixtures.rb +70 -0
- data/spec/birst_command_spec.rb +13 -0
- data/spec/cookie_spec.rb +74 -0
- data/spec/sample_settings.yaml +9 -0
- data/spec/session_spec.rb +101 -0
- data/spec/session_spec_helper.rb +10 -0
- data/spec/settings_spec.rb +19 -0
- metadata +37 -30
- data/config.json_template +0 -6
- data/lib/birst_command/config.rb +0 -28
- data/test/.gitignore +0 -1
- data/test/config_test.json_template +0 -8
- data/test/standard/resources/config_test.json +0 -4
- data/test/standard/test_add_user_to_space.rb +0 -49
- data/test/standard/test_command_helper.rb +0 -44
- data/test/standard/test_cookie.rb +0 -61
- data/test/standard/test_copy_space.rb +0 -55
- data/test/standard/test_list_spaces.rb +0 -24
- data/test/standard/test_login.rb +0 -23
- data/test/standard/test_password.rb +0 -21
- data/test/standard/test_read_config.rb +0 -18
- data/test/test_birst_command.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a54ea884b6fdfe9bdcb8e1927c3bfa1bc48d80c0
|
4
|
+
data.tar.gz: 643fea5022b6b6f58a616462dbbf1ea053ad0e7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79b9f9032f8d8a9acfd3782560b9bc2a3f2164dc9862f3f9cb5c53c59156fbba418306c467a55fb99a8f8b3904c4487e0e0e647cbc08f5b7811268d8594d663d
|
7
|
+
data.tar.gz: 9563a4c7d0cced6aa03c3e4351ced654d56cce4286a2f30112358ba68448dab83b944b597fbca04c214896d8b3c837bbf61806515feaa4c22e09f7c713332cca
|
data/.rspec
ADDED
data/Birst_Command.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
# -*- encoding: utf-8 mode: ruby -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'birst_command/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "Birst_Command"
|
@@ -15,9 +15,10 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rubyforge_project = "Birst_Command"
|
16
16
|
|
17
17
|
s.required_ruby_version = '~> 2'
|
18
|
-
s.add_runtime_dependency "savon", ["~> 2.
|
18
|
+
s.add_runtime_dependency "savon", ["~> 2.5"]
|
19
19
|
s.add_runtime_dependency "httpclient", ["~> 2.3"]
|
20
20
|
s.add_runtime_dependency "envcrypt", ["~> 0.1"]
|
21
|
+
s.add_runtime_dependency "configatron", ["~> 3.2"]
|
21
22
|
|
22
23
|
s.files = `git ls-files`.split("\n")
|
23
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
Changelog
|
2
|
+
==============
|
3
|
+
|
4
|
+
### v0.6.0
|
5
|
+
- Config file now uses YAML instead of JSON
|
6
|
+
|
7
|
+
- Replaced the `Config` module with a `Settings` constant that uses
|
8
|
+
[Configatron](https://github.com/markbates/configatron) to configure
|
9
|
+
default settings for all subsequent sessions.
|
10
|
+
|
11
|
+
- Remove the `start` method of `Birst_Command::Session`. Sessions are now
|
12
|
+
created using `new`. All arguments use `Settings` as defaults, but can
|
13
|
+
be overridden on a session-by-session basis.
|
14
|
+
|
15
|
+
- Renamed `Session#token` to `Session#login_token`.
|
16
|
+
|
17
|
+
- Renamed `Session#auth_cookies` to `Session#auth_cookie`.
|
18
|
+
|
19
|
+
- Replaced `Session` option `use_cookie` with `auth_cookie`.
|
20
|
+
|
21
|
+
|
22
|
+
### v0.5.0
|
23
|
+
- Migrated password handling to use Envcrypt
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
Birst_Command (0.6.0)
|
5
|
+
configatron (~> 3.2)
|
6
|
+
envcrypt (~> 0.1)
|
7
|
+
httpclient (~> 2.3)
|
8
|
+
savon (~> 2.5)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
akami (1.2.2)
|
14
|
+
gyoku (>= 0.4.0)
|
15
|
+
nokogiri
|
16
|
+
builder (3.2.2)
|
17
|
+
configatron (3.2.0)
|
18
|
+
diff-lcs (1.2.5)
|
19
|
+
envcrypt (0.1.0)
|
20
|
+
gyoku (1.1.1)
|
21
|
+
builder (>= 2.1.2)
|
22
|
+
httpclient (2.4.0)
|
23
|
+
httpi (2.1.0)
|
24
|
+
rack
|
25
|
+
rubyntlm (~> 0.3.2)
|
26
|
+
macaddr (1.7.1)
|
27
|
+
systemu (~> 2.6.2)
|
28
|
+
mime-types (1.25.1)
|
29
|
+
mini_portile (0.6.0)
|
30
|
+
nokogiri (1.6.2.1)
|
31
|
+
mini_portile (= 0.6.0)
|
32
|
+
nori (2.4.0)
|
33
|
+
rack (1.5.2)
|
34
|
+
rspec (2.99.0)
|
35
|
+
rspec-core (~> 2.99.0)
|
36
|
+
rspec-expectations (~> 2.99.0)
|
37
|
+
rspec-mocks (~> 2.99.0)
|
38
|
+
rspec-core (2.99.0)
|
39
|
+
rspec-expectations (2.99.0)
|
40
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
41
|
+
rspec-mocks (2.99.0)
|
42
|
+
rubyntlm (0.3.4)
|
43
|
+
savon (2.5.1)
|
44
|
+
akami (~> 1.2.0)
|
45
|
+
builder (>= 2.1.2)
|
46
|
+
gyoku (~> 1.1.0)
|
47
|
+
httpi (~> 2.1.0)
|
48
|
+
nokogiri (>= 1.4.0)
|
49
|
+
nori (~> 2.4.0)
|
50
|
+
uuid (~> 2.3.7)
|
51
|
+
wasabi (~> 3.3.0)
|
52
|
+
systemu (2.6.4)
|
53
|
+
uuid (2.3.7)
|
54
|
+
macaddr (~> 1.0)
|
55
|
+
wasabi (3.3.0)
|
56
|
+
httpi (~> 2.0)
|
57
|
+
mime-types (< 2.0.0)
|
58
|
+
nokogiri (>= 1.4.0)
|
59
|
+
|
60
|
+
PLATFORMS
|
61
|
+
ruby
|
62
|
+
|
63
|
+
DEPENDENCIES
|
64
|
+
Birst_Command!
|
65
|
+
rspec (~> 2.14)
|
data/README.md
CHANGED
@@ -11,8 +11,8 @@ Birst user that needed to set up a very basic Ruby interface.
|
|
11
11
|
|
12
12
|
# Installation & Setup
|
13
13
|
|
14
|
-
**SPECIAL NOTE:**
|
15
|
-
|
14
|
+
**SPECIAL NOTE:** Many changes since version 0.5.0. Read the
|
15
|
+
[Changelog](CHANGELOG.md).
|
16
16
|
|
17
17
|
Prerequisites: Ruby > 2.0 and rubygems.
|
18
18
|
|
@@ -21,15 +21,18 @@ rbenv/bundler as you prefer.
|
|
21
21
|
|
22
22
|
After installing, you'll need to create a Birst Command config file
|
23
23
|
that contains the credentials you'll use to connect to Birst. This
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
24
|
+
is a yaml file that should look something like
|
25
|
+
|
26
|
+
````yaml
|
27
|
+
---
|
28
|
+
session:
|
29
|
+
wsdl: "https://app2101.bws.birst.com/CommandWebService.asmx?WSDL"
|
30
|
+
endpoint: "https://app2101.bws.birst.com/CommandWebService.asmx"
|
31
|
+
username: "BirstUsername"
|
32
|
+
password: "EncryptedPassword"
|
33
|
+
soap_log: true
|
34
|
+
soap_log_level: :debug
|
35
|
+
````
|
33
36
|
Save it to `$HOME/.birstcl`. Most users should only need to modify
|
34
37
|
the username and password. (**Note**: do not use `login.bws.birst.com`
|
35
38
|
since it does not use an updated WSDL; a specific app server must be
|
@@ -56,6 +59,15 @@ Copy and paste the encrypted password (aka "secret') into the
|
|
56
59
|
running in a development environment, you can include these in your
|
57
60
|
bash `~/.profile` file.
|
58
61
|
|
62
|
+
Also note that the YAML config file is pre-processed with ERB. So if
|
63
|
+
you also want to keep your encrypted password in an environment
|
64
|
+
variable, you could replace the `password` line above with
|
65
|
+
````yaml
|
66
|
+
...
|
67
|
+
password: "<%= ENV['MY_ENCRYPTED_PASSWORD'] %>"
|
68
|
+
...
|
69
|
+
````
|
70
|
+
|
59
71
|
# Usage - Birst command line tool
|
60
72
|
|
61
73
|
Birst Command also installs a rudimentary command line tool for interacting
|
@@ -106,9 +118,13 @@ In your Ruby program, include the Birst Command gem and load the config file via
|
|
106
118
|
````ruby
|
107
119
|
require 'rubygems'
|
108
120
|
require 'bundler/setup'
|
109
|
-
require '
|
121
|
+
require 'birst_command'
|
122
|
+
|
123
|
+
Birst_Command.load_settings_from_file(file)
|
124
|
+
|
125
|
+
# Or you can forego the settings file and set them explicitly in code via
|
126
|
+
Birst_Command::Settings.session.username = "George"
|
110
127
|
|
111
|
-
Birst_Command::Config.read_config(File.join(File.dirname(__FILE__),"config.json"))
|
112
128
|
````
|
113
129
|
|
114
130
|
Birst commands are submitted in session blocks, which automatically
|
@@ -117,7 +133,7 @@ logging out. For example, to list all spaces that you have rights to,
|
|
117
133
|
you can submit the following code
|
118
134
|
|
119
135
|
````ruby
|
120
|
-
Birst_Command::Session.
|
136
|
+
Birst_Command::Session.new do |bc|
|
121
137
|
spaces = bc.list_spaces
|
122
138
|
puts "#{JSON.pretty_generate spaces}"
|
123
139
|
end
|
@@ -153,7 +169,7 @@ as an argument hash. All arguments are mandatory even if they're blank/null
|
|
153
169
|
(Birst web API requirement). For example, to create a new space,
|
154
170
|
|
155
171
|
````ruby
|
156
|
-
Birst_Command::Session.
|
172
|
+
Birst_Command::Session.new do |bc|
|
157
173
|
new_space_id = bc.create_new_space :spaceName => "myNewSpace", :comments => "Just testing",:automatic => "false"
|
158
174
|
end
|
159
175
|
````
|
@@ -167,16 +183,16 @@ a copy job and save the `session_cookie` and `job_token` in variables.
|
|
167
183
|
````ruby
|
168
184
|
session_cookie = nil
|
169
185
|
job_token = nil
|
170
|
-
Session.
|
186
|
+
Bist_Command::Session.new do |bc|
|
171
187
|
job_token = bc.copy_space :spFromID => @from_id, :spToID => @to_id, :mode => "replicate", :options => "data;datastore;useunloadfeature"
|
172
|
-
session_cookie = bc.
|
188
|
+
session_cookie = bc.auth_cookie
|
173
189
|
end
|
174
190
|
````
|
175
191
|
In a subsequent session we can use the `session_cookie` on login via
|
176
192
|
|
177
193
|
````ruby
|
178
194
|
is_job_complete = false
|
179
|
-
Session.
|
195
|
+
Birst_Command::Session.new auth_cookie: session_cookie do |bc|
|
180
196
|
is_job_complete = bc.is_job_complete :jobToken => job_token
|
181
197
|
end
|
182
198
|
puts "COMPLETE? #{is_job_complete}"
|
@@ -224,8 +240,3 @@ entirely consistent in its use of camelCase for arguments (e.g.,
|
|
224
240
|
`listUsersInSpace`). This inconsistency requires us to **submit
|
225
241
|
commands as snake_case and arguments as the camelCase that Birst
|
226
242
|
uses.**
|
227
|
-
|
228
|
-
# Changelog
|
229
|
-
|
230
|
-
* 0.5.0
|
231
|
-
* Migrated password handling to use Envcrypt
|
data/Rakefile
CHANGED
@@ -1,14 +1 @@
|
|
1
1
|
# -*- mode: ruby -*-
|
2
|
-
|
3
|
-
require 'rake/testtask'
|
4
|
-
|
5
|
-
task :default => [:test_all]
|
6
|
-
|
7
|
-
# Run a specific unit test with `rake test TEST=test/Datalib/test_datalib.rb`
|
8
|
-
Rake::TestTask.new do |t|
|
9
|
-
|
10
|
-
t.libs << "test"
|
11
|
-
t.test_files = FileList['test/*/test_*.rb']
|
12
|
-
t.verbose = true
|
13
|
-
|
14
|
-
end
|
data/bin/birstcl
CHANGED
@@ -50,13 +50,6 @@ module BirstCL
|
|
50
50
|
@options[:arguments] = eval(opt)
|
51
51
|
end
|
52
52
|
|
53
|
-
=begin
|
54
|
-
@options[:json_full_path] = nil
|
55
|
-
opts.on("-f","--file <JSON FILE>","Path to JSON file containing command") do |opt|
|
56
|
-
@options[:json_full_path] = opt
|
57
|
-
end
|
58
|
-
=end
|
59
|
-
|
60
53
|
@options[:config_full_path] = "#{ENV['HOME']}/.birstcl"
|
61
54
|
opts.on("-s","--config_file <CONFIG FILE>", "Path to config file containing credentials (default: $HOME/.birstcl)") do |opt|
|
62
55
|
@options[:config_full_path] = opt
|
@@ -76,7 +69,7 @@ module BirstCL
|
|
76
69
|
|
77
70
|
|
78
71
|
def read_config_file
|
79
|
-
Birst_Command
|
72
|
+
Birst_Command.load_settings_from_file(@options[:config_full_path])
|
80
73
|
end
|
81
74
|
|
82
75
|
def write_cookie_file(file_full_path)
|
@@ -96,11 +89,11 @@ module BirstCL
|
|
96
89
|
|
97
90
|
output[:command] = @options[:command]
|
98
91
|
output[:arguments] = @options[:arguments]
|
99
|
-
Birst_Command::Session.
|
100
|
-
output[:
|
101
|
-
output[:auth_cookies] = bc.
|
92
|
+
Birst_Command::Session.new auth_cookie: @session_cookie do |bc|
|
93
|
+
output[:login_token] = bc.login_token
|
94
|
+
output[:auth_cookies] = bc.auth_cookie.inspect
|
102
95
|
output[:result] = bc.send(@options[:command], @options[:arguments])
|
103
|
-
@session_cookie = bc.
|
96
|
+
@session_cookie = bc.auth_cookie
|
104
97
|
end
|
105
98
|
puts "#{JSON.pretty_generate output}"
|
106
99
|
write_cookie_file(@options[:write_cookie_full_path])
|
data/lib/birst_command.rb
CHANGED
@@ -5,8 +5,10 @@ require 'base64'
|
|
5
5
|
require 'securerandom'
|
6
6
|
require 'json'
|
7
7
|
require 'envcrypt'
|
8
|
+
require 'configatron/core'
|
9
|
+
require 'erb'
|
8
10
|
|
9
|
-
require 'birst_command/
|
11
|
+
require 'birst_command/settings'
|
10
12
|
require 'birst_command/core_additions'
|
11
13
|
require 'birst_command/version'
|
12
14
|
require 'birst_command/session'
|
@@ -6,3 +6,11 @@ class String
|
|
6
6
|
gsub /^#{self[/\A\s*/]}/, ''
|
7
7
|
end
|
8
8
|
end
|
9
|
+
|
10
|
+
class Object
|
11
|
+
def symbolize_keys
|
12
|
+
return self.inject({}){|memo,(k,v)| memo[k.to_sym] = v.symbolize_keys; memo} if self.is_a? Hash
|
13
|
+
return self.inject([]){|memo,v | memo << v.symbolize_keys; memo} if self.is_a? Array
|
14
|
+
return self
|
15
|
+
end
|
16
|
+
end
|
@@ -1,74 +1,137 @@
|
|
1
1
|
module Birst_Command
|
2
|
-
class Session
|
3
|
-
def initialize
|
4
|
-
@options = Birst_Command::Config.options
|
5
|
-
|
6
|
-
@client = Savon.client(
|
7
|
-
wsdl: @options[:wsdl],
|
8
|
-
endpoint: @options[:endpoint],
|
9
|
-
convert_request_keys_to: :none,
|
10
|
-
soap_version: 1,
|
11
|
-
pretty_print_xml: true,
|
12
|
-
filters: [:password],
|
13
|
-
log_level: @options[:soap_log_level],
|
14
|
-
log: @options[:soap_log]
|
15
|
-
)
|
16
|
-
|
17
|
-
@response = nil
|
18
|
-
@token = nil
|
19
|
-
@auth_cookies = nil
|
20
|
-
end
|
21
|
-
|
22
|
-
attr_reader :token
|
23
|
-
attr_reader :auth_cookies
|
24
|
-
attr_reader :response
|
25
2
|
|
3
|
+
# Public: Session class used to interact with Birst Web Services
|
4
|
+
class Session
|
26
5
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
6
|
+
# Public: Initialize Session class
|
7
|
+
#
|
8
|
+
# wsdl - URL of soap WSDL (default: Settings.session.wsdl)
|
9
|
+
# endpoint - URL of soap endpoint (default: Settings.session.endpoint)
|
10
|
+
# soap_log - Boolean switch indicating whether logging should be performed (default: Settings.session.soap_log)
|
11
|
+
# soap_logger - Logger instance used to write log messages (default: Settings.session.soap_logger)
|
12
|
+
# soap_log_level - Logging level (default: Settings.session.soap_log_level)
|
13
|
+
# username - Username to use to login to Birst Web Services (default: Settings.session.username)
|
14
|
+
# password - Encrypted password for username (default: Settings.session.password)
|
15
|
+
# auth_cookie - Use a previously generated authorization cookie
|
16
|
+
#
|
17
|
+
# Returns nothing
|
18
|
+
def initialize(opts = {}, &block)
|
19
|
+
@login_token = nil
|
20
|
+
@options = set_options(opts)
|
21
|
+
@client = new_client
|
22
|
+
|
23
|
+
if block_given?
|
24
|
+
login_and_run(&block)
|
25
|
+
end
|
33
26
|
end
|
34
27
|
|
28
|
+
attr_reader :login_token
|
29
|
+
attr_reader :auth_cookie
|
35
30
|
|
36
|
-
def login(use_cookie: nil)
|
37
|
-
crypt = Envcrypt::Envcrypter.new
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
|
32
|
+
# Public: Login to Birst using the username and password. After login,
|
33
|
+
# the auth cookie and login token are captured and stored as an instance
|
34
|
+
# variable.
|
35
|
+
#
|
36
|
+
# Returns the Savon response.
|
37
|
+
def login
|
38
|
+
response = @client.call(:login,
|
39
|
+
cookies: @auth_cookie,
|
42
40
|
message: {
|
43
|
-
username: @
|
44
|
-
password:
|
41
|
+
username: @username,
|
42
|
+
password: decrypt(@password)
|
45
43
|
})
|
46
44
|
|
47
|
-
@
|
48
|
-
@
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def execute_block(&b)
|
53
|
-
yield self
|
45
|
+
@auth_cookie = response.http.cookies if @auth_cookie.nil?
|
46
|
+
@login_token = response.hash[:envelope][:body][:login_response][:login_result]
|
47
|
+
response
|
54
48
|
end
|
55
49
|
|
56
|
-
|
50
|
+
# Public: Method missing used to send commands to Birst Web Services.
|
51
|
+
#
|
52
|
+
# command_name - Symbol representing the name of the Birst command (snake_case)
|
53
|
+
# *args - Optional arguments that are passed to the Birst command.
|
54
|
+
#
|
55
|
+
# Returns - The soap result as a hash
|
57
56
|
def method_missing(command_name, *args)
|
58
57
|
command command_name, *args
|
59
58
|
end
|
60
59
|
|
61
|
-
|
60
|
+
# Public: Runs the command that is obtained from the method_missing call.
|
61
|
+
#
|
62
|
+
# command_name - Name of Birst command (snake_case).
|
63
|
+
# *args - Optional arguments that are passed to the Birst command.
|
64
|
+
#
|
65
|
+
# Returns - The soap result as a hash
|
62
66
|
def command(command_name, *args)
|
63
67
|
response_key = "#{command_name}_response".to_sym
|
64
68
|
result_key = "#{command_name}_result".to_sym
|
65
69
|
|
66
70
|
message = args.last.is_a?(Hash) ? args.pop : {}
|
67
71
|
result = @client.call command_name,
|
68
|
-
cookies: @
|
69
|
-
message: { :token => @
|
72
|
+
cookies: @auth_cookie,
|
73
|
+
message: { :token => @login_token }.merge(message)
|
70
74
|
|
71
75
|
result.hash[:envelope][:body][response_key][result_key]
|
72
76
|
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
# Private: Reads in an options hash and applies global default Settings
|
81
|
+
# if applicable. Options are converted into instance variables.
|
82
|
+
#
|
83
|
+
# Returns nothing.
|
84
|
+
def set_options(opts = {})
|
85
|
+
@wsdl = opts[:wsdl] || Settings.session.wsdl
|
86
|
+
@endpoint = opts[:endpoint] || Settings.session.endpoint
|
87
|
+
@soap_log = opts[:soap_log] || Settings.session.soap_log
|
88
|
+
@soap_logger = opts[:soap_logger] || Settings.session.soap_logger
|
89
|
+
@soap_log_level = opts[:soap_log_level] || Settings.session.soap_log_level
|
90
|
+
@username = opts[:username] || Settings.session.username
|
91
|
+
@password = opts[:password] || Settings.session.password
|
92
|
+
@auth_cookie = opts[:auth_cookie] || nil
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
# Private: Create a new Savon SOAP client.
|
97
|
+
#
|
98
|
+
# Returns a Savon instance configured with options specified in initialize.
|
99
|
+
def new_client
|
100
|
+
Savon.client(
|
101
|
+
wsdl: @wsdl,
|
102
|
+
endpoint: @endpoint,
|
103
|
+
convert_request_keys_to: :none,
|
104
|
+
soap_version: 1,
|
105
|
+
pretty_print_xml: true,
|
106
|
+
filters: [:password],
|
107
|
+
logger: @soap_logger,
|
108
|
+
log_level: @soap_log_level,
|
109
|
+
log: @soap_log
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
# Private: Login, run session commands specified in block, log out.
|
115
|
+
#
|
116
|
+
# &block - The block from the constructor is passed here and executed.
|
117
|
+
#
|
118
|
+
# Returns nothing.
|
119
|
+
def login_and_run(&block)
|
120
|
+
login
|
121
|
+
yield self
|
122
|
+
ensure
|
123
|
+
logout
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
# Private: Decrypt encrypted password (via Envcrypt).
|
128
|
+
#
|
129
|
+
# password - encrypted password.
|
130
|
+
#
|
131
|
+
# Returns decrypted password.
|
132
|
+
def decrypt(password)
|
133
|
+
crypt = Envcrypt::Envcrypter.new
|
134
|
+
crypt.decrypt(password)
|
135
|
+
end
|
73
136
|
end
|
74
137
|
end
|