morpheus-cli 4.1.1 → 4.1.2

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
  SHA256:
3
- metadata.gz: 78556645853b91d56091042831cc0f167eca3120fe58f5e062b24fe90d14475b
4
- data.tar.gz: 49ad49192a9fc8fd645e63912d932b1fe5a8978c6c11984b5d93fd27281e72ec
3
+ metadata.gz: 7753eaeda16637f0e5dc4789805e09872fa92cc7bd487f6abebdbc30f021211c
4
+ data.tar.gz: 44b028c23aa86ca2bf4a4d648930985fd55c7050713ad483ea0ae9f1419b4283
5
5
  SHA512:
6
- metadata.gz: fa95516c8ce7fa863fec5172fc9979545a4ecd29a809801f5d8fd22a5550ad74ce51bdaacd411e3bde4033908c968fa03d61294850b87212c4b94777e6bc39c6
7
- data.tar.gz: 411ae02f4371da4f90cbb902cb1aca02ad4a7ca1a8d0e6a11b65d8484310e29ee1c1764a9d47f378b32281d7526107611a80a8936a08a8fe525dfd040dd3cca8
6
+ metadata.gz: 577cd169ab4f3235e536d46603f744b39c233a09664fbe4b81294c662ffbeceb5f4402c763b3653446e17ad021b31ac0bc58c96232fe2b27ce17c6d0dd5f03f4
7
+ data.tar.gz: 0e185c2007c4f5c7ca8c7158f0ecc872faeecdc34773e19bb61983c45238a798038652df07a0ea3dfde0c75bf5dfae4c2c04347841b1d730f70524aa664373e5
@@ -3,17 +3,48 @@ require 'uri'
3
3
  require 'rest-client'
4
4
 
5
5
  class Morpheus::APIClient
6
+ # Initialize a new APIClient
7
+ # client = APIClient.new(url:"https://morpheus.yourcompany.com", verify_ssl:false)
8
+ # This old method signature is being deprecated:
9
+ # client = APIClient.new(access_token, refresh_token, expires_in, base_url, verify_ssl, options={})
10
+ #
6
11
  def initialize(access_token, refresh_token=nil,expires_in = nil, base_url=nil, verify_ssl=true, options={})
12
+ if access_token.is_a?(Hash)
13
+ client_opts = access_token.clone()
14
+ access_token = client_opts[:access_token]
15
+ refresh_token = client_opts[:refresh_token]
16
+ base_url = client_opts[:url] || client_opts[:base_url]
17
+ expires_in = client_opts[:expires_in]
18
+ verify_ssl = client_opts.key?(:verify_ssl) ? client_opts[:verify_ssl] : true
19
+ options = refresh_token.is_a?(Hash) ? refresh_token.clone() : {}
20
+ end
7
21
  @access_token = access_token
8
22
  @refresh_token = refresh_token
9
23
  @base_url = base_url
24
+ if @base_url.to_s.empty?
25
+ raise "#{self.class} requires option :url"
26
+ end
27
+ @base_url = @base_url.chomp("/")
28
+ # todo: validate URI
10
29
  if expires_in != nil
11
- @expires_at = DateTime.now + expires_in.seconds
30
+ @expires_at = Time.now + expires_in
12
31
  end
13
32
  set_ssl_verification_enabled(verify_ssl)
14
33
  setopts(options)
15
34
  end
16
35
 
36
+ def url
37
+ @base_url
38
+ end
39
+
40
+ def to_s
41
+ "<##{self.class}:#{self.object_id.to_s(8)} @url=#{@base_url} @verify_ssl=#{@verify_ssl} @access_token=#{@access_token ? '************' : nil} @refresh_token=#{@access_token ? '************' : nil} @expires_at=#{@expires_at} @options=#{@options}>"
42
+ end
43
+
44
+ def inspect
45
+ to_s
46
+ end
47
+
17
48
  def dry_run(val=true)
18
49
  @dry_run = !!val
19
50
  self
@@ -184,6 +215,44 @@ class Morpheus::APIClient
184
215
  end
185
216
  end
186
217
 
218
+ def logged_in?
219
+ !!@access_token
220
+ end
221
+
222
+ def login(username, password)
223
+ @access_token, @refresh_token, @expires_at = nil, nil, nil
224
+ response = auth.login(username, password)
225
+ @access_token = response['access_token']
226
+ @refresh_token = response['refresh_token']
227
+ if response['expires_in'] != nil
228
+ @expires_at = Time.now + response['expires_in']
229
+ end
230
+ # return response
231
+ return self
232
+ end
233
+
234
+ def refresh_token()
235
+ if @refresh_token.nil?
236
+ raise "#{self.class} does not currently have a refresh_token"
237
+ end
238
+ response = auth.use_refresh_token(@refresh_token)
239
+ @access_token = response['access_token']
240
+ @refresh_token = response['refresh_token']
241
+ if response['expires_in'] != nil
242
+ @expires_at = Time.now + response['expires_in']
243
+ end
244
+ @access_token = response['access_token']
245
+ # return response
246
+ return self
247
+ end
248
+
249
+ def logout
250
+ @access_token = nil
251
+ @refresh_token = nil
252
+ @expires_at = nil
253
+ return self
254
+ end
255
+
187
256
  def auth
188
257
  Morpheus::AuthInterface.new(@base_url, @access_token).setopts(@options)
189
258
  end
@@ -2,7 +2,7 @@ require 'morpheus/api/api_client'
2
2
 
3
3
  class Morpheus::AuthInterface < Morpheus::APIClient
4
4
 
5
- attr_reader :access_token
5
+ #attr_reader :access_token, :refresh_token, :expires_at
6
6
 
7
7
  def initialize(base_url, access_token=nil)
8
8
  @base_url = base_url
@@ -10,7 +10,7 @@ class Morpheus::AuthInterface < Morpheus::APIClient
10
10
  end
11
11
 
12
12
  def login(username, password)
13
- @access_token = nil
13
+ @access_token, @refresh_token, @expires_at = nil, nil, nil
14
14
  url = "#{@base_url}/oauth/token"
15
15
  params = {grant_type: 'password', scope:'write', client_id: 'morph-cli', username: username}
16
16
  payload = {password: password}
@@ -18,6 +18,10 @@ class Morpheus::AuthInterface < Morpheus::APIClient
18
18
  response = execute(opts)
19
19
  return response if @dry_run
20
20
  @access_token = response['access_token']
21
+ @refresh_token = response['refresh_token']
22
+ if response['expires_in'] != nil
23
+ @expires_at = Time.now + response['expires_in']
24
+ end
21
25
  return response
22
26
  end
23
27
 
@@ -31,10 +35,15 @@ class Morpheus::AuthInterface < Morpheus::APIClient
31
35
  response = execute(opts)
32
36
  return response if @dry_run
33
37
  @access_token = response['access_token']
38
+ @refresh_token = response['refresh_token']
39
+ if response['expires_in'] != nil
40
+ @expires_at = Time.now + response['expires_in']
41
+ end
34
42
  return response
35
43
  end
36
44
 
37
45
  def logout()
46
+ # super.logout()
38
47
  if @access_token
39
48
  # todo: expire the token
40
49
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "4.1.1"
4
+ VERSION = "4.1.2"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.1
4
+ version: 4.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes