mirror of
https://github.com/pion/stun.git
synced 2025-12-24 11:51:03 +08:00
Added error wrapper (#252)
* Added error wrapper * Keep the same message format
This commit is contained in:
16
errorcode.go
16
errorcode.go
@@ -163,3 +163,19 @@ var errorReasons = map[ErrorCode][]byte{
|
||||
CodeAddrFamilyNotSupported: []byte("Address Family not Supported"),
|
||||
CodePeerAddrFamilyMismatch: []byte("Peer Address Family Mismatch"),
|
||||
}
|
||||
|
||||
// TurnError represents an error from a TURN response.
|
||||
type TurnError struct {
|
||||
StunMessageType MessageType
|
||||
ErrorCodeAttr ErrorCodeAttribute
|
||||
}
|
||||
|
||||
// Error returns the formatted TURN error message.
|
||||
func (e TurnError) Error() string {
|
||||
return fmt.Sprintf("%s (error %s)", e.StunMessageType, e.ErrorCodeAttr.String())
|
||||
}
|
||||
|
||||
// String returns the error message as a string.
|
||||
func (e TurnError) String() string {
|
||||
return e.Error()
|
||||
}
|
||||
|
||||
@@ -89,3 +89,16 @@ func TestErrorCode(t *testing.T) {
|
||||
attr.Reason = make([]byte, 2048)
|
||||
assert.Error(t, attr.AddTo(m), "should error")
|
||||
}
|
||||
|
||||
func TestTurnError(t *testing.T) {
|
||||
te := TurnError{
|
||||
StunMessageType: NewType(MethodCreatePermission, ClassErrorResponse),
|
||||
ErrorCodeAttr: ErrorCodeAttribute{
|
||||
Code: CodeForbidden,
|
||||
Reason: []byte("Forbidden"),
|
||||
},
|
||||
}
|
||||
expected := "CreatePermission error response (error 403: Forbidden)"
|
||||
assert.Equal(t, expected, te.Error())
|
||||
assert.Equal(t, expected, te.String())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user