Skip to content

Commit 7dc00a0

Browse files
author
Mat Ryer
committed
Made it panic if no codecs are installed
1 parent 7ae18a3 commit 7dc00a0

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Diff for: services/web_codec_service.go

+19
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ func (s *WebCodecService) AddCodec(codec codecs.Codec) {
3939
s.codecs = append(s.codecs, codec)
4040
}
4141

42+
func (s *WebCodecService) assertCodecs() {
43+
if len(s.codecs) == 0 {
44+
panic("codecs: No codecs are installed - use AddCodec to add some or use NewWebCodecService for default codecs.")
45+
}
46+
}
47+
4248
// GetCodecForResponding gets the codec to use to respond based on the
4349
// given accept string, the extension provided and whether it has a callback
4450
// or not.
@@ -47,6 +53,9 @@ func (s *WebCodecService) AddCodec(codec codecs.Codec) {
4753
// This may be changed if additional callback capable codecs are added.
4854
func (s *WebCodecService) GetCodecForResponding(accept, extension string, hasCallback bool) (codecs.Codec, error) {
4955

56+
// make sure we have at least one codec
57+
s.assertCodecs()
58+
5059
// is there a callback? If so, look for JSONP
5160
if hasCallback {
5261
for _, codec := range s.codecs {
@@ -74,6 +83,9 @@ func (s *WebCodecService) GetCodecForResponding(accept, extension string, hasCal
7483
// content type.
7584
func (s *WebCodecService) GetCodec(contentType string) (codecs.Codec, error) {
7685

86+
// make sure we have at least one codec
87+
s.assertCodecs()
88+
7789
for _, codec := range s.codecs {
7890

7991
// default codec
@@ -97,6 +109,9 @@ func (s *WebCodecService) GetCodec(contentType string) (codecs.Codec, error) {
97109
// marshalled instead.
98110
func (s *WebCodecService) MarshalWithCodec(codec codecs.Codec, object interface{}, options map[string]interface{}) ([]byte, error) {
99111

112+
// make sure we have at least one codec
113+
s.assertCodecs()
114+
100115
// get the public data
101116
publicData, err := codecs.PublicData(object, options)
102117

@@ -111,5 +126,9 @@ func (s *WebCodecService) MarshalWithCodec(codec codecs.Codec, object interface{
111126

112127
// UnmarshalWithCodec unmarshals the specified data into the object with the specified codec.
113128
func (s *WebCodecService) UnmarshalWithCodec(codec codecs.Codec, data []byte, object interface{}) error {
129+
130+
// make sure we have at least one codec
131+
s.assertCodecs()
132+
114133
return codec.Unmarshal(data, object)
115134
}

0 commit comments

Comments
 (0)