/ test / contracts / aens_update.aes
aens_update.aes
 1  // AENS update tests, including interaction with AENSv1
 2  
 3  include "Option.aes"
 4  include "AENSCompat.aes"
 5  contract interface OldAENSContract =
 6    entrypoint set : (string, string, AENS.pointee) => unit
 7    entrypoint lookup : (string, string) => AENS.pointee
 8    entrypoint resolve_account : (string, string) => address
 9  
10  main contract AENSUpdate =
11    entrypoint remote_lookup(o : OldAENSContract, name : string, key : string) : AENSv2.pointee =
12      let pv1 = o.lookup(name, key)
13      AENSCompat.pointee_to_V2(pv1)
14  
15    entrypoint remote_resolve(o : OldAENSContract, name : string, key : string) : address =
16      o.resolve_account(name, key)
17  
18    entrypoint remote_set(o : OldAENSContract, name : string, key : string, ptr : AENSv2.pointee) =
19      let Some(pv1) = AENSCompat.pointee_from_V2(ptr)
20      o.set(name, key, pv1)
21  
22    stateful entrypoint add_data_ptr(name : string, key : string, data : bytes()) =
23      set(name, key, AENSv2.DataPt(data))
24  
25    stateful entrypoint set(name : string, key : string, ptr : AENSv2.pointee) =
26      switch(AENSv2.lookup(name))
27        Some(AENSv2.Name(_, _, pt_map)) =>
28          AENSv2.update(Contract.address, name, None, None, Some(pt_map{ [key] = ptr }))
29  
30    stateful entrypoint remove_ptr(name : string, key : string) =
31      switch(AENSv2.lookup(name))
32        Some(AENSv2.Name(_, _, pt_map)) =>
33          AENSv2.update(Contract.address, name, None, None, Some(Map.delete(key, pt_map)))
34  
35  //   stateful entrypoint old_interaction(c : OldAENSContract, owner : address, name : string) =
36  //     let p : AENS.pointee = c.lookup(name, "key1")
37  //     AENSv2.update(owner, name, None, None, Some({ ["key1"] = AENSCompat.pointee_to_V2(p) }))
38  //     switch(AENSv2.lookup(name))
39  //       Some(AENSv2.Name(_, _, pt_map)) =>
40  //         c.set(name, "key2", Option.force(AENSCompat.pointee_from_V2(pt_map["key1"])))
41  
42    stateful entrypoint trf(name : string, to : address) =
43      AENSv2.transfer(Contract.address, to, name)