pass-ruby 0.1.0
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 +7 -0
- data/.gitignore +2 -0
- data/Gemfile +2 -0
- data/LICENSE +46 -0
- data/README.md +23 -0
- data/VERSION +1 -0
- data/bin/pass-console +7 -0
- data/lib/data/ca-certificates.crt +3918 -0
- data/lib/pass.rb +242 -0
- data/lib/pass/api_operations/create.rb +16 -0
- data/lib/pass/api_operations/list.rb +16 -0
- data/lib/pass/api_resource.rb +33 -0
- data/lib/pass/errors/api_connection_error.rb +4 -0
- data/lib/pass/errors/api_error.rb +4 -0
- data/lib/pass/errors/authentication_error.rb +4 -0
- data/lib/pass/errors/invalid_request_error.rb +10 -0
- data/lib/pass/errors/pass_error.rb +20 -0
- data/lib/pass/json.rb +21 -0
- data/lib/pass/pass_object.rb +159 -0
- data/lib/pass/session.rb +7 -0
- data/lib/pass/user.rb +6 -0
- data/lib/pass/util.rb +95 -0
- data/lib/pass/version.rb +3 -0
- data/pass-ruby.gemspec +23 -0
- metadata +101 -0
data/lib/pass/session.rb
ADDED
data/lib/pass/user.rb
ADDED
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
|
data/lib/pass/version.rb
ADDED
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: []
|