solana_pay/
query_parameters.rs1const AMOUNT: &str = "amount";
2const SPL_TOKEN: &str = "spl-token";
3const REFERENCE: &str = "reference";
4const LABEL: &str = "label";
5const MESSAGE: &str = "message";
6const MEMO: &str = "memo";
7
8#[derive(PartialEq, Clone, Hash, Eq)]
9pub enum QueryParameter {
10 Amount,
11 SplToken,
12 Reference,
13 Label,
14 Message,
15 Memo,
16 Extension(String),
17}
18
19impl ToString for QueryParameter {
20 fn to_string(&self) -> String {
21 self.as_str().to_string()
22 }
23}
24
25impl QueryParameter {
26 pub fn as_str(&self) -> &str {
27 match self {
28 Self::Amount => AMOUNT,
29 Self::SplToken => SPL_TOKEN,
30 Self::Reference => REFERENCE,
31 Self::Label => LABEL,
32 Self::Message => MESSAGE,
33 Self::Memo => MEMO,
34 Self::Extension(extension) => extension,
35 }
36 }
37 pub fn allows_multiple(&self) -> bool {
38 matches!(
39 self,
40 QueryParameter::Reference | QueryParameter::Extension(_)
41 )
42 }
43}
44
45impl From<&str> for QueryParameter {
46 fn from(token: &str) -> QueryParameter {
47 match token {
48 AMOUNT => QueryParameter::Amount,
49 SPL_TOKEN => QueryParameter::SplToken,
50 REFERENCE => QueryParameter::Reference,
51 LABEL => QueryParameter::Label,
52 MESSAGE => QueryParameter::Message,
53 MEMO => QueryParameter::Memo,
54 _ => QueryParameter::Extension(token.to_string()),
55 }
56 }
57}