Skip to content

Commit 827671f

Browse files
committed
Rewrite record/replay with Hyper
We're sending bodies now with actual tarballs, which means that we need any amount of functionality over text parsing. Let's just use a real HTTP library instead of janky line-by-line parsing.
1 parent 999cb61 commit 827671f

File tree

153 files changed

+774
-1793
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+774
-1793
lines changed

Cargo.lock

Lines changed: 366 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ civet = "0.9"
7575
[dev-dependencies]
7676
conduit-test = "0.8"
7777
bufstream = "0.1"
78+
hyper = "0.11"
79+
hyper-tls = "0.1"
80+
futures = "0.1"
81+
tokio-core = "0.1"
82+
tokio-service = "0.1"
7883

7984
[build-dependencies]
8085
dotenv = "0.10"

src/tests/all.rs

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ extern crate serde_json;
2020
extern crate time;
2121
extern crate url;
2222
extern crate s3;
23+
extern crate tar;
24+
extern crate flate2;
2325

2426
use std::borrow::Cow;
2527
use std::collections::HashMap;
@@ -43,6 +45,8 @@ use conduit::{Request, Method};
4345
use conduit_test::MockRequest;
4446
use diesel::prelude::*;
4547
use diesel::pg::upsert::*;
48+
use flate2::Compression;
49+
use flate2::write::GzEncoder;
4650

4751
macro_rules! t {
4852
($e:expr) => (
@@ -131,8 +135,8 @@ fn app() -> (record::Bomb, Arc<App>, conduit_middleware::MiddlewareBuilder) {
131135
bucket: s3::Bucket::new(
132136
String::from("alexcrichton-test"),
133137
None,
134-
String::new(),
135-
String::new(),
138+
std::env::var("S3_ACCESS_KEY").unwrap_or(String::new()),
139+
std::env::var("S3_SECRET_KEY").unwrap_or(String::new()),
136140
&api_protocol,
137141
),
138142
proxy: Some(proxy),
@@ -631,6 +635,7 @@ fn new_req_body(
631635
) -> Vec<u8> {
632636
let kws = kws.into_iter().map(u::Keyword).collect();
633637
let cats = cats.into_iter().map(u::Category).collect();
638+
634639
new_crate_to_body(
635640
&u::NewCrate {
636641
name: u::CrateName(krate.name),
@@ -653,7 +658,19 @@ fn new_req_body(
653658
)
654659
}
655660

656-
fn new_crate_to_body(new_crate: &u::NewCrate, krate: &[u8]) -> Vec<u8> {
661+
fn new_crate_to_body(new_crate: &u::NewCrate, files: &[(&str, &[u8])]) -> Vec<u8> {
662+
let mut tarball = Vec::new();
663+
{
664+
let mut ar = tar::Builder::new(GzEncoder::new(&mut tarball, Compression::Default));
665+
for &(name, data) in files {
666+
let mut header = tar::Header::new_gnu();
667+
t!(header.set_path(name));
668+
header.set_size(data.len() as u64);
669+
header.set_cksum();
670+
t!(ar.append(&header, &data[..]));
671+
}
672+
t!(ar.finish());
673+
}
657674
let json = serde_json::to_string(&new_crate).unwrap();
658675
let mut body = Vec::new();
659676
body.extend(
@@ -668,12 +685,12 @@ fn new_crate_to_body(new_crate: &u::NewCrate, krate: &[u8]) -> Vec<u8> {
668685
body.extend(json.as_bytes().iter().cloned());
669686
body.extend(
670687
&[
671-
(krate.len() >> 0) as u8,
672-
(krate.len() >> 8) as u8,
673-
(krate.len() >> 16) as u8,
674-
(krate.len() >> 24) as u8,
688+
(tarball.len() >> 0) as u8,
689+
(tarball.len() >> 8) as u8,
690+
(tarball.len() >> 16) as u8,
691+
(tarball.len() >> 24) as u8,
675692
],
676693
);
677-
body.extend(krate);
694+
body.extend(tarball);
678695
body
679696
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/category_index

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/category_show

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
28f9838158f8dcbdbc01089634d7a14f495fb8f6
1+
69551e7bd735be9c59d3702a7885669979f0cdbc
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
aa4e8e9caaaff1f7af211c2bc7d96b4202992e13
1+
7534f8b996e3a3f800f0a324f619adba12a74532

src/tests/http-data/keyword_index

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/keyword_show

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/keyword_uppercase

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/krate_download

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/krate_following

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/krate_good_badges

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 343
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/foobadger/foobadger-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
6-
Content-Length: 0
7-
Host: alexcrichton-test.s3.amazonaws.com
8-
Content-Type: application/x-tar
9-
Date: Sun, 28 Jun 2015 14:07:17 -0700
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
x-amz-request-id: CB0E925D8E3AB3E8
15-
x-amz-id-2: SiaMwszM1p2TzXlLauvZ6kRKcUCg7HoyBW29vts42w9ArrLwkJWl8vuvPuGFkpM6XGH+YXN852g=
16-
date: Sun, 28 Jun 2015 21:07:51 GMT
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
content-length: 0
19-
server: AmazonS3
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foobadger/foobadger-1.0.0.crate","method":"PUT","headers":[["Content-Length","35"],["Date","Thu, 14 Sep 2017 09:44:04 -0700"],["Host","alexcrichton-test.s3.amazonaws.com"],["Proxy-Connection","Keep-Alive"],["Accept","*/*"],["Authorization","AWS AKIAICL5IWUZYWWKA7JA:SJNsc3Rh+zV7dPHUQGr8Z4bO4ro="],["Content-Type","application/x-tar"]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["x-amz-request-id","259B82C2DC8C8C75"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["ETag","\"fc9f988c1ba7ccea220952fd61213979\""],["Server","AmazonS3"],["x-amz-id-2","nej/HWPKXhTiYTCv+j1kSPOsoEHSJIeTaHnc2kbeLGflGKle+nGm5WqOUIKLKaRuF/IJFfG9bCI="],["Content-Length","0"]],"body":[]}}]
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 349
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/foo_good_cat/foo_good_cat-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
6-
Content-Length: 0
7-
Host: alexcrichton-test.s3.amazonaws.com
8-
Content-Type: application/x-tar
9-
Date: Sun, 28 Jun 2015 14:07:17 -0700
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
x-amz-request-id: CB0E925D8E3AB3E8
15-
x-amz-id-2: SiaMwszM1p2TzXlLauvZ6kRKcUCg7HoyBW29vts42w9ArrLwkJWl8vuvPuGFkpM6XGH+YXN852g=
16-
date: Sun, 28 Jun 2015 21:07:51 GMT
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
content-length: 0
19-
server: AmazonS3
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_good_cat/foo_good_cat-1.0.0.crate","method":"PUT","headers":[["Authorization","AWS AKIAICL5IWUZYWWKA7JA:3YdZWaxXYkwNl7cP7iSgeBmnFIA="],["Date","Thu, 14 Sep 2017 09:44:04 -0700"],["Content-Length","35"],["Content-Type","application/x-tar"],["Proxy-Connection","Keep-Alive"],["Accept","*/*"],["Host","alexcrichton-test.s3.amazonaws.com"]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["x-amz-id-2","6doapP6obvc16pdSxMsxgRX+TUB+55dkNfsyw3ludfUfBOd2xhf2sL3aI2dKsnf5YCyl0QkEnXM="],["x-amz-request-id","D4BB18987F1E192F"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["Server","AmazonS3"],["ETag","\"fc9f988c1ba7ccea220952fd61213979\""],["Content-Length","0"]],"body":[]}}]
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 359
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/foo_ignored_badge/foo_ignored_badge-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
6-
Content-Length: 0
7-
Host: alexcrichton-test.s3.amazonaws.com
8-
Content-Type: application/x-tar
9-
Date: Sun, 28 Jun 2015 14:07:17 -0700
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
x-amz-request-id: CB0E925D8E3AB3E8
15-
x-amz-id-2: SiaMwszM1p2TzXlLauvZ6kRKcUCg7HoyBW29vts42w9ArrLwkJWl8vuvPuGFkpM6XGH+YXN852g=
16-
date: Sun, 28 Jun 2015 21:07:51 GMT
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
content-length: 0
19-
server: AmazonS3
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_ignored_badge/foo_ignored_badge-1.0.0.crate","method":"PUT","headers":[["Date","Thu, 14 Sep 2017 09:44:04 -0700"],["Host","alexcrichton-test.s3.amazonaws.com"],["Authorization","AWS AKIAICL5IWUZYWWKA7JA:PkIayPRQSzIV9dhyoyKUg4bDSzs="],["Proxy-Connection","Keep-Alive"],["Accept","*/*"],["Content-Type","application/x-tar"],["Content-Length","35"]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["Content-Length","0"],["ETag","\"fc9f988c1ba7ccea220952fd61213979\""],["x-amz-id-2","lbe1X5M1zPPgDYNv9DDBKekuO0e5+gK+XthTu9TMtODupHpjj5eb9GqeOQq0w4L6gqPxQBJWJqU="],["Server","AmazonS3"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["x-amz-request-id","37C5421A868669E2"]],"body":[]}}]
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 355
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/foo_ignored_cat/foo_ignored_cat-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
6-
Content-Length: 0
7-
Host: alexcrichton-test.s3.amazonaws.com
8-
Content-Type: application/x-tar
9-
Date: Sun, 28 Jun 2015 14:07:17 -0700
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
x-amz-request-id: CB0E925D8E3AB3E8
15-
x-amz-id-2: SiaMwszM1p2TzXlLauvZ6kRKcUCg7HoyBW29vts42w9ArrLwkJWl8vuvPuGFkpM6XGH+YXN852g=
16-
date: Sun, 28 Jun 2015 21:07:51 GMT
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
content-length: 0
19-
server: AmazonS3
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_ignored_cat/foo_ignored_cat-1.0.0.crate","method":"PUT","headers":[["Content-Type","application/x-tar"],["Proxy-Connection","Keep-Alive"],["Accept","*/*"],["Content-Length","35"],["Authorization","AWS AKIAICL5IWUZYWWKA7JA:zN+ouGBQMXYwxnltlU50HqLR4D0="],["Host","alexcrichton-test.s3.amazonaws.com"],["Date","Thu, 14 Sep 2017 09:44:04 -0700"]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["ETag","\"fc9f988c1ba7ccea220952fd61213979\""],["x-amz-id-2","MV8ehajFmRoufqKP0fwR1c8SRJWyQbdRYy97wJybWRu7Euo8A5kkNfJ6epnDfXJy3vkjxetK3tE="],["x-amz-request-id","8356C99E90EA73EB"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["Content-Length","0"],["Server","AmazonS3"]],"body":[]}}]

src/tests/http-data/krate_index

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

src/tests/http-data/krate_new_krate

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 339
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/foo_new/foo_new-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
6-
Content-Length: 0
7-
Host: alexcrichton-test.s3.amazonaws.com
8-
Content-Type: application/x-tar
9-
Date: Sun, 28 Jun 2015 14:07:17 -0700
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
x-amz-request-id: CB0E925D8E3AB3E8
15-
x-amz-id-2: SiaMwszM1p2TzXlLauvZ6kRKcUCg7HoyBW29vts42w9ArrLwkJWl8vuvPuGFkpM6XGH+YXN852g=
16-
date: Sun, 28 Jun 2015 21:07:51 GMT
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
content-length: 0
19-
server: AmazonS3
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/foo_new/foo_new-1.0.0.crate","method":"PUT","headers":[["Proxy-Connection","Keep-Alive"],["Accept","*/*"],["Content-Length","35"],["Host","alexcrichton-test.s3.amazonaws.com"],["Content-Type","application/x-tar"],["Date","Thu, 14 Sep 2017 09:44:05 -0700"],["Authorization","AWS AKIAICL5IWUZYWWKA7JA:wqYX81UuSZQN8fgc5iP80iGtuhQ="]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["ETag","\"fc9f988c1ba7ccea220952fd61213979\""],["x-amz-request-id","43421DA20D1F6F8D"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["Server","AmazonS3"],["Content-Length","0"],["x-amz-id-2","xVVFL9W1Qmv14Zgquz4gGVfNvTz+KF4TnWN2PaQXTnvq6HX2qFeQN1nCF45/gwEBrDTqNOZApFs="]],"body":[]}}]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1 @@
1-
===REQUEST 331
2-
PUT http://alexcrichton-test.s3.amazonaws.com/crates/fgt/fgt-1.0.0.crate HTTP/1.1
3-
Accept: */*
4-
Proxy-Connection: Keep-Alive
5-
Host: alexcrichton-test.s3.amazonaws.com
6-
Content-Length: 0
7-
Authorization: AWS AKIAJF3GEK7N44BACDZA:GDxGb6r3SIqo9wXuzHrgMNWekwk=
8-
Date: Sun, 28 Jun 2015 14:07:17 -0700
9-
Content-Type: application/x-tar
10-
11-
12-
===RESPONSE 258
13-
HTTP/1.1 200
14-
server: AmazonS3
15-
x-amz-id-2: jk22ONmcJ2OxrC/gvWL6Zs9gKDKzq3wvi2Cm0vapXjilMLb4UKmXk/PQP54S2Urq638cavjvgXA=
16-
x-amz-request-id: 6EAB09F4446CB1B0
17-
etag: "d41d8cd98f00b204e9800998ecf8427e"
18-
date: Sun, 28 Jun 2015 21:07:51 GMT
19-
content-length: 0
20-
21-
1+
[{"request":{"uri":"http://alexcrichton-test.s3.amazonaws.com/crates/fgt/fgt-1.0.0.crate","method":"PUT","headers":[["Proxy-Connection","Keep-Alive"],["Date","Thu, 14 Sep 2017 09:44:05 -0700"],["Authorization","AWS AKIAICL5IWUZYWWKA7JA:Hpi3LGRB4W3nXoPoX+A78xTzmIE="],["Accept","*/*"],["Host","alexcrichton-test.s3.amazonaws.com"],["Content-Type","application/x-tar"],["Content-Length","35"]],"body":[31,139,8,0,0,0,0,0,0,3,237,192,1,1,0,0,0,130,32,255,175,110,72,80,192,171,1,46,175,181,239,0,4,0,0]},"response":{"status":200,"headers":[["Content-Length","0"],["Server","AmazonS3"],["x-amz-request-id","5D8919DDF187F850"],["Date","Thu, 14 Sep 2017 16:44:06 GMT"],["x-amz-id-2","7N6yjY/oPkOJcDqcf5YSeABzp+hHEiwC67AXfbNqQNQAp0wRwU1c8KtN9Vh7vRshnmD/Hdjs6KY="],["ETag","\"fc9f988c1ba7ccea220952fd61213979\""]],"body":[]}}]

0 commit comments

Comments
 (0)