Skip to content
This repository was archived by the owner on Dec 21, 2019. It is now read-only.

Commit 6bc772c

Browse files
committed
use actix-web 0.5
1 parent 81e20b0 commit 6bc772c

File tree

12 files changed

+84
-88
lines changed

12 files changed

+84
-88
lines changed

CHANGES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changes
22

3+
## 0.3.0 (2018-04-18)
4+
5+
* Use actix web 0.5
6+
7+
38
## 0.2.1 (2018-03-11)
49

510
* Use actix web 0.4.7

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sockjs"
3-
version = "0.2.1"
3+
version = "0.3.0"
44
authors = ["Nikolay Kim <[email protected]>"]
55
description = "SockJS server for Actix"
66
readme = "README.md"
@@ -43,7 +43,7 @@ log = "0.4"
4343

4444
# actix
4545
actix = "^0.5.1"
46-
actix-web = "^0.4.7"
46+
actix-web = "^0.5"
4747

4848
[profile.release]
4949
lto = true

src/application.rs

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rand::{self, Rng, ThreadRng};
88
use http::{header, Method};
99
use futures::future::Either;
1010
use actix::{Actor, Addr, Syn};
11-
use actix_web::dev::{Pattern, Handler};
12-
use actix_web::{httpcodes, HttpRequest, HttpMessage, Reply};
11+
use actix_web::dev::{Resource, Handler, Reply};
12+
use actix_web::{HttpRequest, HttpResponse, HttpMessage};
1313

1414
use protocol;
1515
use transports;
@@ -29,7 +29,7 @@ pub struct SockJS<A, SM, S=()>
2929
act: PhantomData<A>,
3030
state: PhantomData<S>,
3131
rng: RefCell<ThreadRng>,
32-
patterns: Vec<Pattern>,
32+
patterns: Vec<Resource>,
3333
iframe_html: Rc<String>,
3434
iframe_html_md5: String,
3535
disabled_transports: HashSet<String>,
@@ -64,7 +64,7 @@ impl<A, SM, S> SockJS<A, SM, S>
6464
let html = protocol::IFRAME_HTML.to_owned();
6565
let digest = md5::compute(&html);
6666
let patterns: Vec<_> = PATTERNS.iter()
67-
.map(|s| Pattern::with_prefix("", s, "")).collect();
67+
.map(|s| Resource::with_prefix("", s, "")).collect();
6868

6969
SockJS { patterns,
7070
act: PhantomData,
@@ -119,8 +119,7 @@ impl<A, SM, S> Handler<S> for SockJS<A, SM, S>
119119
fn handle(&mut self, req: HttpRequest<S>) -> Reply {
120120
let idx = if let Some(path) = req.match_info().get("tail") {
121121
if path.is_empty() {
122-
return httpcodes::HttpOk
123-
.build()
122+
return HttpResponse::Ok()
124123
.content_type("text/plain; charset=UTF-8")
125124
.body("Welcome to SockJS!\n").into()
126125
}
@@ -136,17 +135,16 @@ impl<A, SM, S> Handler<S> for SockJS<A, SM, S>
136135
if let Some(idx) = i {
137136
idx
138137
} else {
139-
return httpcodes::HttpNotFound.into()
138+
return HttpResponse::NotFound().finish().into()
140139
}
141140
} else {
142-
return httpcodes::HttpNotFound.into()
141+
return HttpResponse::NotFound().finish().into()
143142
};
144143

145144
match ROUTES[idx] {
146145
RouteType::Info => {
147146
if *req.method() == Method::GET {
148-
httpcodes::HttpOk
149-
.build()
147+
HttpResponse::Ok()
150148
.content_type("application/json;charset=UTF-8")
151149
.sockjs_no_cache()
152150
.sockjs_cors_headers(req.headers())
@@ -155,29 +153,26 @@ impl<A, SM, S> Handler<S> for SockJS<A, SM, S>
155153
!self.disabled_transports.contains("websocket"),
156154
self.cookie_needed)).into()
157155
} else if *req.method() == Method::OPTIONS {
158-
httpcodes::HttpNoContent
159-
.build()
156+
HttpResponse::NoContent()
160157
.content_type("application/json;charset=UTF-8")
161158
.sockjs_cache_headers()
162159
.sockjs_allow_methods()
163160
.sockjs_cors_headers(req.headers())
164161
.sockjs_session_cookie(&req)
165162
.finish().into()
166163
} else {
167-
httpcodes::HttpMethodNotAllowed.into()
164+
HttpResponse::MethodNotAllowed().finish().into()
168165
}
169166
},
170167
RouteType::IFrame => {
171168
if req.headers().contains_key(header::IF_NONE_MATCH) {
172-
httpcodes::HttpNotModified
173-
.build()
169+
HttpResponse::NotModified()
174170
.content_type("")
175171
.sockjs_cache_headers()
176172
.finish()
177173
.into()
178174
} else {
179-
httpcodes::HttpOk
180-
.build()
175+
HttpResponse::Ok()
181176
.content_type("text/html;charset=UTF-8")
182177
.header(header::ETAG, self.iframe_html_md5.as_str())
183178
.sockjs_cache_headers()
@@ -189,15 +184,15 @@ impl<A, SM, S> Handler<S> for SockJS<A, SM, S>
189184
let req2 = req.change_state(Rc::clone(&self.manager));
190185
let tr = req.match_info().get("transport").unwrap().to_owned();
191186
if self.disabled_transports.contains(&tr) {
192-
return httpcodes::HttpNotFound.into()
187+
return HttpResponse::NotFound().finish().into()
193188
}
194189

195190
// check valid session and server params
196191
{
197192
let sid = req.match_info().get("session").unwrap();
198193
let server = req.match_info().get("server").unwrap();
199194
if sid.is_empty() || sid.contains('.') || server.contains('.') {
200-
return httpcodes::HttpNotFound.into()
195+
return HttpResponse::NotFound().finish().into()
201196
}
202197
trace!("sockjs transport: {}, session: {}, srv: {}", tr, sid, server);
203198
}
@@ -225,7 +220,7 @@ impl<A, SM, S> Handler<S> for SockJS<A, SM, S>
225220
Either::B(fut) => fut.into(),
226221
}
227222
} else {
228-
httpcodes::HTTPNotFound.into()
223+
HttpResponse::NotFound().finish().into()
229224
}
230225
},
231226
RouteType::RawWebsocket =>

src/transports/eventsource.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl<S, SM> EventSource<S, SM>
3939
pub fn init(req: HttpRequest<Addr<Syn, SM>>, maxsize: usize) -> Result<HttpResponse>
4040
{
4141
let session = req.match_info().get("session").unwrap().to_owned();
42-
let mut resp = httpcodes::HTTPOk.build()
42+
let mut resp = HttpResponse::Ok()
4343
.header(header::CONTENT_TYPE, "text/event-stream")
4444
.no_chunking()
4545
.force_close()
@@ -63,7 +63,7 @@ impl<S, SM> EventSource<S, SM>
6363
});
6464
}).wait(&mut ctx);
6565

66-
Ok(resp.body(ctx)?)
66+
Ok(resp.body(ctx))
6767
}
6868
}
6969

src/transports/htmlfile.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::marker::PhantomData;
33

44
use actix::*;
55
use actix_web::*;
6+
use actix_web::http::Method;
67
use serde_json;
78
use regex::Regex;
89

@@ -68,17 +69,17 @@ impl<S, SM> HTMLFile<S, SM>
6869
static ref CHECK: Regex = Regex::new(r"^[a-zA-Z0-9_\.]+$").unwrap();
6970
}
7071
if *req.method() != Method::GET {
71-
return Ok(httpcodes::HTTPNotFound.into())
72+
return Ok(HttpResponse::NotFound().into())
7273
}
7374

7475
if let Some(callback) = req.query().get("c").map(|s| s.to_owned()) {
7576
if !CHECK.is_match(&callback) {
76-
return Ok(httpcodes::HTTPInternalServerError.with_body(
77+
return Ok(HttpResponse::InternalServerError().body(
7778
"invalid \"callback\" parameter"))
7879
}
7980

8081
let session = req.match_info().get("session").unwrap().to_owned();
81-
let mut resp = httpcodes::HTTPOk.build()
82+
let mut resp = HttpResponse::Ok()
8283
.force_close()
8384
.no_chunking()
8485
.content_type("text/html; charset=UTF-8")
@@ -106,9 +107,10 @@ impl<S, SM> HTMLFile<S, SM>
106107
});
107108
}).wait(&mut ctx);
108109

109-
Ok(resp.body(ctx)?)
110+
Ok(resp.body(ctx))
110111
} else {
111-
Ok(httpcodes::HTTPInternalServerError.with_body("\"callback\" parameter required"))
112+
Ok(HttpResponse::InternalServerError()
113+
.body("\"callback\" parameter required"))
112114
}
113115
}
114116
}

src/transports/jsonp.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::marker::PhantomData;
44

55
use actix::*;
66
use actix_web::*;
7+
use actix_web::http::Method;
78
use regex::Regex;
89
use serde_json;
910
use bytes::BytesMut;
@@ -114,19 +115,18 @@ impl<S, SM> JSONPolling<S, SM>
114115
}
115116

116117
if *req.method() != Method::GET {
117-
return Ok(httpcodes::HTTPNotFound.into())
118+
return Ok(HttpResponse::NotFound().into())
118119
}
119120

120121
if let Some(callback) = req.query().get("c").map(|s| s.to_owned()) {
121122
if !CHECK.is_match(&callback) {
122123
return Ok(
123-
httpcodes::HTTPInternalServerError
124-
.with_body("invalid \"callback\" parameter"))
124+
HttpResponse::InternalServerError()
125+
.body("invalid \"callback\" parameter"))
125126
}
126127

127128
let session = req.match_info().get("session").unwrap().to_owned();
128-
let mut resp = httpcodes::HTTPOk
129-
.build()
129+
let mut resp = HttpResponse::Ok()
130130
.content_type("application/javascript; charset=UTF-8")
131131
.force_close()
132132
.sockjs_no_cache()
@@ -143,9 +143,10 @@ impl<S, SM> JSONPolling<S, SM>
143143
// init transport
144144
transport.init_transport(session, &mut ctx);
145145

146-
Ok(resp.body(ctx.actor(transport))?)
146+
Ok(resp.body(ctx.actor(transport)))
147147
} else {
148-
Ok(httpcodes::HTTPInternalServerError.with_body("\"callback\" parameter required"))
148+
Ok(HttpResponse::InternalServerError()
149+
.body("\"callback\" parameter required"))
149150
}
150151
}
151152
}
@@ -176,7 +177,7 @@ pub fn JSONPollingSend<S, SM>(req: HttpRequest<Addr<Syn, SM>>)
176177
where S: Session, SM: SessionManager<S>,
177178
{
178179
if *req.method() != Method::POST {
179-
Either::A(httpcodes::HTTPBadRequest.with_reason("Method is not allowed"))
180+
Either::A(HttpResponse::BadRequest().reason("Method is not allowed").finish())
180181
} else {
181182
Either::B(read(req))
182183
}
@@ -191,45 +192,46 @@ pub fn read<S, SM>(req: HttpRequest<Addr<Syn, SM>>)
191192

192193
Box::new(
193194
req.clone().body().limit(MAXSIZE)
194-
.map_err(|e| Error::from(error::ErrorBadRequest(e)))
195+
.map_err(error::ErrorBadRequest)
195196
.and_then(move |buf| {
196197
let sid = Arc::new(sid);
197198

198199
// empty message
199200
if buf.is_empty() {
200201
Either::A(
201-
ok(httpcodes::HTTPInternalServerError.with_body("Payload expected.")))
202+
ok(HttpResponse::InternalServerError()
203+
.body("Payload expected.")))
202204
} else {
203205
// deserialize json
204206
let mut msgs: Vec<String> =
205207
if req.content_type() == "application/x-www-form-urlencoded"
206208
{
207209
if buf.len() <= 2 || &buf[..2] != b"d=" {
208210
return Either::A(
209-
ok(httpcodes::HTTPInternalServerError
210-
.with_body("Payload expected.")));
211+
ok(HttpResponse::InternalServerError()
212+
.body("Payload expected.")));
211213
}
212214

213215
if let Ok(data) = percent_decode(&buf[2..]).decode_utf8() {
214216
match serde_json::from_slice(data.as_ref().as_ref()) {
215217
Ok(msgs) => msgs,
216218
Err(_) => {
217219
return Either::A(
218-
ok(httpcodes::HTTPInternalServerError.with_body(
220+
ok(HttpResponse::InternalServerError().body(
219221
"Broken JSON encoding.")));
220222
}
221223
}
222224
} else {
223225
return Either::A(
224-
ok(httpcodes::HTTPInternalServerError
225-
.with_body("Payload expected.")));
226+
ok(HttpResponse::InternalServerError()
227+
.body("Payload expected.")));
226228
}
227229
} else {
228230
match serde_json::from_slice(&buf) {
229231
Ok(msgs) => msgs,
230232
Err(_) => {
231233
return Either::A(
232-
ok(httpcodes::HTTPInternalServerError.with_body(
234+
ok(HttpResponse::InternalServerError().body(
233235
"Broken JSON encoding.")));
234236
}
235237
}
@@ -238,11 +240,11 @@ pub fn read<S, SM>(req: HttpRequest<Addr<Syn, SM>>)
238240
// do nothing
239241
if msgs.is_empty() {
240242
Either::A(
241-
ok(httpcodes::HTTPOk.build()
243+
ok(HttpResponse::Ok()
242244
.content_type("text/plain; charset=UTF-8")
243245
.sockjs_no_cache()
244246
.sockjs_session_cookie(&req)
245-
.body("ok").unwrap()))
247+
.body("ok")))
246248
} else {
247249
let last = msgs.pop().unwrap();
248250
for msg in msgs {
@@ -259,16 +261,14 @@ pub fn read<S, SM>(req: HttpRequest<Addr<Syn, SM>>)
259261
.and_then(move |res| {
260262
match res {
261263
Ok(_) => {
262-
Ok(httpcodes::HTTPOk
263-
.build()
264+
Ok(HttpResponse::Ok()
264265
.content_type("text/plain; charset=UTF-8")
265266
.sockjs_no_cache()
266267
.sockjs_session_cookie(&req)
267-
.body("ok")
268-
.unwrap())
268+
.body("ok"))
269269
},
270270
Err(_) =>
271-
Err(Error::from(error::ErrorNotFound(()))),
271+
Err(error::ErrorNotFound(())),
272272
}
273273
}))
274274
}

src/transports/rawwebsocket.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ impl<S, SM> RawWebsocket<S, SM> where S: Session, SM: SessionManager<S>,
4141
// init transport
4242
tr.init_transport(sid, &mut ctx);
4343

44-
Ok(resp.body(ctx.actor(tr))?)
44+
Ok(resp.body(ctx.actor(tr)))
4545
}
4646

4747
fn send(&mut self, ctx: &mut ws::WebsocketContext<Self, Addr<Syn, SM>>,

src/transports/websocket.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl<S, SM> Websocket<S, SM> where S: Session, SM: SessionManager<S>,
3939
flags: Flags::empty()};
4040
tr.init_transport(session, &mut ctx);
4141

42-
Ok(resp.body(ctx.actor(tr))?)
42+
Ok(resp.body(ctx.actor(tr)))
4343
}
4444

4545
fn send(&mut self, ctx: &mut ws::WebsocketContext<Self, Addr<Syn, SM>>,

0 commit comments

Comments
 (0)