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.
Files changed (50) hide show
  1. checksums.yaml +5 -13
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Gemfile.lock +19 -5
  5. data/README.md +20 -7
  6. data/certs/seanhandley.pem +21 -0
  7. data/{keybase.gemspec → keybase-core.gemspec} +10 -5
  8. data/lib/keybase-core.rb +52 -0
  9. data/lib/{keybase → keybase-core}/crypto.rb +1 -1
  10. data/lib/{keybase → keybase-core}/error.rb +3 -3
  11. data/lib/{keybase → keybase-core}/models/dump.rb +2 -2
  12. data/lib/{keybase → keybase-core}/models/user.rb +19 -12
  13. data/lib/{keybase → keybase-core}/request/base.rb +3 -3
  14. data/lib/{keybase → keybase-core}/request/dump/all.rb +1 -1
  15. data/lib/{keybase → keybase-core}/request/dump/latest.rb +1 -1
  16. data/lib/{keybase → keybase-core}/request/key/add.rb +1 -1
  17. data/lib/{keybase → keybase-core}/request/key/revoke.rb +1 -1
  18. data/lib/{keybase → keybase-core}/request/root/get_salt_and_login_session.rb +1 -1
  19. data/lib/{keybase → keybase-core}/request/root/login.rb +1 -1
  20. data/lib/keybase-core/request/session/kill_all.rb +11 -0
  21. data/lib/{keybase → keybase-core}/request/sig/post_auth.rb +1 -1
  22. data/lib/{keybase → keybase-core}/request/user/lookup.rb +1 -1
  23. data/lib/{keybase → keybase-core}/response.rb +1 -1
  24. data/lib/{keybase → keybase-core}/token_store.rb +1 -1
  25. data/test/integration/dumps_test.rb +3 -3
  26. data/test/integration/keys_test.rb +1 -1
  27. data/test/integration/login_users_test.rb +4 -3
  28. data/test/integration/lookup_users_test.rb +5 -5
  29. data/test/test_helper.rb +4 -2
  30. data/test/unit/lib/{keybase → keybase-core}/crypto_test.rb +1 -1
  31. data/test/unit/lib/{keybase → keybase-core}/error_test.rb +2 -2
  32. data/test/unit/lib/{keybase → keybase-core}/models/dump_test.rb +4 -4
  33. data/test/unit/lib/{keybase → keybase-core}/models/user_test.rb +21 -15
  34. data/test/unit/lib/{keybase → keybase-core}/requests/base_test.rb +5 -5
  35. data/test/unit/lib/{keybase → keybase-core}/requests/dump/all_test.rb +1 -1
  36. data/test/unit/lib/{keybase → keybase-core}/requests/dump/latest_test.rb +1 -1
  37. data/test/unit/lib/{keybase → keybase-core}/requests/key/add_test.rb +1 -1
  38. data/test/unit/lib/{keybase → keybase-core}/requests/key/revoke_test.rb +1 -1
  39. data/test/unit/lib/{keybase → keybase-core}/requests/root/get_salt_test.rb +1 -1
  40. data/test/unit/lib/{keybase → keybase-core}/requests/root/login_test.rb +1 -1
  41. data/test/unit/lib/keybase-core/requests/session/kill_all.rb +19 -0
  42. data/test/unit/lib/{keybase → keybase-core}/requests/sig/post_auth_test.rb +1 -1
  43. data/test/unit/lib/{keybase → keybase-core}/requests/user/lookup_test.rb +1 -1
  44. data/test/unit/lib/{keybase → keybase-core}/response_test.rb +2 -2
  45. data/test/unit/lib/{keybase → keybase-core}/token_store_test.rb +1 -1
  46. data/test/unit/lib/{keybase_test.rb → keybase_core_test.rb} +4 -4
  47. data/test/vcr_cassettes/user_login.yml +113 -43
  48. metadata +98 -59
  49. metadata.gz.sig +0 -0
  50. data/lib/keybase.rb +0 -49
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NjZmOGQ2MWU5MzM0NmYwNTVmZjEyMGM1YzM5YjkyNmU4ZTIxZjIzMQ==
5
- data.tar.gz: !binary |-
6
- MTE1YzllMWE1MTMyYTQzN2M3OTAyYTQ4N2QwNzhmMjcwYTE3ZWQ4Ng==
2
+ SHA1:
3
+ metadata.gz: 4b54cf8213ff3d4d2c29dda1fdc2e47f7188910e
4
+ data.tar.gz: e2b88377593501d0f938cbed9fe6899b2eb9e843
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YTMwOTVjYTM3M2YyNzRlMTFkMzBhNmEwYTE1MTcxOWFjNTUyNDQxZjAxYzZj
10
- MmU1NDNjYTc3MmI4ZWY0ZjY1ZTQ4MGIzOGJhNDZmZDI5YTMyMTkyNzhjODU5
11
- MGUyNWJmMzMzNWM0NTM2YjdkMDYzYmQ3ZTAxODBmNTJmM2M4OWM=
12
- data.tar.gz: !binary |-
13
- N2UxOWU5NDQyMjUzZWQwZjZlMjJjN2I3MTI2YzZlMzMxODVhNTRjN2Q0NGRi
14
- MzQxNDMxMmZkYTBhOGZlM2VjMjY4ZDk5YjgxMDFkMjJjNWVlOTU2ZmRjMjM5
15
- Yzc4NTUyNzkwZjdhNDA0YWRlYmYxZmJiNmNhYzY0NDUwNDhiZTU=
6
+ metadata.gz: 018c5f57e338bb342fbcdad3fb61ac334daaae7a736be32428cccf388eabe7f9c3048c87dd76a2e85df90ff606c9ef52861009328dffb4c30bc1b0b6123bf46a
7
+ data.tar.gz: 0d28ca09014ce626d6e1b8d90df46bb477736bca0ee11a11f56ea445517de8edb25784acc516fd2dad829d0c146c60554ad5490b6a601d09e1511f9dde3eef1d
Binary file
Binary file
@@ -1,29 +1,38 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- keybase-core (0.1.1)
4
+ keybase-core (0.1.3)
5
5
  faraday (~> 0.9.0)
6
- scrypt (~> 1.2.1)
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.3)
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.1.1)
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 (1.2.1)
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
- # Keybase Core Gem
1
+ ![Keybase](https://keybase.io/images/logo.png)
2
2
 
3
- API client gem for [keybase.io](https://keybase.io)
3
+ Gem wrapper for [keybase.io](https://keybase.io) core API functions.
4
+
5
+ [![Build Status](https://secure.travis-ci.org/keybase/ruby-core.png?branch=master)] (http://travis-ci.org/keybase/ruby-core) [![Gem Version](https://badge.fury.io/rb/keybase-core.png)](http://badge.fury.io/rb/keybase-core) [![Dependency Status](https://gemnasium.com/seanhandley/ruby-core.svg)](https://gemnasium.com/seanhandley/ruby-core) [![Coverage Status](https://coveralls.io/repos/seanhandley/ruby-core/badge.png?branch=master)](https://coveralls.io/r/seanhandley/ruby-core?branch=master) [![Code Climate](https://codeclimate.com/github/keybase/ruby-core.png)](https://codeclimate.com/github/keybase/ruby-core)
4
6
 
5
- [![Build Status](https://secure.travis-ci.org/keybase/ruby-core.png?branch=master)](http://travis-ci.org/keybase/ruby-core) [![Gem Version](https://badge.fury.io/rb/keybase-core.png)](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.2'
4
- gem.date = '2014-03-25'
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 = 'themax@gmail.com'
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 = '~> 2.1.0'
13
+ gem.required_ruby_version = '> 2.0.0'
14
14
 
15
15
  # Runtime Dependencies
16
- gem.add_runtime_dependency 'scrypt', '~> 1.2.1'
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
@@ -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,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  # @private
3
3
  class Crypto
4
4
  SCRYPT_VARS = {'N' => 2**15, 'r' => 8, 'p' => 1, 'key_length' => 224, 'chunk' => 192..-1}
@@ -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']).to_datetime
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).to_datetime if @basics.ctime
133
- @basics.updated_at = Time.at(@basics.mtime).to_datetime if @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).to_datetime if @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
- params.each do |k,v|
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']).to_datetime)
162
- v.merge!('updated_at' => Time.at(v['mtime']).to_datetime)
163
- @private_keys.send("#{k}=".to_sym, OpenStruct.new(v))
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
- Keybase::Response.new(conn.get(url, params)).body
8
+ Response.new(conn.get(url, params)).body
9
9
  end
10
10
 
11
11
  def self.post(url, params={})
12
- response = Keybase::Response.new(conn.post(url, params))
12
+ response = Response.new(conn.post(url, params))
13
13
  TokenStore.cookie = response.cookie if response.cookie
14
14
  response.body
15
15
  end
@@ -1,5 +1,5 @@
1
1
  # GET dump/all.json
2
- module Keybase
2
+ module Keybase::Core
3
3
  module Request
4
4
  class Dump < Base
5
5
  def self.all
@@ -1,5 +1,5 @@
1
1
  # GET dump/latest.json
2
- module Keybase
2
+ module Keybase::Core
3
3
  module Request
4
4
  class Dump < Base
5
5
  def self.latest
@@ -2,7 +2,7 @@
2
2
  # public_key: "-----BEGIN PGP PUBLIC..."
3
3
  # private_key: "hKRib2R5gqRwcml2gqRkY..."
4
4
  # is_primary: true
5
- module Keybase
5
+ module Keybase::Core
6
6
  module Request
7
7
  class Key < Base
8
8
  def self.add(params)
@@ -1,7 +1,7 @@
1
1
  # POST /key/revoke.json
2
2
  # revocation_type: 0
3
3
  # kid: "a140c70404a13370f7..."
4
- module Keybase
4
+ module Keybase::Core
5
5
  module Request
6
6
  class Key < Base
7
7
  def self.revoke(kid)
@@ -1,5 +1,5 @@
1
1
  # GET /getsalt.json?email_or_username=EMAIL_OR_USERNAME
2
- module Keybase
2
+ module Keybase::Core
3
3
  module Request
4
4
  class Root < Base
5
5
  def self.get_salt_and_login_session(email_or_username)
@@ -2,7 +2,7 @@
2
2
  # email_or_username: "chris"
3
3
  # hmac_pwh: "38902fe098f..."
4
4
  # login_session: "lgHZIwfee99..."
5
- module Keybase
5
+ module Keybase::Core
6
6
  module Request
7
7
  class Root < Base
8
8
  def self.login(email_or_username, hmac_pwh, login_session)
@@ -0,0 +1,11 @@
1
+ # POST /session/killall.json
2
+ module Keybase::Core
3
+ module Request
4
+ class Session < Base
5
+ def self.kill_all
6
+ post('session/killall.json', csrf_token: TokenStore.csrf)
7
+ true
8
+ end
9
+ end
10
+ end
11
+ end