keybase-core 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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\nxsFNBFMxgIIBEAC7FgZw+9N8h+o6DjhgM4v2IzhxCrTG9rBax9bElr36haI1oomT\nqxy6FbsIsqzP85m+dRWd7LBNJy5pcr0izzpE15+2Ux47fSRLB6mAHZ1Ia5aX3AfI\n5rbqz6DRoXynGX6fZJrAL7eZOOU/xuqYR/cgCkQvHdnakgwfnPAQDmsnFA22OPCC\nJa83laNWmZKQ/daRFdfzRSUkj+0t6jgh4dj5BSvtZhpUcIHWnHZs/8tOAvTkba+o\nBLr6syS+qjEStqs2RE0JVtgFoCU8WFNs4AaVQndL6LwFDBoK6ybruCPYVGod8kWD\noO/gbUoV25B+EMSQuGvTyF2D+KRkXIjJFnRrC28CFhKO//ChWsNSJQoxRjqZKbGD\nSOWgtIsXfc1u2PZb2RIU0Q0HGYNlvJsxMopaOTcpu4ldLs18Orwun0a6M5WaoohI\nC0qA9OBZF1AHv87GZDjz/GSjbxkqNY1vuwwllkf4YeEU1nxdOxGRkntv1FGHoAiq\ns+zT6WNK2XNM1zBM+lUx3UEOxls91u+hhMk+JKOU26npPJa9LYtqmKc59A57wYkP\nCP5SSI8kI0UIDy/0BZ62RfKJcVgMDuVED0/XnmQDQ4Emns2gR0AgfMoEQCR0oe2u\nC6NlqPFKGwsvyOUtVn4pK8TRisp5pIGP6osetZVk26KM9l+IQGcqZrGx+QARAQAB\nzS9rZXliYXNlLmlvL3NlYW5oYW5kbGV5IDxzZWFuaGFuZGxleUBrZXliYXNlLmlv\nPsLBbQQTAQoAFwUCUzGAggIbLwMLCQcDFQoIAh4BAheAAAoJEAerF3XvEm+NJ2gP\n/RtHDkIax7N1EDtyicGem4JOgDbl1ig6M0iyGTf5Xl7vA9TWiNlSDF4Mr1kj+wy8\njrW71Wg7GNP9dPPwRww75dU+/Nht3nfo1FhPDuaS+2jg1DiK+HNPaasFIbdmW8Nq\nWzn5Br4d3JUkMbbFIYG9Knlm5UdJh+1an6xszmK5YuzzxUxTRw6O2WOu8gPVk9Lc\ncwLR7XPPtkvk3pNSjsE91+SZW8QyqFjhmAzBbBZT1XVHTmiSwOP2mATz0xWLQRO/\nq+/ov8P+0+4EdqMOh8DyVqFt4oIp8yDAbifBTtjfKqBnuQkCEMzz5deMoMTpN31N\nnWsrgx4AfQYS2VF+1JhwzN1/BYAnctcPZLCd2hIrdqEmIVyPUVRbTLTgUxG8pp7O\n1jwCZ1TeJsIBr4umCtEWZrJEYBGoTH+IBDGDMJJnCxJ9VzVpBmgexX0Wf59uf472\nqdcQZBhPa5rJLVxIFHWWZ0oe7eDlhGJFCk/Yw2w/5WbUKZPQWtMklozFjByGulCB\nwfV5+PhaTPh2ktK9Zh+d/JAN7KYvB7aO0HEJa4I/m9Gvj9g3t/tV0/CM+KoE55ah\nDYuoTMb2S8+PMqKDERSTRic70+mKROA7ANU8embiy9CgWfDJIl/5GvbsSECijWWE\nY75kiitbvj6AbieBel1T4gw6aAau5d7SXDXBQlmenkmdzsBNBFMxgIIBCAC3B5sd\nZY/2KUYMffKNcmHgz84XA+YJbIK62/I20fXTsnvCts+58luwDdmBeB7UO0uJu8RC\nzgurkJ5Eh3JwO3JBMIHIaS5GataiRQW1o83jLWQoIlToqVPdT5ElcvI7ILozNqwP\nE5oYTSbgKETt9iXaGwOhs8X74AapX/8sb3ak9NxiC4jWNQgP4yTHW6Xd45MMqLPb\nawDmWIsmt5WIPIoacGpPMwJ9YSqS+0HLfbkPJTKLF/ocr7Qb99dfv4KlYiAjz19U\nCKh1aMeO3UVt/GVmHnTTJPoy/2Hk/ZU7I06eJASNyam8yG0SM/XF0mguL2Z004HY\nNIwZQigEHAVeiV2jABEBAAHCwoQEGAEKAA8FAlMxgIIFCQ8JnAACGy4BKQkQB6sX\nde8Sb43AXSAEGQEKAAYFAlMxgIIACgkQrmPQMI6yLNN9XAf+LMdk7qJZv2Snp3Qx\n5dGwYXbVZgoMrvRaoAUJoI/OWPAQxgSNeliJ78C+MB5zpcSiwT7Q77AeuW4ppl8D\nszYIoSxSCUMPS/I1c/ZlceSuohyhzkOXLnZ4IJFDXoGqQhILowADZaaKgMvK4TwT\nxpwlM1WlvySzJtZiutF6f5HobnpOgOFROE8/fGTmY3T7lABmEzgTDpAi/pHCE/1J\npWklnDOVMSAPZe9Uo8m2PDu+wep6O2wYT4nviJaF9PQvrxF+LHec4aTl4MF9v19m\nzdtaR7Tz/5wpiMYsuu44UiY7e0shotkzqElOMQVoWV/EDfvEzIqyVwjis0jAl4al\nQ0oOdwInD/9RwOz359r8KaFhdZjI3+C/Cds0qP8ugUr41FWdCRm/+R7Kgiz934+B\ncPXsKaFaQ0S5fQO297sG5TkKoLPm/xi3r9Nz3/jbUvXsPBYkOMUOTv1utVmQ+CHP\nH88sgzIYL5LE1d5Ag19+nAFUVAPZ2AV9XgpbModq+FKNiilsuhcyYlbM9dUvWh1B\ntP9vGIeYlnBN3bAbUe3V3opiDLycdpPVJcvmoNjY0vxvTNRqJcOSjPC3ZAfpnfjz\nsYqxTzGgjyrK1YwLcgKn5hvvnq4dtAP6VMNhKfoMOssHsBtVVVKskRbDlM6j7JM9\n4BjxelECgx/k7iZ++qGFcvn92PXel/uFKCiAPGn/pfbqbzlpJBr24uRlhsthd46G\nQHWZSYPZRwKUb24Dl2H/F4+x9jSKYtRuGKCi6j5gM4qbBPVZevUEbIa9LlvcWwYQ\n/9T7wdZFSrKjWxmBUY4P3tyeuQpoqtNP2eFw23/X4yBGyU0jwVy36gxHR+0Hi2d4\ngnoVFcINqTagKdNv+ALKlzYINASF2hepVeWA9D9TUULhf7OwFLEjQk+cWfXOIwjS\nnS4U62EWN120qkYuPn8xwdDPf9f+8gC1mR5stnNlt0Ia08RbG/jRxFCofxuT4RLg\n6mt/ptne6aooq9/nWWI9BtpVqa7w21VN72MIUVqBt9lBQTOcHNfTzQ==\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
|