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
@@ -1,7 +1,7 @@
1
1
  # POST sig/post_auth.json
2
2
  # sig : "----- BEGIN PGP MESSAGE ----- ..."
3
3
  # email_or_username : "maxtaco"
4
- module Keybase
4
+ module Keybase::Core
5
5
  module Request
6
6
  class Sig < Base
7
7
  def self.post_auth(email_or_username, sig)
@@ -1,5 +1,5 @@
1
1
  # GET /user/lookup.json?username=USERNAME
2
- module Keybase
2
+ module Keybase::Core
3
3
  module Request
4
4
  class User < Base
5
5
  def self.lookup(username)
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  # @private
3
3
  class Response
4
4
 
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  # @private
3
3
  class TokenStore
4
4
 
@@ -1,13 +1,13 @@
1
1
  require_relative '../test_helper'
2
2
  require_relative '../integration_test_helper'
3
3
 
4
- module Keybase
4
+ module Keybase::Core
5
5
  class DumpsIntegrationTest < Minitest::Test
6
6
 
7
7
  def setup
8
8
  VCR.use_cassette('dumps') do
9
- @all = Keybase.dump_all
10
- @latest = Keybase.dump_latest
9
+ @all = Keybase::Core.dump_all
10
+ @latest = Keybase::Core.dump_latest
11
11
  end
12
12
  end
13
13
 
@@ -1,7 +1,7 @@
1
1
  require_relative '../test_helper'
2
2
  require_relative '../integration_test_helper'
3
3
 
4
- module Keybase
4
+ module Keybase::Core
5
5
  class KeysIntegrationTest < Minitest::Test
6
6
 
7
7
  def setup
@@ -1,7 +1,7 @@
1
1
  require_relative '../test_helper'
2
2
  require_relative '../integration_test_helper'
3
3
 
4
- module Keybase
4
+ module Keybase::Core
5
5
  class LoginUsersIntegrationTest < Minitest::Test
6
6
 
7
7
  def test_login
@@ -9,8 +9,9 @@ module Keybase
9
9
  user = User.login('seanhandley', 'secret')
10
10
  assert_equal "secret", user.private_keys.primary.bundle
11
11
  assert_equal "dude@testing.com", user.emails.primary.email
12
- assert_equal 'lgHZIDA0MmNjYWYwMTMxZmZlZDNiZGE1MDAyM2M3ZGEzNzA4zlMxfzfOAAFRgMDEIPBYxx9HWUnY8GVK2rYzx29hOQW5DXDNkONntT1FjGxI', TokenStore.csrf
13
- assert_equal 'guest=lgHZIGJkM2E1MGNmMjBjNmQ0MzQwMmFhMDI4Mjc4YzJiZjA4zlMxfzjOAAFRgMDEINQblgb3pKa15JV58bI2VqKfWGvPFe3qcLUuq153%2Be7C; Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Tue, 25 Mar 2014 13:16:04 GMT; HttpOnly; Secure, session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxfzjOAeEzgNkgODViZmU1ZGI4MzM3NzM4NDk2MDRmZGIzOWZkM2UxMDLEII%2B6%2FmdEgDo74uwb%2BQDMrDt6m06NFhs0eQjX9popcagO; Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Wed, 25 Mar 2015 13:06:00 GMT; HttpOnly; Secure', TokenStore.cookie
12
+ assert_equal 'lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI+pzS0A', TokenStore.csrf
13
+ assert_equal 'guest=lgHZIGYzM2JhODcxNmI1MWIwNjEwMmRiYzJjZjYyZDc2MDA4zlNMW3HOAAFRgMDEIO5SxHNTXW6adHXLZAWVcKHEsRCENKrdX5ORk%2FZHSJ3r; Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Mon, 14 Apr 2014 22:14:37 GMT; HttpOnly; Secure, session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAeEzgNkgNDhkZWI1ZTAxNjdkZWU2MjMzZjYyODUzYjA3NDk1MDLEIOpnJ3YjyYV0Ia1irJDYIvGrXhcj3sATBJsOeQiPzS%2FT; Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Tue, 14 Apr 2015 22:04:33 GMT; HttpOnly; Secure', TokenStore.cookie
14
+ assert_equal true, user.logout
14
15
  end
15
16
  end
16
17
 
@@ -1,12 +1,12 @@
1
1
  require_relative '../test_helper'
2
2
  require_relative '../integration_test_helper'
3
3
 
4
- module Keybase
4
+ module Keybase::Core
5
5
  class LookupUsersIntegrationTest < Minitest::Test
6
6
 
7
7
  def setup
8
8
  VCR.use_cassette('user_lookup_foo') do
9
- @user = Keybase.lookup("foo")
9
+ @user = Keybase::Core.lookup("foo")
10
10
  end
11
11
  end
12
12
 
@@ -16,7 +16,7 @@ module Keybase
16
16
 
17
17
  def test_user_not_found
18
18
  VCR.use_cassette('user_lookup_not_found') do
19
- assert_raises(Keybase::UserNotFoundError, 'user not found foofoofooofo') do
19
+ assert_raises(Keybase::Core::UserNotFoundError, 'user not found foofoofooofo') do
20
20
  @user = User.lookup('foofoofooofo')
21
21
  end
22
22
  end
@@ -24,7 +24,7 @@ module Keybase
24
24
 
25
25
  def test_username_missing
26
26
  VCR.use_cassette('user_lookup_missing') do
27
- assert_raises(Keybase::InputError, 'missing or invalid input. username: missing name') do
27
+ assert_raises(Keybase::Core::InputError, 'missing or invalid input. username: missing name') do
28
28
  @user = User.lookup('')
29
29
  end
30
30
  end
@@ -32,7 +32,7 @@ module Keybase
32
32
 
33
33
  def test_username_invalid
34
34
  VCR.use_cassette('user_lookup_invalid') do
35
- assert_raises(Keybase::InputError, 'missing or invalid input. username: invalid name') do
35
+ assert_raises(Keybase::Core::InputError, 'missing or invalid input. username: invalid name') do
36
36
  @user = User.lookup('d8dw9sfu83u39229i9fewdsi0-fdsii-i')
37
37
  end
38
38
  end
@@ -1,10 +1,12 @@
1
- if require 'simplecov'
1
+ require 'simplecov'
2
+ if require 'coveralls'
3
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
2
4
  SimpleCov.start do
3
5
  add_filter '/test/'
4
6
  end
5
7
  end
6
8
 
7
- require_relative '../lib/keybase'
9
+ require_relative '../lib/keybase-core'
8
10
  EXAMPLE_USER_JSON = IO.read(File.expand_path('../fixtures/example_user.json', __FILE__))
9
11
  EXAMPLE_USER = JSON.parse(EXAMPLE_USER_JSON)
10
12
  EXAMPLE_DUMP_JSON = IO.read(File.expand_path('../fixtures/example_dump.json', __FILE__))
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  require_relative '../../../test_helper'
3
3
 
4
4
  class CryptoTest < Minitest::Test
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  require_relative '../../../test_helper'
3
3
 
4
4
  class ErrorTest < Minitest::Test
@@ -19,7 +19,7 @@ module Keybase
19
19
  end
20
20
 
21
21
  def test_behaviour_with_unknown_error_code
22
- assert_raises Keybase::Error do
22
+ assert_raises Keybase::Core::Error do
23
23
  begin
24
24
  Error.raise_unless_successful(@unknown)
25
25
  catch StandardError => e
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
 
3
3
  require_relative '../../../../test_helper'
4
4
 
@@ -8,8 +8,8 @@ module Keybase
8
8
  end
9
9
 
10
10
  def test_unix_time_parsed_to_date
11
- assert_equal "2014-02-24T18:46:31+00:00",
12
- @dump.created_at.to_s
11
+ assert_equal "2014-02-24 18:46:31 UTC",
12
+ @dump.created_at.utc.to_s
13
13
  end
14
14
 
15
15
  def test_dump_all
@@ -24,7 +24,7 @@ module Keybase
24
24
  def test_dump_latest
25
25
  Request::Dump.stub :latest, {'dump_id' => 1, 'ctime' => 1393267591} do
26
26
  assert_equal 1, Dump.latest.id
27
- assert_equal '2014-02-24T18:46:31+00:00', Dump.latest.created_at.to_s
27
+ assert_equal '2014-02-24 18:46:31 UTC', Dump.latest.created_at.utc.to_s
28
28
  end
29
29
  end
30
30
  end
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
 
3
3
  require_relative '../../../../test_helper'
4
4
 
@@ -14,29 +14,29 @@ module Keybase
14
14
  end
15
15
 
16
16
  def test_unix_times_parsed_to_dates_for_basics
17
- assert_equal "2013-10-30T19:24:21+00:00",
18
- @user.basics.created_at.to_s
19
- assert_equal "2013-10-30T19:41:01+00:00",
20
- @user.basics.updated_at.to_s
17
+ assert_equal "2013-10-30 19:24:21 UTC",
18
+ @user.basics.created_at.utc.to_s
19
+ assert_equal "2013-10-30 19:41:01 UTC",
20
+ @user.basics.updated_at.utc.to_s
21
21
  end
22
22
 
23
23
  def test_unix_times_parsed_to_dates_for_profile
24
- assert_equal "2013-10-31T19:22:19+00:00",
25
- @user.profile.updated_at.to_s
24
+ assert_equal "2013-10-31 19:22:19 UTC",
25
+ @user.profile.updated_at.utc.to_s
26
26
  end
27
27
 
28
28
  def test_unix_times_parsed_to_dates_for_public_keys
29
- assert_equal "2013-11-05T21:00:12+00:00",
30
- @user.public_keys.primary.created_at.to_s
31
- assert_equal "2013-11-05T21:00:12+00:00",
32
- @user.public_keys.primary.updated_at.to_s
29
+ assert_equal "2013-11-05 21:00:12 UTC",
30
+ @user.public_keys.primary.created_at.utc.to_s
31
+ assert_equal "2013-11-05 21:00:12 UTC",
32
+ @user.public_keys.primary.updated_at.utc.to_s
33
33
  end
34
34
 
35
35
  def test_unix_times_parsed_to_dates_for_private_keys
36
- assert_equal "2013-11-05T21:00:12+00:00",
37
- @user.private_keys.primary.created_at.to_s
38
- assert_equal "2013-11-05T21:00:12+00:00",
39
- @user.private_keys.primary.updated_at.to_s
36
+ assert_equal "2013-11-05 21:00:12 UTC",
37
+ @user.private_keys.primary.created_at.utc.to_s
38
+ assert_equal "2013-11-05 21:00:12 UTC",
39
+ @user.private_keys.primary.updated_at.utc.to_s
40
40
  end
41
41
 
42
42
  def test_emails_set_correctly
@@ -131,6 +131,12 @@ module Keybase
131
131
  assert @user.revoke_key(@kid)
132
132
  end
133
133
  end
134
+
135
+ def test_logout
136
+ Request::Session.stub(:post, true) do
137
+ assert Request::Session.kill_all
138
+ end
139
+ end
134
140
 
135
141
  end
136
142
  end
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  require_relative '../../../../test_helper'
3
3
 
4
4
  module Request
@@ -12,7 +12,7 @@ module Keybase
12
12
  def test_get_returns_keybase_response
13
13
  Base.stub :conn, @conn do
14
14
  @conn.stub :get, nil do
15
- Keybase::Response.stub :new, @response do
15
+ Keybase::Core::Response.stub :new, @response do
16
16
  assert Base.get('foo', {})
17
17
  end
18
18
  end
@@ -23,7 +23,7 @@ module Keybase
23
23
  @mock = MiniTest::Mock.new
24
24
  @mock.expect(:get, @response, ['foo', { 'bar' => 'baz'}])
25
25
  Base.stub :conn, @mock do
26
- Keybase::Response.stub :new, @response do
26
+ Keybase::Core::Response.stub :new, @response do
27
27
  Base.get('foo', 'bar' => 'baz')
28
28
  end
29
29
  end
@@ -33,7 +33,7 @@ module Keybase
33
33
  def test_post_returns_keybase_response
34
34
  Base.stub :conn, @conn do
35
35
  @conn.stub :post, nil do
36
- Keybase::Response.stub :new, @response do
36
+ Keybase::Core::Response.stub :new, @response do
37
37
  assert Base.post('foo', {})
38
38
  end
39
39
  end
@@ -44,7 +44,7 @@ module Keybase
44
44
  @mock = MiniTest::Mock.new
45
45
  @mock.expect(:post, @response, ['foo', { 'bar' => 'baz'}])
46
46
  Base.stub :conn, @mock do
47
- Keybase::Response.stub :new, @response do
47
+ Keybase::Core::Response.stub :new, @response do
48
48
  Base.post('foo', 'bar' => 'baz')
49
49
  end
50
50
  end
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class DumpAllTest < Minitest::Test
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class DumpLatestTest < Minitest::Test
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class KeyAddTest < Minitest::Test
6
6
 
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class KeyRevokeTest < Minitest::Test
6
6
 
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class RootGetSaltTest < Minitest::Test
6
6
 
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class RootLoginTest < Minitest::Test
6
6
 
@@ -0,0 +1,19 @@
1
+ require_relative '../../../../../test_helper'
2
+
3
+ module Keybase::Core
4
+ module Request
5
+ class SessionKillAllTest < Minitest::Test
6
+
7
+ def setup
8
+ @response = { }
9
+ end
10
+
11
+ def test_session_kill_all_true
12
+ Base.stub :post, @response do
13
+ assert Request::Session.kill_all
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class SigPostAuthTest < Minitest::Test
6
6
 
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../../../test_helper'
2
2
 
3
- module Keybase
3
+ module Keybase::Core
4
4
  module Request
5
5
  class UserLookupTest < Minitest::Test
6
6
  def setup
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  require_relative '../../../test_helper'
3
3
 
4
4
  class ResponseTest < Minitest::Test
@@ -14,7 +14,7 @@ module Keybase
14
14
 
15
15
  def test_raises_user_not_found
16
16
  @response.stub :body, {'status' => {'code' => 205, 'desc' => 'User not found'}}.to_json do
17
- assert_raises(Keybase::UserNotFoundError, 'User not found') do
17
+ assert_raises(Keybase::Core::UserNotFoundError, 'User not found') do
18
18
  Response.new(@response)
19
19
  end
20
20
  end
@@ -1,4 +1,4 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
  require_relative '../../../test_helper'
3
3
 
4
4
  class TokenStoreTest < Minitest::Test
@@ -1,23 +1,23 @@
1
- module Keybase
1
+ module Keybase::Core
2
2
 
3
3
  require_relative '../../test_helper'
4
4
 
5
5
  class KeybaseTest < Minitest::Test
6
6
  def test_keybase_calls_user_lookup
7
7
  User.stub :lookup, true do
8
- assert_equal true, Keybase.lookup('foo')
8
+ assert_equal true, Keybase::Core.lookup('foo')
9
9
  end
10
10
  end
11
11
 
12
12
  def test_keybase_calls_dump_all
13
13
  Dump.stub :all, true do
14
- assert_equal true, Keybase.dump_all
14
+ assert_equal true, Keybase::Core.dump_all
15
15
  end
16
16
  end
17
17
 
18
18
  def test_keybase_calls_dump_latest
19
19
  Dump.stub :latest, true do
20
- assert_equal true, Keybase.dump_latest
20
+ assert_equal true, Keybase::Core.dump_latest
21
21
  end
22
22
  end
23
23
 
@@ -7,6 +7,14 @@ http_interactions:
7
7
  encoding: US-ASCII
8
8
  string: ''
9
9
  headers:
10
+ Cookie:
11
+ - guest=lgHZIDI1ZmRlMjZhZGQ5ZTZjNzNlOWQ2Yzg4NmVjN2M3MjA4zlMxgOvOAAFRgMDEID27s4G4rgbr7Q8kINyCbeDXMR3Tk1H%2BEOKFkrsRGnJN;
12
+ Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Tue, 25 Mar 2014 13:23:20
13
+ GMT; HttpOnly; Secure, session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxgOvOAeEzgNkgNjkxYzlmOWI0ODA2N2IxM2JjN2I5ZDBmMTBlOGE2MDLEIJmFmQo450P8iz0TItrkA33%2Frtwyt9rhdcmpSYjxZ2h4;
14
+ Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Wed, 25 Mar 2015 13:13:15
15
+ GMT; HttpOnly; Secure
16
+ X-Csrf-Token:
17
+ - lgHZIDVhMDMwZmZlMTk3YjIwOWU2MDM2MGFkYTg4M2UwYTA4zlMxgOvOAAFRgMDEIN9EVcSYlQT55aj+cnieTT8YhPYszpo0trf8xN1XXepy
10
18
  User-Agent:
11
19
  - Faraday v0.9.0
12
20
  Accept-Encoding:
@@ -19,9 +27,9 @@ http_interactions:
19
27
  message: OK
20
28
  headers:
21
29
  Server:
22
- - nginx/1.4.3
30
+ - nginx/1.4.7
23
31
  Date:
24
- - Tue, 25 Mar 2014 13:05:59 GMT
32
+ - Mon, 14 Apr 2014 22:04:32 GMT
25
33
  Content-Type:
26
34
  - application/json; charset=utf-8
27
35
  Content-Length:
@@ -33,15 +41,15 @@ http_interactions:
33
41
  Strict-Transport-Security:
34
42
  - max-age=31536000
35
43
  Set-Cookie:
36
- - guest=lgHZIDA0MmNjYWYwMTMxZmZlZDNiZGE1MDAyM2M3ZGEzNzA4zlMxfzfOAAFRgMDEICcDJkfb9Dx%2B3zOwXf0uinslHFcRbVhcblMfROqL7d8%2B;
37
- Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Tue, 25 Mar 2014 13:16:04
44
+ - guest=lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEIACBEdeTdwduaYHTkgtrVO5wnaTdL4LW30TWG0%2B8HEG3;
45
+ Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Mon, 14 Apr 2014 22:14:37
38
46
  GMT; HttpOnly; Secure
39
47
  Expires:
40
48
  - "-1"
41
49
  Cache-Control:
42
50
  - must-revalidate, private
43
51
  Etag:
44
- - "\"-995079555\""
52
+ - "\"510021544\""
45
53
  body:
46
54
  encoding: UTF-8
47
55
  string: |-
@@ -50,23 +58,29 @@ http_interactions:
50
58
  "code": 0,
51
59
  "name": "OK"
52
60
  },
53
- "guest_id": "042ccaf0131ffed3bda50023c7da3708",
54
- "salt": "a64952fa509406dcd9b3b26b696ab5d0",
55
- "login_session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxfzfNASzAxCDt2SoFRFcwv131WjjMslvJldcxobU5ZdG+6OvX86uq5A==",
61
+ "guest_id": "bfbb8e41317c557eec741fb218d4c608",
62
+ "salt": "salt",
63
+ "login_session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3DNASzAxCACS6xHYzDITHa6pbKGoa0xtwKgt2IPYL7VPKX6Vph/9w==",
56
64
  "pwh_version": 3,
57
- "csrf_token": "lgHZIDA0MmNjYWYwMTMxZmZlZDNiZGE1MDAyM2M3ZGEzNzA4zlMxfzfOAAFRgMDEIPBYxx9HWUnY8GVK2rYzx29hOQW5DXDNkONntT1FjGxI"
65
+ "csrf_token": "lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI+pzS0A"
58
66
  }
59
67
  http_version:
60
- recorded_at: Tue, 25 Mar 2014 13:06:25 GMT
68
+ recorded_at: Mon, 14 Apr 2014 22:04:32 GMT
61
69
  - request:
62
70
  method: post
63
71
  uri: https://keybase.io/_/api/1.0/login.json
64
72
  body:
65
73
  encoding: UTF-8
66
- string: email_or_username=seanhandley&hmac_pwh=9c1b51658ab062c506ebcebc981831f77f468c793cf0d4a83e731e1bbaa49a5e1dce96c47d5ce3068c620e51f0a23d4945d4b6b30c59fada6976c487c59a0742&login_session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxfzfNASzAxCDt2SoFRFcwv131WjjMslvJldcxobU5ZdG%2B6OvX86uq5A%3D%3D
74
+ string: email_or_username=seanhandley&hmac_pwh=6629b3e3e7a692f8bd702ab32035c7d6ab9b0aa9729f62ae5b25ef86e457b44e8bd79a294d240afeedb4b4264e8b9dbe49ceb9c87191781c4774c913417ace52&login_session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3DNASzAxCACS6xHYzDITHa6pbKGoa0xtwKgt2IPYL7VPKX6Vph%2F9w%3D%3D
67
75
  headers:
76
+ Cookie:
77
+ - guest=lgHZIDI1ZmRlMjZhZGQ5ZTZjNzNlOWQ2Yzg4NmVjN2M3MjA4zlMxgOvOAAFRgMDEID27s4G4rgbr7Q8kINyCbeDXMR3Tk1H%2BEOKFkrsRGnJN;
78
+ Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Tue, 25 Mar 2014 13:23:20
79
+ GMT; HttpOnly; Secure, session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxgOvOAeEzgNkgNjkxYzlmOWI0ODA2N2IxM2JjN2I5ZDBmMTBlOGE2MDLEIJmFmQo450P8iz0TItrkA33%2Frtwyt9rhdcmpSYjxZ2h4;
80
+ Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Wed, 25 Mar 2015 13:13:15
81
+ GMT; HttpOnly; Secure
68
82
  X-Csrf-Token:
69
- - lgHZIDA0MmNjYWYwMTMxZmZlZDNiZGE1MDAyM2M3ZGEzNzA4zlMxfzfOAAFRgMDEIPBYxx9HWUnY8GVK2rYzx29hOQW5DXDNkONntT1FjGxI
83
+ - lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI+pzS0A
70
84
  User-Agent:
71
85
  - Faraday v0.9.0
72
86
  Content-Type:
@@ -81,13 +95,13 @@ http_interactions:
81
95
  message: OK
82
96
  headers:
83
97
  Server:
84
- - nginx/1.4.3
98
+ - nginx/1.4.7
85
99
  Date:
86
- - Tue, 25 Mar 2014 13:06:00 GMT
100
+ - Mon, 14 Apr 2014 22:04:33 GMT
87
101
  Content-Type:
88
102
  - application/json; charset=utf-8
89
103
  Content-Length:
90
- - '14298'
104
+ - '14322'
91
105
  Connection:
92
106
  - keep-alive
93
107
  X-Powered-By:
@@ -95,11 +109,11 @@ http_interactions:
95
109
  Strict-Transport-Security:
96
110
  - max-age=31536000
97
111
  Set-Cookie:
98
- - guest=lgHZIGJkM2E1MGNmMjBjNmQ0MzQwMmFhMDI4Mjc4YzJiZjA4zlMxfzjOAAFRgMDEINQblgb3pKa15JV58bI2VqKfWGvPFe3qcLUuq153%2Be7C;
99
- Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Tue, 25 Mar 2014 13:16:04
112
+ - guest=lgHZIGYzM2JhODcxNmI1MWIwNjEwMmRiYzJjZjYyZDc2MDA4zlNMW3HOAAFRgMDEIO5SxHNTXW6adHXLZAWVcKHEsRCENKrdX5ORk%2FZHSJ3r;
113
+ Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Mon, 14 Apr 2014 22:14:37
100
114
  GMT; HttpOnly; Secure
101
- - session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxfzjOAeEzgNkgODViZmU1ZGI4MzM3NzM4NDk2MDRmZGIzOWZkM2UxMDLEII%2B6%2FmdEgDo74uwb%2BQDMrDt6m06NFhs0eQjX9popcagO;
102
- Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Wed, 25 Mar 2015 13:06:00
115
+ - session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAeEzgNkgNDhkZWI1ZTAxNjdkZWU2MjMzZjYyODUzYjA3NDk1MDLEIOpnJ3YjyYV0Ia1irJDYIvGrXhcj3sATBJsOeQiPzS%2FT;
116
+ Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Tue, 14 Apr 2015 22:04:33
103
117
  GMT; HttpOnly; Secure
104
118
  body:
105
119
  encoding: UTF-8
@@ -109,19 +123,19 @@ http_interactions:
109
123
  "code": 0,
110
124
  "name": "OK"
111
125
  },
112
- "guest_id": "bd3a50cf20c6d43402aa028278c2bf08",
113
- "session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxfzjOAeEzgNkgODViZmU1ZGI4MzM3NzM4NDk2MDRmZGIzOWZkM2UxMDLEII+6/mdEgDo74uwb+QDMrDt6m06NFhs0eQjX9popcagO",
114
- "uid": "e720f5a4cce9c60f94538d30959e7100",
126
+ "guest_id": "f33ba8716b51b06102dbc2cf62d76008",
127
+ "session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAeEzgNkgNDhkZWI1ZTAxNjdkZWU2MjMzZjYyODUzYjA3NDk1MDLEIOpnJ3YjyYV0Ia1irJDYIvGrXhcj3sATBJsOeQiPzS/T",
128
+ "uid": "1",
115
129
  "me": {
116
- "id": "e720f5a4cce9c60f94538d30959e7100",
130
+ "id": "1",
117
131
  "basics": {
118
132
  "username": "seanhandley",
119
133
  "ctime": 1394719469,
120
134
  "mtime": 1394719469,
121
- "id_version": 11,
122
- "track_version": 9,
123
- "last_id_change": 1395752675,
124
- "salt": "a64952fa509406dcd9b3b26b696ab5d0"
135
+ "id_version": 28,
136
+ "track_version": 11,
137
+ "last_id_change": 1395870234,
138
+ "salt": "a"
125
139
  },
126
140
  "invitation_stats": {
127
141
  "available": 0,
@@ -130,10 +144,10 @@ http_interactions:
130
144
  "open": 0
131
145
  },
132
146
  "profile": {
133
- "mtime": 1394830113,
147
+ "mtime": 1395870263,
134
148
  "full_name": "Sean Handley",
135
149
  "location": "Manchester, UK",
136
- "bio": "I use open source languages, technologies and systems to solve problems."
150
+ "bio": "I use open source languages, technologies and systems to solve (and, sometimes cause) problems."
137
151
  },
138
152
  "emails": {
139
153
  "primary": {
@@ -143,34 +157,90 @@ http_interactions:
143
157
  },
144
158
  "public_keys": {
145
159
  "primary": {
146
- "kid": "010170cb70407fabc41c72a03201b061c895f7c2b478d613aeb28f5a52f4725674000a",
160
+ "kid": "secret",
147
161
  "key_type": 1,
148
- "bundle": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: Keybase OpenPGP v0.1.1\nComment: https://keybase.io/crypto\n\n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\n=Iq71\n-----END PGP PUBLIC KEY BLOCK-----",
149
- "mtime": 1395752675,
150
- "ctime": 1395752675,
151
- "ukbid": "3200ab8dff3054fb0b2f92572c9bbc11",
152
- "key_fingerprint": "5a92216efbf5802ee8e77bc4388b381109627697"
162
+ "bundle": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: Keybase OpenPGP v0.1.1\nComment: https://keybase.io/crypto\n\n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\n=l2sl\n-----END PGP PUBLIC KEY BLOCK-----",
163
+ "mtime": 1395753196,
164
+ "ctime": 1395753196,
165
+ "ukbid": "1e84cc13e87130ca24cfaf6f704f1711",
166
+ "key_fingerprint": "3d5a1e2c0f9d2ec2c5f67afe07ab1775ef126f8d"
153
167
  }
154
168
  },
155
169
  "private_keys": {
156
170
  "primary": {
157
- "kid": "010170cb70407fabc41c72a03201b061c895f7c2b478d613aeb28f5a52f4725674000a",
171
+ "kid": "secret",
158
172
  "key_type": 2,
159
173
  "bundle": "secret",
160
- "mtime": 1395752675,
161
- "ctime": 1395752675
174
+ "mtime": 1395753197,
175
+ "ctime": 1395753197
162
176
  }
163
177
  },
164
178
  "sigs": {
165
179
  "last": {
166
- "sig_id": "08409d3257bbd7f4c01a009b05dccf93f2fe7fcc113df9929b71616a2a5346300f",
167
- "seqno": 11,
168
- "payload_hash": "f1014d7a49f12733aab197ca6d9f7957424df16c5bc27590d7549813139ba5cd"
180
+ "sig_id": "secret",
181
+ "seqno": 18,
182
+ "payload_hash": "secret"
169
183
  }
170
184
  }
171
185
  },
172
- "csrf_token": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlMxftDOAAFRgMDEIA8bUlzQnZvTPUFj4y+VUt9whvsam2C3HClE9VPJqNWZ"
186
+ "csrf_token": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAAFRgMDEIIQBAE1ZpGaNr9mQ5lWOgEhZkeRPAM+ZhlvbkvakYtvy"
187
+ }
188
+ http_version:
189
+ recorded_at: Mon, 14 Apr 2014 22:04:32 GMT
190
+ - request:
191
+ method: post
192
+ uri: https://keybase.io/_/api/1.0/session/killall.json
193
+ body:
194
+ encoding: UTF-8
195
+ string: csrf_token=lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI%2BpzS0A
196
+ headers:
197
+ Cookie:
198
+ - guest=lgHZIGYzM2JhODcxNmI1MWIwNjEwMmRiYzJjZjYyZDc2MDA4zlNMW3HOAAFRgMDEIO5SxHNTXW6adHXLZAWVcKHEsRCENKrdX5ORk%2FZHSJ3r;
199
+ Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=Mon, 14 Apr 2014 22:14:37
200
+ GMT; HttpOnly; Secure, session=lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAeEzgNkgNDhkZWI1ZTAxNjdkZWU2MjMzZjYyODUzYjA3NDk1MDLEIOpnJ3YjyYV0Ia1irJDYIvGrXhcj3sATBJsOeQiPzS%2FT;
201
+ Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=Tue, 14 Apr 2015 22:04:33
202
+ GMT; HttpOnly; Secure
203
+ X-Csrf-Token:
204
+ - lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI+pzS0A
205
+ User-Agent:
206
+ - Faraday v0.9.0
207
+ Content-Type:
208
+ - application/x-www-form-urlencoded
209
+ Accept-Encoding:
210
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
211
+ Accept:
212
+ - "*/*"
213
+ response:
214
+ status:
215
+ code: 200
216
+ message: OK
217
+ headers:
218
+ Server:
219
+ - nginx/1.4.7
220
+ Date:
221
+ - Mon, 14 Apr 2014 22:04:33 GMT
222
+ Content-Type:
223
+ - application/json; charset=utf-8
224
+ Content-Length:
225
+ - '181'
226
+ Connection:
227
+ - keep-alive
228
+ X-Powered-By:
229
+ - Express
230
+ Strict-Transport-Security:
231
+ - max-age=31536000
232
+ Set-Cookie:
233
+ - session=; Domain=.keybase.io; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT
234
+ body:
235
+ encoding: UTF-8
236
+ string: |-
237
+ {
238
+ "status": {
239
+ "code": 0,
240
+ "name": "OK"
241
+ },
242
+ "csrf_token": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAAFRgMDEIIQBAE1ZpGaNr9mQ5lWOgEhZkeRPAM+ZhlvbkvakYtvy"
173
243
  }
174
244
  http_version:
175
- recorded_at: Tue, 25 Mar 2014 13:06:26 GMT
245
+ recorded_at: Mon, 14 Apr 2014 22:04:33 GMT
176
246
  recorded_with: VCR 2.8.0