@@ -24,7 +24,7 @@ use crate::Result;
24
24
use itp_stf_primitives:: types:: ShardIdentifier ;
25
25
use itp_types:: AccountId ;
26
26
use lc_credentials:: Credential ;
27
- use lc_data_providers:: discord_litentry:: DiscordLitentryClient ;
27
+ use lc_data_providers:: { discord_litentry:: DiscordLitentryClient , vec_to_string } ;
28
28
use litentry_primitives:: {
29
29
Assertion , Identity , ParameterString , ParentchainBlockNumber , Web2Network ,
30
30
} ;
@@ -35,18 +35,28 @@ use std::vec::Vec;
35
35
pub fn build (
36
36
identities : Vec < Identity > ,
37
37
guild_id : ParameterString ,
38
- handler : ParameterString ,
38
+ channel_id : ParameterString ,
39
+ role_id : ParameterString ,
39
40
shard : & ShardIdentifier ,
40
41
who : & AccountId ,
41
42
bn : ParentchainBlockNumber ,
42
43
) -> Result < Credential > {
43
44
let mut has_commented: bool = false ;
44
45
46
+ let guild_id_s = vec_to_string ( guild_id. to_vec ( ) ) . map_err ( |_| VCMPError :: ParseError ) ?;
47
+ let channel_id_s = vec_to_string ( channel_id. to_vec ( ) ) . map_err ( |_| VCMPError :: ParseError ) ?;
48
+ let role_id_s = vec_to_string ( role_id. to_vec ( ) ) . map_err ( |_| VCMPError :: ParseError ) ?;
49
+
45
50
let mut client = DiscordLitentryClient :: new ( ) ;
46
51
for identity in identities {
47
- if let Identity :: Web2 { network, address : _addr } = identity {
52
+ if let Identity :: Web2 { network, address } = identity {
48
53
if matches ! ( network, Web2Network :: Discord ) {
49
- if let Ok ( response) = client. check_id_hubber ( guild_id. to_vec ( ) , handler. to_vec ( ) ) {
54
+ if let Ok ( response) = client. check_id_hubber (
55
+ guild_id. to_vec ( ) ,
56
+ channel_id. to_vec ( ) ,
57
+ role_id. to_vec ( ) ,
58
+ address. to_vec ( ) ,
59
+ ) {
50
60
if response. data {
51
61
has_commented = true ;
52
62
break
@@ -57,7 +67,7 @@ pub fn build(
57
67
}
58
68
59
69
match Credential :: generate_unsigned_credential (
60
- & Assertion :: A3 ( guild_id, handler ) ,
70
+ & Assertion :: A3 ( guild_id, channel_id , role_id ) ,
61
71
who,
62
72
& shard. clone ( ) ,
63
73
bn,
@@ -68,6 +78,7 @@ pub fn build(
68
78
} else {
69
79
credential_unsigned. credential_subject . values . push ( false ) ;
70
80
}
81
+ credential_unsigned. add_assertion_a3 ( guild_id_s, channel_id_s, role_id_s) ;
71
82
Ok ( credential_unsigned)
72
83
} ,
73
84
Err ( e) => {
@@ -94,19 +105,27 @@ mod tests {
94
105
. write ( )
95
106
. unwrap ( )
96
107
. set_discord_litentry_url ( "http://localhost:9527" . to_string ( ) ) ;
97
- let guildid: u64 = 919848390156767232 ;
98
- let guild_id_vec: Vec < u8 > = format ! ( "{}" , guildid) . as_bytes ( ) . to_vec ( ) ;
99
- let handler_vec: Vec < u8 > = "ericzhang.eth#0114" . to_string ( ) . as_bytes ( ) . to_vec ( ) ;
108
+ let guild_id_u: u64 = 919848390156767232 ;
109
+ let channel_id_u: u64 = 919848392035794945 ;
110
+ let role_id_u: u64 = 1034083718425493544 ;
111
+
112
+ let guild_id_vec: Vec < u8 > = format ! ( "{}" , guild_id_u) . as_bytes ( ) . to_vec ( ) ;
113
+ let channel_id_vec: Vec < u8 > = format ! ( "{}" , channel_id_u) . as_bytes ( ) . to_vec ( ) ;
114
+ let role_id_vec: Vec < u8 > = format ! ( "{}" , role_id_u) . as_bytes ( ) . to_vec ( ) ;
115
+
116
+ let handler_vec: Vec < u8 > = "againstwar%234779" . to_string ( ) . as_bytes ( ) . to_vec ( ) ;
100
117
let identities = vec ! [ Identity :: Web2 {
101
118
network: Web2Network :: Discord ,
102
119
address: IdentityString :: truncate_from( handler_vec. clone( ) ) ,
103
120
} ] ;
121
+
104
122
let guild_id = BoundedVec :: try_from ( guild_id_vec) . unwrap ( ) ;
105
- let handler = BoundedVec :: try_from ( handler_vec) . unwrap ( ) ;
123
+ let channel_id = BoundedVec :: try_from ( channel_id_vec) . unwrap ( ) ;
124
+ let role_id = BoundedVec :: try_from ( role_id_vec) . unwrap ( ) ;
106
125
let who = AccountId :: from ( [ 0 ; 32 ] ) ;
107
126
let shard = ShardIdentifier :: default ( ) ;
108
127
109
- let _ = build ( identities, guild_id, handler , & shard, & who, 1 ) ;
128
+ let _ = build ( identities, guild_id, channel_id , role_id , & shard, & who, 1 ) ;
110
129
log:: info!( "assertion3 test" ) ;
111
130
}
112
131
}
0 commit comments