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
use std::cmp::{Ordering, PartialEq, PartialOrd};
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum OAuthParameter {
Callback,
ConsumerKey,
Nonce,
SignatureMethod,
Timestamp,
Token,
Verifier,
Version,
None,
}
impl OAuthParameter {
pub fn next(self) -> OAuthParameter {
match self {
OAuthParameter::Callback => OAuthParameter::ConsumerKey,
OAuthParameter::ConsumerKey => OAuthParameter::Nonce,
OAuthParameter::Nonce => OAuthParameter::SignatureMethod,
OAuthParameter::SignatureMethod => OAuthParameter::Timestamp,
OAuthParameter::Timestamp => OAuthParameter::Token,
OAuthParameter::Token => OAuthParameter::Verifier,
OAuthParameter::Verifier => OAuthParameter::Version,
OAuthParameter::Version => OAuthParameter::None,
OAuthParameter::None => {
debug_assert!(false, "called `next` on an `OAuthParameter::None`");
OAuthParameter::Callback
}
}
}
fn as_str(self) -> Option<&'static str> {
match self {
OAuthParameter::Callback => Some("oauth_callback"),
OAuthParameter::ConsumerKey => Some("oauth_consumer_key"),
OAuthParameter::Nonce => Some("oauth_nonce"),
OAuthParameter::SignatureMethod => Some("oauth_signature_method"),
OAuthParameter::Timestamp => Some("oauth_timestamp"),
OAuthParameter::Token => Some("oauth_token"),
OAuthParameter::Verifier => Some("oauth_verifier"),
OAuthParameter::Version => Some("oauth_version"),
OAuthParameter::None => None,
}
}
}
impl Default for OAuthParameter {
fn default() -> Self {
OAuthParameter::Callback
}
}
impl PartialEq<str> for OAuthParameter {
fn eq(&self, s: &str) -> bool {
match self.as_str() {
Some(t) => t == s,
None => false,
}
}
}
impl PartialOrd<str> for OAuthParameter {
fn partial_cmp(&self, s: &str) -> Option<Ordering> {
match self.as_str() {
Some(t) => t.partial_cmp(s),
None => Some(Ordering::Greater),
}
}
}