aws-mfa 0.3.0 → 0.3.2

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: 7acea0de7d157dcacffc45761829147d3928f4ff
4
- data.tar.gz: 18a947ec9f627b2e303585149c68e0a3393510b2
3
+ metadata.gz: 8e529f0ad78a90cfd6692e5a2a73f037701e1212
4
+ data.tar.gz: 3ef7f95f65837e93ba3c6a2c36e9279f9fd38be9
5
5
  SHA512:
6
- metadata.gz: b6a4b52a6a3ce238876ddffdcf9ea3d428e9c75e41069a9394be4fe7b477d9971fb0d42d7841d6e9503724096d5a446d20727ff124e9ec969fa506172de7db04
7
- data.tar.gz: 4adc1bc7e1171f840e855264f05eec5ccda076404fddbb8e95f55ef945d9ce222af1cb79d20701fd5b3e1a4818cd204373ccc24c2abd9d4f77dbd49b1d3f446b
6
+ metadata.gz: 4922a7081513a55505a136498b8d24ac24d5ca33873eb940e62a047d7a48fbeb92023d932f6904518c04b13cd216206a82940cab79259bf91a74fd04a7ddc70c
7
+ data.tar.gz: d91fdce8ce9c9ec6560ffa436c5324808ec5c0f5dd4c7a3195f383943878caf74ffeb8097ff3026bf10b0589dd0573e9f648ec2a35a7d517bac3593706231c5a
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
4
+
3
5
  require 'aws_mfa'
4
6
 
5
7
  begin
@@ -1,5 +1,7 @@
1
1
  require 'json'
2
2
  require 'aws_mfa/errors'
3
+ require 'aws_mfa/shell_command'
4
+ require 'aws_mfa/shell_command_result'
3
5
 
4
6
  class AwsMfa
5
7
  attr_reader :aws_config_dir
@@ -72,7 +74,15 @@ class AwsMfa
72
74
  end
73
75
 
74
76
  def mfa_devices(profile='default')
75
- @mfa_devices ||= JSON.parse(`aws --profile #{profile} --output json iam list-mfa-devices`).fetch('MFADevices')
77
+ @mfa_devices ||= begin
78
+ list_mfa_devices_command = "aws --profile #{profile} --output json iam list-mfa-devices"
79
+ result = AwsMfa::ShellCommand.new(list_mfa_devices_command).call
80
+ if result.succeeded?
81
+ JSON.parse(result.output).fetch('MFADevices')
82
+ else
83
+ raise Errors::Error, 'There was a problem fetching MFA devices from AWS'
84
+ end
85
+ end
76
86
  end
77
87
 
78
88
  def write_arn_to_file(arn_file, arn)
@@ -104,7 +114,13 @@ class AwsMfa
104
114
  def load_credentials_from_aws(arn, profile='default')
105
115
  code = request_code_from_user
106
116
  unset_environment
107
- `aws --profile #{profile} --output json sts get-session-token --serial-number #{arn} --token-code #{code}`
117
+ credentials_command = "aws --profile #{profile} --output json sts get-session-token --serial-number #{arn} --token-code #{code}"
118
+ result = AwsMfa::ShellCommand.new(credentials_command).call
119
+ if result.succeeded?
120
+ result.output
121
+ else
122
+ raise Errors::InvalidCode, 'There was a problem validating the MFA code with AWS'
123
+ end
108
124
  end
109
125
 
110
126
  def write_credentials_to_file(credentials_file, credentials)
@@ -0,0 +1,14 @@
1
+ class AwsMfa
2
+ class ShellCommand
3
+ attr_reader :command
4
+
5
+ def initialize(command)
6
+ @command = command
7
+ end
8
+
9
+ def call
10
+ output = `#{command}`
11
+ ShellCommandResult.new(output, $?)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ class AwsMfa
2
+ class ShellCommandResult
3
+ attr_reader :output
4
+
5
+ def initialize(command_output, process_status)
6
+ @output = command_output
7
+ @process_status = process_status
8
+ end
9
+
10
+ def succeeded?
11
+ process_status.success?
12
+ end
13
+
14
+ private
15
+
16
+ attr_reader :process_status
17
+ end
18
+ end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-mfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Pitts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-09 00:00:00.000000000 Z
11
+ date: 2016-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fakefs
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.9'
55
55
  description: Run AWS commands with MFA
@@ -59,9 +59,11 @@ executables:
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - bin/aws-mfa
63
62
  - lib/aws_mfa.rb
64
63
  - lib/aws_mfa/errors.rb
64
+ - lib/aws_mfa/shell_command.rb
65
+ - lib/aws_mfa/shell_command_result.rb
66
+ - bin/aws-mfa
65
67
  homepage: http://www.github.com/lonelyplanet/aws-mfa
66
68
  licenses:
67
69
  - Apache-2.0
@@ -72,19 +74,20 @@ require_paths:
72
74
  - lib
73
75
  required_ruby_version: !ruby/object:Gem::Requirement
74
76
  requirements:
75
- - - ">="
77
+ - - '>='
76
78
  - !ruby/object:Gem::Version
77
79
  version: '0'
78
80
  required_rubygems_version: !ruby/object:Gem::Requirement
79
81
  requirements:
80
- - - ">="
82
+ - - '>='
81
83
  - !ruby/object:Gem::Version
82
84
  version: '0'
83
85
  requirements:
84
86
  - aws-cli
85
87
  rubyforge_project:
86
- rubygems_version: 2.4.5.1
88
+ rubygems_version: 2.0.14
87
89
  signing_key:
88
90
  specification_version: 4
89
91
  summary: Run AWS commands with MFA
90
92
  test_files: []
93
+ has_rdoc: