zedkit 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.3
1
+ 1.1.4
data/lib/zedkit.rb CHANGED
@@ -19,7 +19,7 @@ require 'rubygems'
19
19
  require 'json'
20
20
  require 'nestful'
21
21
 
22
- Dir["#{File.dirname(__FILE__)}/zedkit/ext/*.rb"].each {|ci| require ci }
22
+ require 'zedkit/ext/hash.rb'
23
23
 
24
24
  module Zedkit
25
25
  class << self
@@ -60,12 +60,25 @@ module Zedkit
60
60
  attr_accessor :configuration
61
61
  def configure
62
62
  self.configuration ||= Configuration.new
63
- yield(configuration)
63
+ yield configuration
64
64
  end
65
65
  end
66
66
  end
67
67
 
68
- Dir["#{File.dirname(__FILE__)}/zedkit/client/*.rb"].each {|ci| require ci }
69
- Dir["#{File.dirname(__FILE__)}/zedkit/cli/*.rb"].each {|ci| require ci }
70
- Dir["#{File.dirname(__FILE__)}/zedkit/instances/*.rb"].each {|ci| require ci }
71
- Dir["#{File.dirname(__FILE__)}/zedkit/resources/*.rb"].each {|ci| require ci }
68
+ require 'zedkit/client/configuration.rb'
69
+ require 'zedkit/client/client.rb'
70
+ require 'zedkit/client/exceptions.rb'
71
+
72
+ require 'zedkit/cli/bottom.rb'
73
+ require 'zedkit/cli/exceptions.rb'
74
+ require 'zedkit/cli/projects.rb'
75
+ require 'zedkit/cli/runner.rb'
76
+ require 'zedkit/cli/text.rb'
77
+
78
+ require 'zedkit/instances/instance.rb'
79
+ require 'zedkit/instances/project.rb'
80
+
81
+ require 'zedkit/resources/projects.rb'
82
+ require 'zedkit/resources/users.rb'
83
+
84
+ require 'zedkit/rails/sessions' if defined?(Rails::Railtie)
@@ -15,17 +15,19 @@
15
15
  # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
16
  ##
17
17
 
18
- module Zedkit::CLI
19
- class Bottom
20
- class << self
21
- def method_missing(*args)
22
- raise Zedkit::CLI::UnknownCommand.new(:message => "#{Zedkit::CLI.ee(args[1][:locale], :general, :unknown)}" \
23
- << " [#{args[0]}]")
24
- end
18
+ module Zedkit
19
+ module CLI
20
+ class Bottom
21
+ class << self
22
+ def method_missing(*args)
23
+ raise Zedkit::CLI::UnknownCommand.new(:message => "#{Zedkit::CLI.ee(args[1][:locale], :general, :unknown)}" \
24
+ << " [#{args[0]}]")
25
+ end
25
26
 
26
- protected
27
- def dashes(length = 128)
28
- Array.new(length, '-').join << "\n"
27
+ protected
28
+ def dashes(length = 128)
29
+ Array.new(length, '-').join << "\n"
30
+ end
29
31
  end
30
32
  end
31
33
  end
@@ -15,68 +15,70 @@
15
15
  # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
16
  ##
17
17
 
18
- module Zedkit::CLI
19
- class << self
20
- def tt(locale, key, item)
21
- Zedkit::CLI.lookup_tt("Zedkit::CLI", locale, key, item)
18
+ module Zedkit
19
+ module CLI
20
+ class << self
21
+ def tt(locale, key, item)
22
+ Zedkit::CLI.lookup_tt("Zedkit::CLI", locale, key, item)
23
+ end
24
+ def ee(locale, key, item)
25
+ Zedkit::CLI.lookup_ee("Zedkit::CLI", locale, key, item)
26
+ end
22
27
  end
23
- def ee(locale, key, item)
24
- Zedkit::CLI.lookup_ee("Zedkit::CLI", locale, key, item)
25
- end
26
- end
27
28
 
28
- LOCALES = %w(en).freeze
29
- CONTENT = {
30
- :en => {
31
- :commands => {
32
- :projects => "Project Commands",
33
- :projects_list => "List Zedkit projects",
34
- :projects_show => "Show Zedkit project details",
35
- :projects_create => "Create a new Zedkit project",
36
- :projects_update => "Update an existing Zedkit project",
37
- :projects_delete => "Delete an existing Zedkit project"
29
+ LOCALES = %w(en).freeze
30
+ CONTENT = {
31
+ :en => {
32
+ :commands => {
33
+ :projects => "Project Commands",
34
+ :projects_list => "List Zedkit projects",
35
+ :projects_show => "Show Zedkit project details",
36
+ :projects_create => "Create a new Zedkit project",
37
+ :projects_update => "Update an existing Zedkit project",
38
+ :projects_delete => "Delete an existing Zedkit project"
39
+ }
38
40
  }
39
41
  }
40
- }
41
- ERRORS = {
42
- :en => {
43
- :runner => {
44
- :credentials => "Missing Zedkit Credentials",
45
- :zedkit_file => "Missing Zedkit Credentials in ~/.zedkit"
46
- },
47
- :general => {
48
- :error => "Zedkit CLI ERROR.",
49
- :message => "Message",
50
- :section => "Unknown Section",
51
- :unknown => "Unknown Command",
52
- :not_done => "This operation is not yet implemented."
53
- },
54
- :project => {
55
- :nil => "Project UUID is nil"
42
+ ERRORS = {
43
+ :en => {
44
+ :runner => {
45
+ :credentials => "Missing Zedkit Credentials",
46
+ :zedkit_file => "Missing Zedkit Credentials in ~/.zedkit"
47
+ },
48
+ :general => {
49
+ :error => "Zedkit CLI ERROR.",
50
+ :message => "Message",
51
+ :section => "Unknown Section",
52
+ :unknown => "Unknown Command",
53
+ :not_done => "This operation is not yet implemented."
54
+ },
55
+ :project => {
56
+ :nil => "Project UUID is nil"
57
+ }
56
58
  }
57
- }
58
- }.freeze
59
+ }.freeze
59
60
 
60
- class << self
61
- def lookup_tt(ch, locale, key, item)
62
- rs = lookup(eval("#{ch}::CONTENT"), locale, key, item)
63
- rs = lookup(eval("Zedkit::CLI::CONTENT"), locale, key, item) if rs.nil?
64
- rs
65
- end
66
- def lookup_ee(ch, locale, key, item)
67
- rs = lookup(eval("#{ch}::ERRORS"), locale, key, item)
68
- rs = lookup(eval("Zedkit::CLI::ERRORS"), locale, key, item) if rs.nil?
69
- rs
70
- end
61
+ class << self
62
+ def lookup_tt(ch, locale, key, item)
63
+ rs = lookup(eval("#{ch}::CONTENT"), locale, key, item)
64
+ rs = lookup(eval("Zedkit::CLI::CONTENT"), locale, key, item) if rs.nil?
65
+ rs
66
+ end
67
+ def lookup_ee(ch, locale, key, item)
68
+ rs = lookup(eval("#{ch}::ERRORS"), locale, key, item)
69
+ rs = lookup(eval("Zedkit::CLI::ERRORS"), locale, key, item) if rs.nil?
70
+ rs
71
+ end
71
72
 
72
- protected
73
- def lookup(set, locale, key, item)
74
- if set.has_key?(locale) && set[locale].has_key?(key) && set[locale][key].has_key?(item)
75
- set[locale][key][item]
76
- elsif set[:en].has_key?(key) && set[:en][key].has_key?(item)
77
- set[:en][key][item]
78
- else
79
- nil end
73
+ protected
74
+ def lookup(set, locale, key, item)
75
+ if set.has_key?(locale) && set[locale].has_key?(key) && set[locale][key].has_key?(item)
76
+ set[locale][key][item]
77
+ elsif set[:en].has_key?(key) && set[:en][key].has_key?(item)
78
+ set[:en][key][item]
79
+ else
80
+ nil end
81
+ end
80
82
  end
81
83
  end
82
84
  end
@@ -45,14 +45,15 @@ module Zedkit
45
45
 
46
46
  protected
47
47
  def submit_request(method, rs, user_key = nil, params = {}, options = {})
48
- rvss = nil
48
+ rh = nil
49
49
  begin
50
- http = http_request(method, resource_url(rs), user_key, params.flatten_zedkit_params!, options)
51
- rvss = JSON.parse(http)
52
- if rvss.is_a?(Hash) && rvss.has_key?('status') && Zedkit.configuration.exceptions?
53
- raise DataValidationError.new(:http_code => 200, :api_code => rvss['status']['code'],
54
- :message => rvss['status']['message'] << " [#{method.upcase} #{resource_url(rs)}]",
55
- :errors => rvss['errors'])
50
+ http_request(method, resource_url(rs), user_key, params.flatten_zedkit_params!, options) do |nh|
51
+ rh = JSON.parse(nh)
52
+ if rh.is_a?(Hash) && rh.has_key?('status') && Zedkit.configuration.exceptions?
53
+ raise DataValidationError.new(:http_code => 200, :api_code => rh['status']['code'],
54
+ :errors => rh['errors'],
55
+ :message => rh['status']['message'] << " [#{method.upcase} #{resource_url(rs)}]")
56
+ end
56
57
  end
57
58
  rescue Net::HTTPBadResponse
58
59
  ## TBD
@@ -72,25 +73,23 @@ module Zedkit
72
73
  :message => "Access Denied to the Resource Requested [#{method.upcase} #{resource_url(rs)}]")
73
74
  end
74
75
  end
75
- rvss
76
+ rh
76
77
  end
77
78
 
78
79
  private
79
- def http_request(method, rs_url, uk, params, options)
80
- http = nil
80
+ def http_request(method, rs_url, uk, params, options, &block)
81
81
  case method
82
82
  when :verify
83
- http = Nestful.get(rs_url, options.merge({ :params => merged_params(params) }))
83
+ yield Nestful.get(rs_url, options.merge({ :params => merged_params(params) }))
84
84
  when :get
85
- http = Nestful.get(rs_url, options.merge({ :params => merged_params(params, uk) }))
85
+ yield Nestful.get(rs_url, options.merge({ :params => merged_params(params, uk) }))
86
86
  when :post
87
- http = Nestful.post(rs_url, options.merge({ :format => :form, :params => merged_params(params, uk) }))
87
+ yield Nestful.post(rs_url, options.merge({ :format => :form, :params => merged_params(params, uk) }))
88
88
  when :put
89
- http = Nestful.put(rs_url, options.merge({ :format => :form, :params => merged_params(params, uk) }))
89
+ yield Nestful.put(rs_url, options.merge({ :format => :form, :params => merged_params(params, uk) }))
90
90
  when :delete
91
- http = Nestful.delete(rs_url, options.merge({ :params => merged_params(params, uk) }))
91
+ Nestful.delete(rs_url, options.merge({ :params => merged_params(params, uk) }))
92
92
  end
93
- http
94
93
  end
95
94
  def resource_url(rs)
96
95
  "#{Zedkit.configuration.api_url}/#{rs}"
@@ -0,0 +1,90 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module Zedkit
19
+ module Sessions
20
+ protected
21
+ def session_fresh?(options = {})
22
+ options[:idle_maximum_in_seconds] = 900 unless options.has_key? :idle_maximum_in_seconds
23
+ set_last_seen if session[:last_seen].nil?
24
+ return true if session[:last_seen] > (Time.now.to_i - options[:idle_maximum_in_seconds])
25
+ Rails.logger.info "Session has EXPIRED [#{options[:idle_maximum_in_seconds]}]"
26
+ false
27
+ end
28
+ def session_fresh_with_redirect?(options = {})
29
+ options[:idle_maximum_in_seconds] = 900 unless options.has_key? :idle_maximum_in_seconds
30
+ options[:url] = new_session_url unless options.has_key? :url
31
+ return true if session_fresh?(options)
32
+ end_session
33
+ redirect_to options[:url]
34
+ false
35
+ end
36
+
37
+ def has_session?
38
+ return true if @user && @user.is_a?(Hash)
39
+ if session[:user_json] && session[:user_json].is_a?(Hash)
40
+ @user = session[:user_json]
41
+ return true
42
+ end
43
+ false
44
+ end
45
+ def has_session_with_redirect?(url = root_url)
46
+ return true if has_session?
47
+ redirect_to url
48
+ false
49
+ end
50
+
51
+ def has_had_a_session?
52
+ set_user_login unless @user_login && @user_login.is_a?(String)
53
+ return true if @user_login.present?
54
+ false
55
+ end
56
+ def has_user_login?
57
+ @user_login.present?
58
+ end
59
+
60
+ def start_session(login, password)
61
+ case request.method.downcase.to_sym
62
+ when :post
63
+
64
+ Rails.logger.info "User Verification Request via Zedkit [#{login.downcase}]"
65
+ Zedkit::Users.verify(:username => login.downcase, :password => password) do |json|
66
+ @user = json
67
+ session[:user_json] = @user ## This does not contain the user's password.
68
+ cookies[:user_login] = { :value => login.downcase, :expires => 365.days.from_now }
69
+ return true
70
+ end
71
+
72
+ else set_user_login end
73
+ false
74
+ end
75
+ def end_session
76
+ session[:user_json] = nil
77
+ end
78
+
79
+ def set_user_login
80
+ cookies[:user_login] ? @user_login = cookies[:user_login] : @user_login = nil
81
+ Rails.logger.info "User Login SET [#{@user_login}]"
82
+ end
83
+ def set_last_seen
84
+ session[:last_seen] = Time.new.to_i
85
+ end
86
+ def set_logout_method(method)
87
+ session[:logout_method] = method
88
+ end
89
+ end
90
+ end
@@ -114,13 +114,13 @@ class TestProjects < Test::Unit::TestCase
114
114
  lk = Zedkit::Users.verify(:username => TEST_GEMS_LACKY, :password => TEST_GEMS_PASSWORD)
115
115
  ud = Zedkit::Projects::Users.delete(:user_key => @uu['user_key'], :project => { :uuid => @uu['projects'][0] },
116
116
  :user => { :uuid => lk['uuid'] })
117
- assert_equal ud, {}
117
+ assert_nil ud
118
118
  end
119
119
  def test_delete_user_connection_with_block
120
120
  lk = Zedkit::Users.verify(:username => TEST_GEMS_LACKY, :password => TEST_GEMS_PASSWORD)
121
121
  Zedkit::Projects::Users.delete(:user_key => @uu['user_key'], :project => { :uuid => @uu['projects'][0] },
122
122
  :user => { :uuid => lk['uuid'] }) do |ud|
123
- assert_equal ud, {}
123
+ assert_nil ud
124
124
  end
125
125
  end
126
126
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 1
8
- - 3
9
- version: 1.1.3
8
+ - 4
9
+ version: 1.1.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Zedkit
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-14 00:00:00 -08:00
17
+ date: 2010-12-20 00:00:00 -08:00
18
18
  default_executable: zedkit
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -73,6 +73,7 @@ files:
73
73
  - lib/zedkit/ext/hash.rb
74
74
  - lib/zedkit/instances/instance.rb
75
75
  - lib/zedkit/instances/project.rb
76
+ - lib/zedkit/rails/sessions.rb
76
77
  - lib/zedkit/resources/projects.rb
77
78
  - lib/zedkit/resources/users.rb
78
79
  - test/helper.rb