MCPcopy
hub / github.com/keploy/keploy / retypeMySQLRequest

Function retypeMySQLRequest

pkg/platform/yaml/mockdb/util.go:1564–1619  ·  view source on GitHub ↗

retypeMySQLRequest / retypeMySQLResponse mirror decodeMySQLMessage: they select the concrete packet struct based on PacketInfo.Type and re-unmarshal the already-decoded generic map into it.

(header *mysql.PacketInfo, raw interface{})

Source from the content-addressed store, hash-verified

1562// select the concrete packet struct based on PacketInfo.Type and re-unmarshal
1563// the already-decoded generic map into it.
1564func retypeMySQLRequest(header *mysql.PacketInfo, raw interface{}) (interface{}, error) {
1565 if raw == nil || header == nil {
1566 return raw, nil
1567 }
1568 buf, err := json.Marshal(raw)
1569 if err != nil {
1570 return nil, err
1571 }
1572 var target interface{}
1573 switch header.Type {
1574 case mysql.SSLRequest:
1575 target = &mysql.SSLRequestPacket{}
1576 case mysql.HandshakeResponse41:
1577 target = &mysql.HandshakeResponse41Packet{}
1578 case mysql.CachingSha2PasswordToString(mysql.RequestPublicKey),
1579 mysql.EncryptedPassword,
1580 mysql.PlainPassword:
1581 var s string
1582 if err := json.Unmarshal(buf, &s); err != nil {
1583 return nil, err
1584 }
1585 return s, nil
1586 case mysql.CommandStatusToString(mysql.COM_QUIT):
1587 target = &mysql.QuitPacket{}
1588 case mysql.CommandStatusToString(mysql.COM_INIT_DB):
1589 target = &mysql.InitDBPacket{}
1590 case mysql.CommandStatusToString(mysql.COM_STATISTICS):
1591 target = &mysql.StatisticsPacket{}
1592 case mysql.CommandStatusToString(mysql.COM_DEBUG):
1593 target = &mysql.DebugPacket{}
1594 case mysql.CommandStatusToString(mysql.COM_PING):
1595 target = &mysql.PingPacket{}
1596 case mysql.CommandStatusToString(mysql.COM_CHANGE_USER):
1597 target = &mysql.ChangeUserPacket{}
1598 case mysql.CommandStatusToString(mysql.COM_RESET_CONNECTION):
1599 target = &mysql.ResetConnectionPacket{}
1600 case mysql.CommandStatusToString(mysql.COM_QUERY):
1601 target = &mysql.QueryPacket{}
1602 case mysql.CommandStatusToString(mysql.COM_STMT_PREPARE):
1603 target = &mysql.StmtPreparePacket{}
1604 case mysql.CommandStatusToString(mysql.COM_STMT_EXECUTE):
1605 target = &mysql.StmtExecutePacket{}
1606 case mysql.CommandStatusToString(mysql.COM_STMT_CLOSE):
1607 target = &mysql.StmtClosePacket{}
1608 case mysql.CommandStatusToString(mysql.COM_STMT_RESET):
1609 target = &mysql.StmtResetPacket{}
1610 case mysql.CommandStatusToString(mysql.COM_STMT_SEND_LONG_DATA):
1611 target = &mysql.StmtSendLongDataPacket{}
1612 default:
1613 return raw, nil
1614 }
1615 if err := json.Unmarshal(buf, target); err != nil {
1616 return nil, err
1617 }
1618 return target, nil
1619}
1620
1621func retypeMySQLResponse(header *mysql.PacketInfo, raw interface{}) (interface{}, error) {

Callers 1

DecodeMocksJSONFunction · 0.85

Calls 4

CommandStatusToStringFunction · 0.92
MarshalMethod · 0.80
UnmarshalMethod · 0.80

Tested by

no test coverage detected