Skip to content

Commit c41d874

Browse files
committed
change: replaced surf with reqwest
1 parent 85d0aba commit c41d874

13 files changed

+500
-259
lines changed

atcoder-problems-backend/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

atcoder-problems-backend/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ atcoder-client = { path = "./atcoder-client" }
2626
# Web framework
2727
tide = "0.16"
2828
cookie = "0.14"
29-
surf = "2.3"
29+
reqwest = { version = "0.11", features = ["json"] }
3030

3131
async-trait = "0.1"
3232

atcoder-problems-backend/src/server/auth.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,26 @@ impl Authentication for GitHubAuthentication {
4747
client_secret: self.client_secret.to_owned(),
4848
code: code.to_owned(),
4949
};
50-
let response: TokenResponse = surf::post("https://github.com/login/oauth/access_token")
50+
let client = reqwest::Client::new();
51+
let response: TokenResponse = client
52+
.post("https://github.com/login/oauth/access_token")
5153
.header("Accept", "application/json")
52-
.body(surf::Body::from_json(&request)?)
53-
.recv_json()
54+
.json(&request)
55+
.send()
56+
.await?
57+
.json()
5458
.await?;
5559
Ok(response.access_token)
5660
}
5761
async fn get_user_id(&self, access_token: &str) -> Result<GitHubUserResponse> {
5862
let token_header = format!("token {}", access_token);
59-
let response: GitHubUserResponse = surf::get("https://api.github.com/user")
63+
let client = reqwest::Client::new();
64+
let response: GitHubUserResponse = client
65+
.get("https://api.github.com/user")
6066
.header("Authorization", token_header)
61-
.recv_json()
67+
.send()
68+
.await?
69+
.json()
6270
.await?;
6371
Ok(response)
6472
}

atcoder-problems-backend/src/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub fn init_log_config() -> Result<()> {
2929
.level(LevelFilter::Info)
3030
.level_for("sqlx", LevelFilter::Warn)
3131
.level_for("tide", LevelFilter::Warn)
32-
.level_for("surf", LevelFilter::Warn)
32+
.level_for("reqwest", LevelFilter::Warn)
3333
.chain(std::io::stdout())
3434
.apply()?;
3535
Ok(())

atcoder-problems-backend/tests/test_server_e2e_ac_ranking.rs

Lines changed: 52 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use async_std::future::ready;
2-
use async_std::prelude::*;
3-
use async_std::task;
1+
// use async_std::future::ready;
2+
// use async_std::prelude::*;
3+
// use async_std::task;
4+
use tokio::task;
45
use async_trait::async_trait;
56
use atcoder_problems_backend::server::{run_server, Authentication, GitHubUserResponse};
67
use rand::Rng;
@@ -42,7 +43,7 @@ async fn setup() -> u16 {
4243
rng.gen::<u16>() % 30000 + 30000
4344
}
4445

45-
#[async_std::test]
46+
#[tokio::test]
4647
async fn test_ac_ranking() {
4748
let port = setup().await;
4849
let server = task::spawn(async move {
@@ -51,10 +52,12 @@ async fn test_ac_ranking() {
5152
.unwrap();
5253
run_server(pg_pool, MockAuth, port).await.unwrap();
5354
});
54-
task::sleep(std::time::Duration::from_millis(1000)).await;
55+
tokio::time::sleep(std::time::Duration::from_millis(1000)).await;
5556

56-
let response = surf::get(url("/atcoder-api/v3/ac_ranking?from=0&to=10", port))
57-
.recv_json::<Value>()
57+
let response = reqwest::get(url("/atcoder-api/v3/ac_ranking?from=0&to=10", port))
58+
.await
59+
.unwrap()
60+
.json::<Value>()
5861
.await
5962
.unwrap();
6063
assert_eq!(
@@ -66,8 +69,10 @@ async fn test_ac_ranking() {
6669
])
6770
);
6871

69-
let response = surf::get(url("/atcoder-api/v3/ac_ranking?from=1&to=3", port))
70-
.recv_json::<Value>()
72+
let response = reqwest::get(url("/atcoder-api/v3/ac_ranking?from=1&to=3", port))
73+
.await
74+
.unwrap()
75+
.json::<Value>()
7176
.await
7277
.unwrap();
7378
assert_eq!(
@@ -78,65 +83,85 @@ async fn test_ac_ranking() {
7883
])
7984
);
8085

81-
let response = surf::get(url("/atcoder-api/v3/ac_ranking?from=10&to=0", port))
82-
.recv_json::<Value>()
86+
let response = reqwest::get(url("/atcoder-api/v3/ac_ranking?from=10&to=0", port))
87+
.await
88+
.unwrap()
89+
.json::<Value>()
8390
.await
8491
.unwrap();
8592
assert_eq!(response.as_array().unwrap().len(), 0);
8693

87-
let response = surf::get(url("/atcoder-api/v3/ac_ranking?from=0&to=2000", port))
94+
let response = reqwest::get(url("/atcoder-api/v3/ac_ranking?from=0&to=2000", port))
8895
.await
8996
.unwrap();
9097
assert_eq!(response.status(), 400);
9198

92-
let response = surf::get(url("/atcoder-api/v3/ac_ranking?from=-1&to=10", port))
99+
let response = reqwest::get(url("/atcoder-api/v3/ac_ranking?from=-1&to=10", port))
93100
.await
94101
.unwrap();
95102
assert_eq!(response.status(), 400);
96103

97-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=u1", port))
98-
.recv_json::<Value>()
104+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=u1", port))
105+
.await
106+
.unwrap()
107+
.json::<Value>()
99108
.await
100109
.unwrap();
101110
assert_eq!(response, json!({"count": 1, "rank": 1}));
102111

103-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=u2", port))
104-
.recv_json::<Value>()
112+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=u2", port))
113+
.await
114+
.unwrap()
115+
.json::<Value>()
105116
.await
106117
.unwrap();
107118
assert_eq!(response, json!({"count": 2, "rank": 0}));
108119

109-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=u3", port))
110-
.recv_json::<Value>()
120+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=u3", port))
121+
.await
122+
.unwrap()
123+
.json::<Value>()
111124
.await
112125
.unwrap();
113126
assert_eq!(response, json!({"count": 1, "rank": 1}));
114127

115-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=U1", port))
116-
.recv_json::<Value>()
128+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=U1", port))
129+
.await
130+
.unwrap()
131+
.json::<Value>()
117132
.await
118133
.unwrap();
119134
assert_eq!(response, json!({"count": 1, "rank": 1}));
120135

121-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=U2", port))
122-
.recv_json::<Value>()
136+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=U2", port))
137+
.await
138+
.unwrap()
139+
.json::<Value>()
123140
.await
124141
.unwrap();
125142
assert_eq!(response, json!({"count": 2, "rank": 0}));
126143

127-
let response = surf::get(url("/atcoder-api/v3/user/ac_rank?user=U3", port))
128-
.recv_json::<Value>()
144+
let response = reqwest::get(url("/atcoder-api/v3/user/ac_rank?user=U3", port))
145+
.await
146+
.unwrap()
147+
.json::<Value>()
129148
.await
130149
.unwrap();
131150
assert_eq!(response, json!({"count": 1, "rank": 1}));
132151

133-
let response = surf::get(url(
152+
let response = reqwest::get(url(
134153
"/atcoder-api/v3/user/ac_rank?user=does_not_exist",
135154
port,
136155
))
137156
.await
138157
.unwrap();
139158
assert_eq!(response.status(), 404);
140159

141-
server.race(ready(())).await;
160+
// server.race(ready(())).await;
161+
// server.await.unwrap();
162+
let ready = tokio::time::sleep(std::time::Duration::from_millis(1000));
163+
tokio::select!{
164+
_s = server => (),
165+
_r = ready => (),
166+
}
142167
}

atcoder-problems-backend/tests/test_server_e2e_language_count.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,19 @@ async fn test_language_count() {
7171
task::sleep(std::time::Duration::from_millis(1000)).await;
7272

7373
insert_data_set1(&conn).await;
74-
let response = surf::get(url("/atcoder-api/v3/language_list", port))
75-
.recv_json::<Value>()
74+
let response = reqwest::get(url("/atcoder-api/v3/language_list", port))
75+
.await
76+
.unwrap()
77+
.json::<Value>()
7678
.await
7779
.unwrap();
7880
assert_eq!(response, json!(["lang1", "lang2", "lang3"]));
7981

8082
insert_data_set2(&conn).await;
81-
let response = surf::get(url("/atcoder-api/v3/language_list", port))
82-
.recv_json::<Value>()
83+
let response = reqwest::get(url("/atcoder-api/v3/language_list", port))
84+
.await
85+
.unwrap()
86+
.json::<Value>()
8387
.await
8488
.unwrap();
8589
assert_eq!(response, json!(["lang1", "lang2", "lang3", "lang4"]));

atcoder-problems-backend/tests/test_server_e2e_language_ranking.rs

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,13 @@ async fn test_language_ranking() {
6161
});
6262
task::sleep(std::time::Duration::from_millis(1000)).await;
6363

64-
let response = surf::get(url(
64+
let response = reqwest::get(url(
6565
"/atcoder-api/v3/language_ranking?from=1&to=3&language=lang2",
6666
port,
6767
))
68-
.recv_json::<Value>()
68+
.await
69+
.unwrap()
70+
.json::<Value>()
6971
.await
7072
.unwrap();
7173
assert_eq!(
@@ -76,11 +78,13 @@ async fn test_language_ranking() {
7678
])
7779
);
7880

79-
let response = surf::get(url(
81+
let response = reqwest::get(url(
8082
"/atcoder-api/v3/language_ranking?from=0&to=1&language=lang2",
8183
port,
8284
))
83-
.recv_json::<Value>()
85+
.await
86+
.unwrap()
87+
.json::<Value>()
8488
.await
8589
.unwrap();
8690
assert_eq!(
@@ -90,51 +94,59 @@ async fn test_language_ranking() {
9094
])
9195
);
9296

93-
let response = surf::get(url(
97+
let response = reqwest::get(url(
9498
"/atcoder-api/v3/language_ranking?from=10&to=20&language=lang2",
9599
port,
96100
))
97-
.recv_json::<Value>()
101+
.await
102+
.unwrap()
103+
.json::<Value>()
98104
.await
99105
.unwrap();
100106
assert!(response.as_array().unwrap().is_empty());
101107

102-
let response = surf::get(url(
108+
let response = reqwest::get(url(
103109
"/atcoder-api/v3/language_ranking?from=0&to=1&language=does_not_exist",
104110
port,
105111
))
106-
.recv_json::<Value>()
112+
.await
113+
.unwrap()
114+
.json::<Value>()
107115
.await
108116
.unwrap();
109117
assert!(response.as_array().unwrap().is_empty());
110118

111-
let response = surf::get(url(
119+
let response = reqwest::get(url(
112120
"/atcoder-api/v3/language_ranking?from=0&to=2000&language=lang2",
113121
port,
114122
))
115123
.await
116124
.unwrap();
117125
assert_eq!(response.status(), 400);
118126

119-
let response = surf::get(url(
127+
let response = reqwest::get(url(
120128
"/atcoder-api/v3/language_ranking?from=1&to=0&language=lang2",
121129
port,
122130
))
123-
.recv_json::<Value>()
131+
.await
132+
.unwrap()
133+
.json::<Value>()
124134
.await
125135
.unwrap();
126136
assert!(response.as_array().unwrap().is_empty());
127137

128-
let response = surf::get(url(
138+
let response = reqwest::get(url(
129139
"/atcoder-api/v3/language_ranking?from=-1&to=0&language=lang2",
130140
port,
131141
))
132142
.await
133143
.unwrap();
134144
assert_eq!(response.status(), 400);
135145

136-
let response = surf::get(url("/atcoder-api/v3/user/language_rank?user=user1", port))
137-
.recv_json::<Value>()
146+
let response = reqwest::get(url("/atcoder-api/v3/user/language_rank?user=user1", port))
147+
.await
148+
.unwrap()
149+
.json::<Value>()
138150
.await
139151
.unwrap();
140152
assert_eq!(
@@ -158,8 +170,10 @@ async fn test_language_ranking() {
158170
])
159171
);
160172

161-
let response = surf::get(url("/atcoder-api/v3/user/language_rank?user=user2", port))
162-
.recv_json::<Value>()
173+
let response = reqwest::get(url("/atcoder-api/v3/user/language_rank?user=user2", port))
174+
.await
175+
.unwrap()
176+
.json::<Value>()
163177
.await
164178
.unwrap();
165179
assert_eq!(
@@ -178,8 +192,10 @@ async fn test_language_ranking() {
178192
])
179193
);
180194

181-
let response = surf::get(url("/atcoder-api/v3/user/language_rank?user=user3", port))
182-
.recv_json::<Value>()
195+
let response = reqwest::get(url("/atcoder-api/v3/user/language_rank?user=user3", port))
196+
.await
197+
.unwrap()
198+
.json::<Value>()
183199
.await
184200
.unwrap();
185201
assert_eq!(
@@ -198,16 +214,18 @@ async fn test_language_ranking() {
198214
])
199215
);
200216

201-
let response = surf::get(url(
217+
let response = reqwest::get(url(
202218
"/atcoder-api/v3/user/language_rank?user=does_not_exist",
203219
port,
204220
))
205-
.recv_json::<Value>()
221+
.await
222+
.unwrap()
223+
.json::<Value>()
206224
.await
207225
.unwrap();
208226
assert_eq!(response, json!([]));
209227

210-
let response = surf::get(url("/atcoder-api/v3/user/language_rank?bad=request", port))
228+
let response = reqwest::get(url("/atcoder-api/v3/user/language_rank?bad=request", port))
211229
.await
212230
.unwrap();
213231
assert_eq!(response.status(), 400);

0 commit comments

Comments
 (0)