MCPcopy Create free account
hub / github.com/DEROFDN/Engram / checkMessagePack

Function checkMessagePack

functions.go:1520–1624  ·  view source on GitHub ↗

Check to make sure the message transaction meets criteria

(m string, s string, r string)

Source from the content-addressed store, hash-verified

1518
1519// Check to make sure the message transaction meets criteria
1520func checkMessagePack(m string, s string, r string) (err error) {
1521 if m == "" {
1522 return
1523 }
1524
1525 mapAddress := ""
1526 a, err := globals.ParseValidateAddress(r)
1527 if err != nil {
1528 //mapAddress, err = engram.Disk.NameToAddress(r)
1529 mapAddress, err = checkUsername(r, -1)
1530 if err != nil {
1531 return
1532 }
1533 a, err = globals.ParseValidateAddress(mapAddress)
1534 if err != nil {
1535 return
1536 }
1537 }
1538
1539 if s == "" {
1540 s = engram.Disk.GetAddress().String()
1541 }
1542
1543 var amount uint64
1544
1545 if a.Arguments.Has(rpc.RPC_VALUE_TRANSFER, rpc.DataUint64) { // but only it is present
1546 //logger.Info("Transaction", "Value", globals.FormatMoney(a.Arguments.Value(rpc.RPC_VALUE_TRANSFER, rpc.DataUint64).(uint64)))
1547 amount = a.Arguments.Value(rpc.RPC_VALUE_TRANSFER, rpc.DataUint64).(uint64)
1548 } else {
1549 amount, err = globals.ParseAmount("0.00001")
1550 if err != nil {
1551 //logger.Error(err, "Err parsing amount\n")
1552 return
1553 }
1554 }
1555
1556 var arguments = rpc.Arguments{
1557 {Name: rpc.RPC_DESTINATION_PORT, DataType: rpc.DataUint64, Value: uint64(1337)},
1558 {Name: rpc.RPC_VALUE_TRANSFER, DataType: rpc.DataUint64, Value: amount},
1559 {Name: rpc.RPC_COMMENT, DataType: rpc.DataString, Value: m},
1560 {Name: rpc.RPC_NEEDS_REPLYBACK_ADDRESS, DataType: rpc.DataString, Value: s},
1561 }
1562
1563 if a.IsIntegratedAddress() { // read everything from the address
1564 if a.Arguments.Validate_Arguments() != nil {
1565 //fmt.Printf(err, "Integrated Address arguments could not be validated.\n")
1566 return
1567 }
1568
1569 if !a.Arguments.Has(rpc.RPC_DESTINATION_PORT, rpc.DataUint64) { // but only it is present
1570 //fmt.Printf(fmt.Errorf("Integrated Address does not contain destination port.\n"), "")
1571 return
1572 }
1573
1574 arguments = append(arguments, rpc.Argument{Name: rpc.RPC_DESTINATION_PORT, DataType: rpc.DataUint64, Value: a.Arguments.Value(rpc.RPC_DESTINATION_PORT, rpc.DataUint64).(uint64)})
1575
1576 if a.Arguments.Has(rpc.RPC_EXPIRY, rpc.DataTime) { // but only it is present
1577 if a.Arguments.Value(rpc.RPC_EXPIRY, rpc.DataTime).(time.Time).Before(time.Now().UTC()) {

Callers 1

layoutPMFunction · 0.85

Calls 1

checkUsernameFunction · 0.85

Tested by

no test coverage detected