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
@@ -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 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 '
|
13
|
-
assert_equal 'guest=
|
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
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
|
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 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-
|
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-
|
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-
|
18
|
-
@user.basics.created_at.to_s
|
19
|
-
assert_equal "2013-10-
|
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-
|
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-
|
30
|
-
@user.public_keys.primary.created_at.to_s
|
31
|
-
assert_equal "2013-11-
|
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-
|
37
|
-
@user.private_keys.primary.created_at.to_s
|
38
|
-
assert_equal "2013-11-
|
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
|
@@ -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,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,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.
|
30
|
+
- nginx/1.4.7
|
23
31
|
Date:
|
24
|
-
-
|
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=
|
37
|
-
Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=
|
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
|
-
- "\"
|
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": "
|
54
|
-
"salt": "
|
55
|
-
"login_session": "
|
61
|
+
"guest_id": "bfbb8e41317c557eec741fb218d4c608",
|
62
|
+
"salt": "salt",
|
63
|
+
"login_session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3DNASzAxCACS6xHYzDITHa6pbKGoa0xtwKgt2IPYL7VPKX6Vph/9w==",
|
56
64
|
"pwh_version": 3,
|
57
|
-
"csrf_token": "
|
65
|
+
"csrf_token": "lgHZIGJmYmI4ZTQxMzE3YzU1N2VlYzc0MWZiMjE4ZDRjNjA4zlNMW3DOAAFRgMDEINPBJ1t4RDULa9V9gxQxmEfn31148DeUuyJJUI+pzS0A"
|
58
66
|
}
|
59
67
|
http_version:
|
60
|
-
recorded_at:
|
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=
|
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
|
-
-
|
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.
|
98
|
+
- nginx/1.4.7
|
85
99
|
Date:
|
86
|
-
-
|
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
|
-
- '
|
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=
|
99
|
-
Max-Age=604.8; Domain=.keybase.io; Path=/; Expires=
|
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=
|
102
|
-
Max-Age=31536000; Domain=.keybase.io; Path=/; Expires=
|
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": "
|
113
|
-
"session": "
|
114
|
-
"uid": "
|
126
|
+
"guest_id": "f33ba8716b51b06102dbc2cf62d76008",
|
127
|
+
"session": "lgHZIGU3MjBmNWE0Y2NlOWM2MGY5NDUzOGQzMDk1OWU3MTAwzlNMW3HOAeEzgNkgNDhkZWI1ZTAxNjdkZWU2MjMzZjYyODUzYjA3NDk1MDLEIOpnJ3YjyYV0Ia1irJDYIvGrXhcj3sATBJsOeQiPzS/T",
|
128
|
+
"uid": "1",
|
115
129
|
"me": {
|
116
|
-
"id": "
|
130
|
+
"id": "1",
|
117
131
|
"basics": {
|
118
132
|
"username": "seanhandley",
|
119
133
|
"ctime": 1394719469,
|
120
134
|
"mtime": 1394719469,
|
121
|
-
"id_version":
|
122
|
-
"track_version":
|
123
|
-
"last_id_change":
|
124
|
-
"salt": "
|
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":
|
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": "
|
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\
|
149
|
-
"mtime":
|
150
|
-
"ctime":
|
151
|
-
"ukbid": "
|
152
|
-
"key_fingerprint": "
|
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": "
|
171
|
+
"kid": "secret",
|
158
172
|
"key_type": 2,
|
159
173
|
"bundle": "secret",
|
160
|
-
"mtime":
|
161
|
-
"ctime":
|
174
|
+
"mtime": 1395753197,
|
175
|
+
"ctime": 1395753197
|
162
176
|
}
|
163
177
|
},
|
164
178
|
"sigs": {
|
165
179
|
"last": {
|
166
|
-
"sig_id": "
|
167
|
-
"seqno":
|
168
|
-
"payload_hash": "
|
180
|
+
"sig_id": "secret",
|
181
|
+
"seqno": 18,
|
182
|
+
"payload_hash": "secret"
|
169
183
|
}
|
170
184
|
}
|
171
185
|
},
|
172
|
-
"csrf_token": "
|
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:
|
245
|
+
recorded_at: Mon, 14 Apr 2014 22:04:33 GMT
|
176
246
|
recorded_with: VCR 2.8.0
|