cloudcover 0.0.1 → 0.0.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: 2a63adaeeea97662bb92f5ff7a09b57982d3f101
4
- data.tar.gz: 112b8afe37e3998c86ed74c9c08280a75ed15980
3
+ metadata.gz: cc7a52c9efd426f2b7fd2438f68d3d9a588dde98
4
+ data.tar.gz: bede9c874d547cd617abf404c9662111137f541c
5
5
  SHA512:
6
- metadata.gz: 26f23e4d7d7ebed15e4a51c56d95f621833db58e4dfb4702db1ca4b9c575b000271f60918fdf5b758ca0193d3bad6c3f4067c80323218a2962935b4e71542e40
7
- data.tar.gz: a4c5482e7ebd9992ac1693f3e7d4c0635f50678ba88bcc29fe9158f51fe7b8a4aca64340602daaadedb0bf05fdbf0125a48509d86d3988ef11b2352d9ffcf2e9
6
+ metadata.gz: fe281b19166021c9ff8bb52c4ea45d3f17d797341001775646d37da3fb28429829a8179e4dc8ec2b8f979feb19203a982519310537fc4ea84cc902396b45edeb
7
+ data.tar.gz: c49f80a026335d4517bea20921f2bddb1ed61d48e8a6fe3cc22e87551030d8410d67ad930eaaba09e2d55179658509980c388fb1ed2adae81dca739d10e2e1d5
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  test.creds
2
3
  .DS_Store
3
4
  .idea
data/bin/cloudcover CHANGED
@@ -21,11 +21,11 @@ desc 'Simply verify that a set of credentials are valid to login to Okta. Return
21
21
  arg_name '[credential file path]'
22
22
  command 'simple-auth' do |c|
23
23
  c.switch [:f], :desc => 'Get credentials from file path specified as first argument (Useful for OpenVPN authentication)'
24
- c.switch [:radius], :desc => 'Return RADIUS style Accept/Reject Messages', :default_value => false
24
+ c.switch [:radius], :desc => 'Return RADIUS style Accept/Reject Messages', :negatable => false
25
25
  c.flag [:g, :group], :desc => 'Verify membership to the specified group during authentication', :default_value => false
26
26
  c.flag [:c, :context], :desc => 'Extra context for success/fail message', :default_value => false
27
27
 
28
- c.action do |global_options,options,args|
28
+ c.action do |global,options,args|
29
29
  if options[:f]
30
30
  raise CredentialFileError, "No readable credential file specified" unless File.readable?(args.first)
31
31
  end
@@ -38,8 +38,9 @@ end
38
38
  pre do |global,command,options,args|
39
39
  $verbose = global[:verbose] || global[:debug]
40
40
  $debug = global[:debug]
41
- $config_path = global[:config]
42
41
  $color = global[:color]
42
+ Cloudcover::Config.load(global[:config])
43
+ Cloudcover::Config.set_config_options(global)
43
44
  true
44
45
  end
45
46
 
@@ -5,7 +5,6 @@ module Cloudcover
5
5
 
6
6
  def initialize(opts,path)
7
7
  Output.say_debug("SimpleAuth class: #{self}")
8
- @config = Cloudcover::Config.config
9
8
  @okta = Cloudcover::Okta::Client.new
10
9
  @credentials = {}
11
10
  @opts = opts
@@ -82,7 +81,7 @@ module Cloudcover
82
81
  end
83
82
 
84
83
  def date_format
85
- @config.has_key?(:date_format) ? @config[:date_format] : "%a %b %e %H:%M:%S %Y"
84
+ Cloudcover::Config.date_format ? Cloudcover::Config.date_format : "%a %b %e %H:%M:%S %Y"
86
85
  end
87
86
 
88
87
  def group_id
@@ -1,36 +1,82 @@
1
1
  require 'yaml'
2
2
 
3
3
  module Cloudcover
4
- class Config
5
4
 
6
- def self.config
7
- self.new.load_config($config_path)
5
+ module PrivateAttrAccessor
6
+ def private_attr_accessor(*names)
7
+ private
8
+ attr_accessor *names
8
9
  end
10
+ end
9
11
 
10
- def load_config(file)
11
- Output.say_debug("Loading the config file from #{file}")
12
- raise MissingConfig, "Missing configuration file: #{file} Run 'cloudcover help'" unless File.exist?(file)
13
- @cloudcover_config = symbolize_keys(YAML.load_file(file)) rescue {}
14
- end
12
+ class Config
13
+
14
+ CONFIG_DEFAULTS = {
15
+ location: File.join(ENV['HOME'],'.cloudcover'),
16
+ cookie_location: File.join(ENV['HOME'],'.cloudcover_cookie'),
17
+ }
18
+
19
+ class << self
20
+ extend PrivateAttrAccessor
21
+ private_attr_accessor :config_data
22
+
23
+ def config
24
+ CONFIG_DEFAULTS.merge data
25
+ end
26
+
27
+ def load(path)
28
+ load_config(path)
29
+ config
30
+ end
31
+
32
+ def set_config_options(opts = {})
33
+ data.merge! opts
34
+ config
35
+ end
36
+
37
+ def data
38
+ self.config_data ||= load_config(CONFIG_DEFAULTS[:location])
39
+ end
40
+ private :data
41
+
42
+ def default_value(key)
43
+ CONFIG_DEFAULTS[key.to_sym]
44
+ end
45
+ private :default_value
46
+
47
+ def method_missing(method, args=false)
48
+ return data[method] if data[method]
49
+ return default_value(method) if default_value(method)
50
+ nil
51
+ end
52
+ private :method_missing
53
+
54
+ def load_config(file)
55
+ Output.say_debug("Loading the config file from #{file}")
56
+ raise MissingConfig, "Missing configuration file: #{file} Run 'cloudcover help'" unless File.exist?(file)
57
+ config_data = symbolize_keys(YAML.load_file(file)) rescue {}
58
+ end
59
+ private :load_config
15
60
 
16
- # We want all ouf our YAML loaded keys to be symbols
17
- # taken from http://devblog.avdi.org/2009/07/14/recursively-symbolize-keys/
18
- def symbolize_keys(hash)
19
- hash.inject({}){|result, (key, value)|
20
- new_key = case key
21
- when String then key.to_sym
22
- else key
23
- end
24
- new_value = case value
25
- when Hash then symbolize_keys(value)
26
- else value
61
+ # We want all ouf our YAML loaded keys to be symbols
62
+ # taken from http://devblog.avdi.org/2009/07/14/recursively-symbolize-keys/
63
+ def symbolize_keys(hash)
64
+ hash.inject({}){|result, (key, value)|
65
+ new_key = case key
66
+ when String then key.to_sym
67
+ else key
27
68
  end
28
- result[new_key] = new_value
29
- result
30
- }
69
+ new_value = case value
70
+ when Hash then symbolize_keys(value)
71
+ else value
72
+ end
73
+ result[new_key] = new_value
74
+ result
75
+ }
76
+ end
77
+ private :symbolize_keys
31
78
  end
32
79
 
33
80
  MissingConfig = Class.new(StandardError)
34
- MissingEnvironment = Class.new(StandardError)
35
81
  end
36
82
  end
@@ -5,13 +5,12 @@ module Cloudcover
5
5
  module Okta
6
6
  class Client
7
7
  include HTTParty
8
- debug_output if $debug
8
+ debug_output if Cloudcover::Config.debug
9
9
 
10
10
  attr_reader :headers
11
11
 
12
12
  def initialize
13
- @config = Cloudcover::Config.config
14
- self.class.base_uri "https://#{@config[:okta_domain]}.okta.com"
13
+ self.class.base_uri "https://#{Cloudcover::Config.okta_domain}.okta.com"
15
14
  @headers = {
16
15
  'Content-Type' => "application/json",
17
16
  'Accept' => "application/json",
@@ -1,3 +1,3 @@
1
1
  module Cloudcover
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudcover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Krieger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-03 00:00:00.000000000 Z
11
+ date: 2016-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -146,7 +146,6 @@ files:
146
146
  - ".gitignore"
147
147
  - ".ruby-version"
148
148
  - Gemfile
149
- - Gemfile.lock
150
149
  - README.md
151
150
  - Rakefile
152
151
  - bin/cloudcover
@@ -185,4 +184,3 @@ specification_version: 4
185
184
  summary: Provides a simple interface for using Okta authentication in command line
186
185
  applications
187
186
  test_files: []
188
- has_rdoc:
data/Gemfile.lock DELETED
@@ -1,46 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- cloudcover (0.0.1)
5
- gli (~> 2.13.4)
6
- hashdiff
7
- highline
8
- http-cookie
9
- httparty
10
- minitar
11
- terminal-table
12
-
13
- GEM
14
- remote: https://rubygems.org/
15
- specs:
16
- domain_name (0.5.25)
17
- unf (>= 0.0.5, < 1.0.0)
18
- gli (2.13.4)
19
- hashdiff (0.2.3)
20
- highline (1.7.8)
21
- http-cookie (1.0.2)
22
- domain_name (~> 0.5)
23
- httparty (0.13.7)
24
- json (~> 1.8)
25
- multi_xml (>= 0.5.2)
26
- json (1.8.3)
27
- minitar (0.5.4)
28
- multi_xml (0.5.5)
29
- rake (10.4.2)
30
- rdoc (4.2.0)
31
- json (~> 1.4)
32
- terminal-table (1.5.2)
33
- unf (0.1.4)
34
- unf_ext
35
- unf_ext (0.0.7.1)
36
-
37
- PLATFORMS
38
- ruby
39
-
40
- DEPENDENCIES
41
- cloudcover!
42
- rake
43
- rdoc
44
-
45
- BUNDLED WITH
46
- 1.12.3