pass-ruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ module Pass
2
+ class Session < APIResource
3
+ include Pass::APIOperations::Create
4
+ include Pass::APIOperations::List
5
+
6
+ end
7
+ end
data/lib/pass/user.rb ADDED
@@ -0,0 +1,6 @@
1
+ module Pass
2
+ class User < APIResource
3
+ include Pass::APIOperations::List
4
+
5
+ end
6
+ end
data/lib/pass/util.rb ADDED
@@ -0,0 +1,95 @@
1
+ module Pass
2
+ module Util
3
+ def self.objects_to_ids(h)
4
+ case h
5
+ when APIResource
6
+ h.id
7
+ when Hash
8
+ res = {}
9
+ h.each { |k, v| res[k] = objects_to_ids(v) unless v.nil? }
10
+ res
11
+ when Array
12
+ h.map { |v| objects_to_ids(v) }
13
+ else
14
+ h
15
+ end
16
+ end
17
+
18
+ def self.convert_to_pass_object(resp, api_token)
19
+ types = {
20
+ }
21
+ case resp
22
+ when Array
23
+ resp.map { |i| convert_to_pass_object(i, api_token) }
24
+ when Hash
25
+ # Try converting to a known object class. If none available, fall back to generic APIResource
26
+ if klass_name = resp[:object]
27
+ klass = types[klass_name]
28
+ end
29
+ klass ||= PassObject
30
+ klass.construct_from(resp, api_token)
31
+ else
32
+ resp
33
+ end
34
+ end
35
+
36
+ def self.file_readable(file)
37
+ begin
38
+ File.open(file) { |f| }
39
+ rescue
40
+ false
41
+ else
42
+ true
43
+ end
44
+ end
45
+
46
+ def self.symbolize_names(object)
47
+ case object
48
+ when Hash
49
+ new = {}
50
+ object.each do |key, value|
51
+ key = (key.to_sym rescue key) || key
52
+ new[key] = symbolize_names(value)
53
+ end
54
+ new
55
+ when Array
56
+ object.map { |value| symbolize_names(value) }
57
+ else
58
+ object
59
+ end
60
+ end
61
+
62
+ def self.url_encode(key)
63
+ URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
64
+ end
65
+
66
+ def self.flatten_params(params, parent_key=nil)
67
+ result = []
68
+ params.each do |key, value|
69
+ calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
70
+ if value.is_a?(Hash)
71
+ result += flatten_params(value, calculated_key)
72
+ elsif value.is_a?(Array)
73
+ result += flatten_params_array(value, calculated_key)
74
+ else
75
+ result << [calculated_key, value]
76
+ end
77
+ end
78
+ result
79
+ end
80
+
81
+ def self.flatten_params_array(value, calculated_key)
82
+ result = []
83
+ value.each do |elem|
84
+ if elem.is_a?(Hash)
85
+ result += flatten_params(elem, calculated_key)
86
+ elsif elem.is_a?(Array)
87
+ result += flatten_params_array(elem, calculated_key)
88
+ else
89
+ result << ["#{calculated_key}[]", elem]
90
+ end
91
+ end
92
+ result
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,3 @@
1
+ module Pass
2
+ VERSION = '0.1.0'
3
+ end
data/pass-ruby.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
+
3
+ require 'pass/version'
4
+
5
+ spec = Gem::Specification.new do |s|
6
+ s.name = 'pass-ruby'
7
+ s.version = Pass::VERSION
8
+ s.summary = 'Ruby bindings for the Pass API'
9
+ s.description = 'Pass is the easiest way to login online.'
10
+ s.authors = ['James Brennan']
11
+ s.email = ['james@jamesbrennan.ca']
12
+ s.homepage = 'https://passauth.net'
13
+ s.executables = 'pass-console'
14
+ s.require_paths = %w{lib}
15
+
16
+ s.add_dependency('rest-client', '~> 1.4')
17
+ s.add_dependency('multi_json', '>= 1.0.4', '< 2')
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- test/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ['lib']
23
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pass-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Brennan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: multi_json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.4
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: '2'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.4
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '2'
47
+ description: Pass is the easiest way to login online.
48
+ email:
49
+ - james@jamesbrennan.ca
50
+ executables:
51
+ - pass-console
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - .gitignore
56
+ - Gemfile
57
+ - LICENSE
58
+ - README.md
59
+ - VERSION
60
+ - bin/pass-console
61
+ - lib/data/ca-certificates.crt
62
+ - lib/pass.rb
63
+ - lib/pass/api_operations/create.rb
64
+ - lib/pass/api_operations/list.rb
65
+ - lib/pass/api_resource.rb
66
+ - lib/pass/errors/api_connection_error.rb
67
+ - lib/pass/errors/api_error.rb
68
+ - lib/pass/errors/authentication_error.rb
69
+ - lib/pass/errors/invalid_request_error.rb
70
+ - lib/pass/errors/pass_error.rb
71
+ - lib/pass/json.rb
72
+ - lib/pass/pass_object.rb
73
+ - lib/pass/session.rb
74
+ - lib/pass/user.rb
75
+ - lib/pass/util.rb
76
+ - lib/pass/version.rb
77
+ - pass-ruby.gemspec
78
+ homepage: https://passauth.net
79
+ licenses: []
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.0.3
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Ruby bindings for the Pass API
101
+ test_files: []