Check to make sure the message transaction meets criteria
(m string, s string, r string)
| 1518 | |
| 1519 | // Check to make sure the message transaction meets criteria |
| 1520 | func 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()) { |
no test coverage detected