keybase-core 0.1.2 → 0.1.4
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 +5 -13
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Gemfile.lock +19 -5
- data/README.md +20 -7
- data/certs/seanhandley.pem +21 -0
- data/{keybase.gemspec → keybase-core.gemspec} +10 -5
- data/lib/keybase-core.rb +52 -0
- data/lib/{keybase → keybase-core}/crypto.rb +1 -1
- data/lib/{keybase → keybase-core}/error.rb +3 -3
- data/lib/{keybase → keybase-core}/models/dump.rb +2 -2
- data/lib/{keybase → keybase-core}/models/user.rb +19 -12
- data/lib/{keybase → keybase-core}/request/base.rb +3 -3
- data/lib/{keybase → keybase-core}/request/dump/all.rb +1 -1
- data/lib/{keybase → keybase-core}/request/dump/latest.rb +1 -1
- data/lib/{keybase → keybase-core}/request/key/add.rb +1 -1
- data/lib/{keybase → keybase-core}/request/key/revoke.rb +1 -1
- data/lib/{keybase → keybase-core}/request/root/get_salt_and_login_session.rb +1 -1
- data/lib/{keybase → keybase-core}/request/root/login.rb +1 -1
- data/lib/keybase-core/request/session/kill_all.rb +11 -0
- data/lib/{keybase → keybase-core}/request/sig/post_auth.rb +1 -1
- data/lib/{keybase → keybase-core}/request/user/lookup.rb +1 -1
- data/lib/{keybase → keybase-core}/response.rb +1 -1
- data/lib/{keybase → keybase-core}/token_store.rb +1 -1
- data/test/integration/dumps_test.rb +3 -3
- data/test/integration/keys_test.rb +1 -1
- data/test/integration/login_users_test.rb +4 -3
- data/test/integration/lookup_users_test.rb +5 -5
- data/test/test_helper.rb +4 -2
- data/test/unit/lib/{keybase → keybase-core}/crypto_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/error_test.rb +2 -2
- data/test/unit/lib/{keybase → keybase-core}/models/dump_test.rb +4 -4
- data/test/unit/lib/{keybase → keybase-core}/models/user_test.rb +21 -15
- data/test/unit/lib/{keybase → keybase-core}/requests/base_test.rb +5 -5
- data/test/unit/lib/{keybase → keybase-core}/requests/dump/all_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/dump/latest_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/key/add_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/key/revoke_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/root/get_salt_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/root/login_test.rb +1 -1
- data/test/unit/lib/keybase-core/requests/session/kill_all.rb +19 -0
- data/test/unit/lib/{keybase → keybase-core}/requests/sig/post_auth_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/requests/user/lookup_test.rb +1 -1
- data/test/unit/lib/{keybase → keybase-core}/response_test.rb +2 -2
- data/test/unit/lib/{keybase → keybase-core}/token_store_test.rb +1 -1
- data/test/unit/lib/{keybase_test.rb → keybase_core_test.rb} +4 -4
- data/test/vcr_cassettes/user_login.yml +113 -43
- metadata +98 -59
- metadata.gz.sig +0 -0
- data/lib/keybase.rb +0 -49
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MTE1YzllMWE1MTMyYTQzN2M3OTAyYTQ4N2QwNzhmMjcwYTE3ZWQ4Ng==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4b54cf8213ff3d4d2c29dda1fdc2e47f7188910e
|
4
|
+
data.tar.gz: e2b88377593501d0f938cbed9fe6899b2eb9e843
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MmU1NDNjYTc3MmI4ZWY0ZjY1ZTQ4MGIzOGJhNDZmZDI5YTMyMTkyNzhjODU5
|
11
|
-
MGUyNWJmMzMzNWM0NTM2YjdkMDYzYmQ3ZTAxODBmNTJmM2M4OWM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
N2UxOWU5NDQyMjUzZWQwZjZlMjJjN2I3MTI2YzZlMzMxODVhNTRjN2Q0NGRi
|
14
|
-
MzQxNDMxMmZkYTBhOGZlM2VjMjY4ZDk5YjgxMDFkMjJjNWVlOTU2ZmRjMjM5
|
15
|
-
Yzc4NTUyNzkwZjdhNDA0YWRlYmYxZmJiNmNhYzY0NDUwNDhiZTU=
|
6
|
+
metadata.gz: 018c5f57e338bb342fbcdad3fb61ac334daaae7a736be32428cccf388eabe7f9c3048c87dd76a2e85df90ff606c9ef52861009328dffb4c30bc1b0b6123bf46a
|
7
|
+
data.tar.gz: 0d28ca09014ce626d6e1b8d90df46bb477736bca0ee11a11f56ea445517de8edb25784acc516fd2dad829d0c146c60554ad5490b6a601d09e1511f9dde3eef1d
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,38 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
keybase-core (0.1.
|
4
|
+
keybase-core (0.1.3)
|
5
5
|
faraday (~> 0.9.0)
|
6
|
-
scrypt (~>
|
6
|
+
scrypt (~> 2.0.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
addressable (2.3.5)
|
12
|
+
coveralls (0.7.0)
|
13
|
+
multi_json (~> 1.3)
|
14
|
+
rest-client
|
15
|
+
simplecov (>= 0.7)
|
16
|
+
term-ansicolor
|
17
|
+
thor
|
12
18
|
crack (0.4.2)
|
13
19
|
safe_yaml (~> 1.0.0)
|
14
20
|
docile (1.1.3)
|
15
21
|
faraday (0.9.0)
|
16
22
|
multipart-post (>= 1.2, < 3)
|
17
|
-
ffi (1.9.
|
23
|
+
ffi (1.9.6)
|
18
24
|
ffi-compiler (0.1.3)
|
19
25
|
ffi (>= 1.0.0)
|
20
26
|
rake
|
27
|
+
mime-types (2.2)
|
21
28
|
minitest (5.3.1)
|
22
29
|
multi_json (1.9.2)
|
23
30
|
multipart-post (2.0.0)
|
24
|
-
rake (10.
|
31
|
+
rake (10.3.2)
|
32
|
+
rest-client (1.6.7)
|
33
|
+
mime-types (>= 1.16)
|
25
34
|
safe_yaml (1.0.1)
|
26
|
-
scrypt (
|
35
|
+
scrypt (2.0.0)
|
27
36
|
ffi-compiler (>= 0.0.2)
|
28
37
|
rake
|
29
38
|
simplecov (0.8.2)
|
@@ -31,6 +40,10 @@ GEM
|
|
31
40
|
multi_json
|
32
41
|
simplecov-html (~> 0.8.0)
|
33
42
|
simplecov-html (0.8.0)
|
43
|
+
term-ansicolor (1.3.0)
|
44
|
+
tins (~> 1.0)
|
45
|
+
thor (0.19.1)
|
46
|
+
tins (1.0.1)
|
34
47
|
vcr (2.8.0)
|
35
48
|
webmock (1.8.11)
|
36
49
|
addressable (>= 2.2.7)
|
@@ -41,6 +54,7 @@ PLATFORMS
|
|
41
54
|
ruby
|
42
55
|
|
43
56
|
DEPENDENCIES
|
57
|
+
coveralls (~> 0.7.0)
|
44
58
|
keybase-core!
|
45
59
|
minitest (~> 5.3.1)
|
46
60
|
simplecov (~> 0.8.2)
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
|
1
|
+

|
2
2
|
|
3
|
-
|
3
|
+
Gem wrapper for [keybase.io](https://keybase.io) core API functions.
|
4
|
+
|
5
|
+
[] (http://travis-ci.org/keybase/ruby-core) [](http://badge.fury.io/rb/keybase-core) [](https://gemnasium.com/seanhandley/ruby-core) [](https://coveralls.io/r/seanhandley/ruby-core?branch=master) [](https://codeclimate.com/github/keybase/ruby-core)
|
4
6
|
|
5
|
-
[](http://travis-ci.org/keybase/ruby-core) [](http://badge.fury.io/rb/keybase-core)
|
6
7
|
|
7
8
|
## Installing
|
8
9
|
|
@@ -37,7 +38,7 @@ Upon login, you'll get back a user object. Your user object is essentially a lar
|
|
37
38
|
The login will also initiate an ongoing session which allows the authenticated actions: `key/add`, `key/revoke`, `sig/post_auth`
|
38
39
|
|
39
40
|
```ruby
|
40
|
-
me = Keybase.login('chris', 'passphrase')
|
41
|
+
me = Keybase::Core.login('chris', 'passphrase')
|
41
42
|
me.basics.username #=> "chris"
|
42
43
|
me.private_keys.primary.kid #=> "a140c70404a13370f7..."
|
43
44
|
```
|
@@ -103,7 +104,7 @@ me.post_auth('----- BEGIN PGP MESSAGE ----- ...')
|
|
103
104
|
A user object is a large dictionary (wrapped as a Ruby object) and contains pretty much everything about a user that you have access to.
|
104
105
|
|
105
106
|
```ruby
|
106
|
-
user = Keybase.lookup('username')
|
107
|
+
user = Keybase::Core.lookup('username')
|
107
108
|
user.basics.username
|
108
109
|
#=> "chris"
|
109
110
|
user.profile.bio
|
@@ -123,15 +124,27 @@ user.public_keys.primary.updated_at
|
|
123
124
|
Dumps represent a history of the public dumps of the site. You can use it to track or mirror the site as you wish. If you have a previous dump of the site, you can apply changes to sync up without downloading the entire site.
|
124
125
|
|
125
126
|
```ruby
|
126
|
-
dump = Keybase.dump_latest
|
127
|
+
dump = Keybase::Core.dump_latest
|
127
128
|
dump.full_data_sha256
|
128
129
|
#=> "66e72ba9906e8eec544ae74ee22c249e6879ddcd856df0c9679d7a79f26ce259"
|
129
130
|
dump.changes_from_parent
|
130
131
|
#=> "https://s3.amazonaws.com/keybase_data_dumps/2014-03-24-18-06-15--1b43379e593576fe395ad90e--changes.json"
|
131
132
|
|
132
|
-
dumps = Keybase.dump_all #=> [#<Keybase::Dump:0x00000102584280...]
|
133
|
+
dumps = Keybase::Core.dump_all #=> [#<Keybase::Dump:0x00000102584280...]
|
133
134
|
```
|
134
135
|
|
136
|
+
## Signing
|
137
|
+
|
138
|
+
Keybase-Core is cryptographically signed. To be sure the gem you install hasn’t been tampered with:
|
139
|
+
|
140
|
+
* Add the public key as a trusted certificate, `gem cert --add <(curl -Ls https://raw.github.com/keybase/ruby-core/master/certs/seanhandley.pem)`
|
141
|
+
|
142
|
+
* Install the gem with `gem install keybase-core -P HighSecurity`
|
143
|
+
|
144
|
+
The HighSecurity trust profile will verify signed gems and all dependencies.
|
145
|
+
|
146
|
+
You may use the MediumSecurity option if you prefer - this will allow the installation of unsigned dependencies
|
147
|
+
|
135
148
|
## Further Reading
|
136
149
|
|
137
150
|
Please check out the [Keybase API Documentation](https://keybase.io/__/api-docs/1.0) for a comprehensive explanation of the API and its capabilities.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRUwEwYDVQQDDAxzZWFu
|
3
|
+
LmhhbmRsZXkxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
4
|
+
A2NvbTAeFw0xNDA0MTQyMDU4NTdaFw0xNTA0MTQyMDU4NTdaMEMxFTATBgNVBAMM
|
5
|
+
DHNlYW4uaGFuZGxleTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
6
|
+
LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4HPIH4Rf
|
7
|
+
OT3DGY3SKNGED5JTGTppjFF1+UxxYp9TGWygK9PLRtzl4oUjg6KufdC+o4oLs8dr
|
8
|
+
6FfmghU2TzwYiDXaPIi6Aje7QluEABMv7CIDLjfb2oyZWtXDgUfWa2ujyOg/BZht
|
9
|
+
3+OGXrfiLWX1qniCUQpc/UGak8A/Wt+GYDgWq+zcwwNjyc2qjMOrTp6XEl/Tij+z
|
10
|
+
J0yu2TX/I3VrRFenMe1imVDKC4G+8VW/D8nDUU2CljzBLPq7eMrX9gDKiwJ35RtO
|
11
|
+
Edxeau1wk0d9i3DDjeGRrI2s8teVZqwQifMktg4Z6Cx2l9VFEPM/TGGe8vbbv7nk
|
12
|
+
7zynHXUBA51ITQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
|
13
|
+
HQ4EFgQUcjDSomiyoRKqvzDaty24lxwcBrowIQYDVR0RBBowGIEWc2Vhbi5oYW5k
|
14
|
+
bGV5QGdtYWlsLmNvbTAhBgNVHRIEGjAYgRZzZWFuLmhhbmRsZXlAZ21haWwuY29t
|
15
|
+
MA0GCSqGSIb3DQEBBQUAA4IBAQAlbH5LrrDhbw/1BHMeyj/fINdOKhXPL3Lmr9Zu
|
16
|
+
bLybRMMSCrjL0BhwKrorwYBwztV4fjJffw+Lb+iioVcwWefiG8WqFor5DrnpXZW2
|
17
|
+
P+YnhEacW+DwBEy8ZV1XzwuvAZiKnmo1wh3RBpDiJaKW6cxn5/SbpiBa4DHrB6Tw
|
18
|
+
MMM2c0XtOSba8ISf9/EzymLsUQCGXodoLjDMNDiYDOwnALSsjP/phM8LXdk04Kue
|
19
|
+
5vYyMKBp8sXR+QZc4U1ho78vyyA02njxn+qub9oG9x5j+C+IdbFyyn78wChQ/YZA
|
20
|
+
t9QfTw+WVknE8zEJI5EFtpDk1aGaIKJ4WhzdnWRmIwad9Y60
|
21
|
+
-----END CERTIFICATE-----
|
@@ -1,19 +1,19 @@
|
|
1
1
|
Gem::Specification.new do |gem|
|
2
2
|
gem.name = 'keybase-core'
|
3
|
-
gem.version = '0.1.
|
4
|
-
gem.date = '2014-
|
3
|
+
gem.version = '0.1.4'
|
4
|
+
gem.date = '2014-10-16'
|
5
5
|
gem.summary = 'keybase-core'
|
6
6
|
gem.description = 'Core Ruby lib for keybase.io'
|
7
7
|
gem.authors = [ 'Max Krohn', 'Sean Handley' ]
|
8
|
-
gem.email = '
|
8
|
+
gem.email = 'sean.handley@gmail.com'
|
9
9
|
gem.files = `git ls-files`.split("\n")
|
10
10
|
gem.homepage = 'https://github.com/keybase/ruby-core'
|
11
11
|
gem.license = 'BSD-3-Clause'
|
12
12
|
|
13
|
-
gem.required_ruby_version = '
|
13
|
+
gem.required_ruby_version = '> 2.0.0'
|
14
14
|
|
15
15
|
# Runtime Dependencies
|
16
|
-
gem.add_runtime_dependency 'scrypt', '~>
|
16
|
+
gem.add_runtime_dependency 'scrypt', '~> 2.0.0'
|
17
17
|
gem.add_runtime_dependency 'faraday', '~> 0.9.0'
|
18
18
|
|
19
19
|
# Development Dependencies
|
@@ -22,4 +22,9 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_development_dependency 'minitest', '~> 5.3.1'
|
23
23
|
gem.add_development_dependency 'simplecov', '~> 0.8.2'
|
24
24
|
gem.add_development_dependency 'yard', '~> 0.8.7.4'
|
25
|
+
gem.add_development_dependency 'coveralls', '~> 0.7.0'
|
26
|
+
|
27
|
+
# Gem Signing
|
28
|
+
gem.cert_chain = ['certs/seanhandley.pem']
|
29
|
+
gem.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
|
25
30
|
end
|
data/lib/keybase-core.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
require 'date'
|
4
|
+
require 'scrypt'
|
5
|
+
require 'openssl'
|
6
|
+
require 'base64'
|
7
|
+
require 'securerandom'
|
8
|
+
|
9
|
+
module Keybase
|
10
|
+
module Core
|
11
|
+
require_relative 'keybase-core/crypto'
|
12
|
+
require_relative 'keybase-core/error'
|
13
|
+
require_relative 'keybase-core/models/user'
|
14
|
+
require_relative 'keybase-core/models/dump'
|
15
|
+
require_relative 'keybase-core/request/base'
|
16
|
+
require_relative 'keybase-core/request/dump/all'
|
17
|
+
require_relative 'keybase-core/request/dump/latest'
|
18
|
+
require_relative 'keybase-core/request/key/add'
|
19
|
+
require_relative 'keybase-core/request/key/revoke'
|
20
|
+
require_relative 'keybase-core/request/root/get_salt_and_login_session'
|
21
|
+
require_relative 'keybase-core/request/root/login'
|
22
|
+
require_relative 'keybase-core/request/session/kill_all'
|
23
|
+
require_relative 'keybase-core/request/sig/post_auth'
|
24
|
+
require_relative 'keybase-core/request/user/lookup'
|
25
|
+
require_relative 'keybase-core/response'
|
26
|
+
require_relative 'keybase-core/token_store'
|
27
|
+
|
28
|
+
# Lookup a user on Keybase
|
29
|
+
#
|
30
|
+
# @param [String] username the username of the user you are searching for
|
31
|
+
# @raise [Keybase::UserNotFoundError] if the user is not found
|
32
|
+
# @raise [Keybase::InputError] if the username is empty or invalid
|
33
|
+
# @return [Keybase::Model::User] the user, if they exist
|
34
|
+
def self.lookup(username)
|
35
|
+
User.lookup(username)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Retrieve the dump history from Keybase
|
39
|
+
#
|
40
|
+
# @return [[Keybase::Dump]] a collection of all Keybase dumps
|
41
|
+
def self.dump_all
|
42
|
+
Dump.all
|
43
|
+
end
|
44
|
+
|
45
|
+
# Retrieve the latest dump from Keybase
|
46
|
+
#
|
47
|
+
# @return [Keybase::Dump] latest Keybase dump
|
48
|
+
def self.dump_latest
|
49
|
+
Dump.latest
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
module Keybase
|
1
|
+
module Keybase::Core
|
2
2
|
# @private
|
3
3
|
class Error < StandardError
|
4
4
|
def self.raise_unless_successful(status)
|
5
5
|
return if status['code'] == 0
|
6
6
|
message = status['fields'] ? error_with_fields(status) : status['desc']
|
7
|
-
err = Keybase::errors[status['code']]
|
7
|
+
err = Keybase::Core::errors[status['code']]
|
8
8
|
if err
|
9
9
|
raise err, message
|
10
10
|
else
|
11
|
-
raise Keybase::Error, "Error #{status['code']}: #{message}"
|
11
|
+
raise Keybase::Core::Error, "Error #{status['code']}: #{message}"
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module Keybase
|
1
|
+
module Keybase::Core
|
2
2
|
# A dump object containing hashes, IDs and data links
|
3
3
|
# from which a mirror can be configured.
|
4
4
|
class Dump
|
@@ -13,7 +13,7 @@ module Keybase
|
|
13
13
|
@parent_dump_id = params['parent_dump_id']
|
14
14
|
@changes_from_parent = params['changes_from_parent']
|
15
15
|
@changes_sha256 = params['changes_sha256']
|
16
|
-
@created_at = Time.at(params['ctime'])
|
16
|
+
@created_at = Time.at(params['ctime'])
|
17
17
|
end
|
18
18
|
|
19
19
|
# Retrieve the dump history from Keybase
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module Keybase
|
1
|
+
module Keybase::Core
|
2
2
|
# A Keybase user containing all attributes you have permission to see
|
3
3
|
class User
|
4
4
|
|
@@ -42,6 +42,12 @@ module Keybase
|
|
42
42
|
return new(response['me'])
|
43
43
|
end
|
44
44
|
|
45
|
+
# Log out of Keybase
|
46
|
+
#
|
47
|
+
def logout
|
48
|
+
return Request::Session.kill_all
|
49
|
+
end
|
50
|
+
|
45
51
|
# Post a self-signed authentication certificate to Keybase
|
46
52
|
#
|
47
53
|
# This requires login first.
|
@@ -129,13 +135,13 @@ module Keybase
|
|
129
135
|
|
130
136
|
def set_basics(params)
|
131
137
|
@basics = OpenStruct.new(params.merge(created_at: nil, updated_at: nil))
|
132
|
-
@basics.created_at = Time.at(@basics.ctime)
|
133
|
-
@basics.updated_at = Time.at(@basics.mtime)
|
138
|
+
@basics.created_at = Time.at(@basics.ctime) if @basics.ctime
|
139
|
+
@basics.updated_at = Time.at(@basics.mtime) if @basics.mtime
|
134
140
|
end
|
135
141
|
|
136
142
|
def set_profile(params)
|
137
143
|
@profile = OpenStruct.new(params.merge(updated_at: nil))
|
138
|
-
@profile.updated_at = Time.at(@profile.mtime)
|
144
|
+
@profile.updated_at = Time.at(@profile.mtime) if @profile.mtime
|
139
145
|
end
|
140
146
|
|
141
147
|
def set_emails(params)
|
@@ -148,20 +154,21 @@ module Keybase
|
|
148
154
|
|
149
155
|
def set_public_keys(params)
|
150
156
|
@public_keys = OpenStruct.new(params)
|
151
|
-
|
152
|
-
v.merge!('created_at' => Time.at(v['ctime']).to_datetime)
|
153
|
-
v.merge!('updated_at' => Time.at(v['mtime']).to_datetime)
|
154
|
-
@public_keys.send("#{k}=".to_sym, OpenStruct.new(v))
|
155
|
-
end
|
157
|
+
@public_keys = update_collection(params, @public_keys)
|
156
158
|
end
|
157
159
|
|
158
160
|
def set_private_keys(params)
|
159
161
|
@private_keys = OpenStruct.new(params)
|
162
|
+
@private_keys = update_collection(params, @private_keys)
|
163
|
+
end
|
164
|
+
|
165
|
+
def update_collection(params, collection)
|
160
166
|
params.each do |k,v|
|
161
|
-
v.merge!('created_at' => Time.at(v['ctime'])
|
162
|
-
v.merge!('updated_at' => Time.at(v['mtime'])
|
163
|
-
|
167
|
+
v.merge!('created_at' => Time.at(v['ctime']))
|
168
|
+
v.merge!('updated_at' => Time.at(v['mtime']))
|
169
|
+
collection.send("#{k}=".to_sym, OpenStruct.new(v))
|
164
170
|
end
|
171
|
+
collection
|
165
172
|
end
|
166
173
|
|
167
174
|
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
module Keybase
|
1
|
+
module Keybase::Core
|
2
2
|
# @private
|
3
3
|
module Request
|
4
4
|
API_BASE_URL = 'https://keybase.io'
|
5
5
|
class Base
|
6
6
|
|
7
7
|
def self.get(url, params={})
|
8
|
-
|
8
|
+
Response.new(conn.get(url, params)).body
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.post(url, params={})
|
12
|
-
response =
|
12
|
+
response = Response.new(conn.post(url, params))
|
13
13
|
TokenStore.cookie = response.cookie if response.cookie
|
14
14
|
response.body
|
15
15
|
end
|