1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
//! Provides actix message encapsulations.
//!
//! The http types, especially `HttpRequest` can not be shared across threads. Therefore,
//! the relevant information is extracted into special message types first using the `OAuth` trait
//! found in the module above.
use Message;
use ResourceProtection;
use ;
use Grant;
use WebRequest;
pub use ;
pub use ;
pub use ;
/// A request for an authorization code from an endpoint actor.
///
/// ## Example
///
/// Here is a way to request an authorization code response from some actix recipient.
///
/// ```no_run
/// # extern crate actix;
/// # extern crate actix_web;
/// # extern crate futures;
/// # extern crate oxide_auth;
/// use oxide_auth::frontends::actix::{OAuth, OAuthError, OAuthResponse};
/// use oxide_auth::frontends::actix::message::AuthorizationCode;
/// # use oxide_auth::frontends::actix::request::OAuthRequest;
/// # use actix::Recipient;
/// # use actix_web::HttpRequest;
/// # use futures::Future;
/// # fn main() {
///
/// fn handle(request: HttpRequest, recipient: Recipient<AuthorizationCode>)
/// -> impl Future<Item=OAuthResponse, Error=OAuthError>
/// {
/// request.oauth2()
/// .and_then(move |request| recipient
/// .send(request.authorization_code())
/// // Merge `MailboxError` and response ´OAuthError`
/// .map_err(|_| OAuthError::DenySilently)
/// .and_then(|x| x))
/// }
/// # }
/// ```
;
/// A request for a bearer token.
///
/// ## Example
///
/// Here is a way to request an access token response from some actix recipient.
///
/// ```no_run
/// # extern crate actix;
/// # extern crate actix_web;
/// # extern crate futures;
/// # extern crate oxide_auth;
/// use oxide_auth::frontends::actix::{OAuth, OAuthError, OAuthResponse};
/// use oxide_auth::frontends::actix::message::AccessToken;
/// # use oxide_auth::frontends::actix::request::OAuthRequest;
/// # use actix::Recipient;
/// # use actix_web::HttpRequest;
/// # use futures::Future;
/// # fn main() {
///
/// fn handle(request: HttpRequest, recipient: Recipient<AccessToken>)
/// -> impl Future<Item=OAuthResponse, Error=OAuthError>
/// {
/// request.oauth2()
/// .and_then(move |request| recipient
/// .send(request.access_token())
/// // Merge `MailboxError` and response ´OAuthError`
/// .map_err(|_| OAuthError::DenySilently)
/// .and_then(|x| x))
/// }
/// # }
/// ```
;
/// A request for a resource, utilizing a bearer token.
///
/// ## Example
///
/// Here is a way to test an authorizing request against an actix recipient.
///
/// ```no_run
/// # extern crate actix;
/// # extern crate actix_web;
/// # extern crate futures;
/// # extern crate oxide_auth;
/// use oxide_auth::frontends::actix::{Grant, OAuth, OAuthError, OAuthResponse, ResourceProtection};
/// use oxide_auth::frontends::actix::message::Resource;
/// # use oxide_auth::frontends::actix::request::OAuthRequest;
/// # use actix::Recipient;
/// # use actix_web::HttpRequest;
/// # use futures::Future;
/// # fn main() {
///
/// fn handle(request: HttpRequest, recipient: Recipient<Resource>)
/// -> impl Future<Item=Grant, Error=ResourceProtection<OAuthResponse>>
/// {
/// request.oauth2()
/// .map_err(ResourceProtection::Error)
/// .and_then(move |request| recipient
/// .send(request.resource())
/// // Merge `MailboxError` and response ´OAuthError`
/// .map_err(|_| ResourceProtection::Error(OAuthError::DenySilently))
/// .and_then(|x| x))
/// }
/// # }
/// ```
;