@@ -5,10 +5,11 @@ import (
5
5
"io"
6
6
7
7
"github.com/sirupsen/logrus"
8
+
8
9
"golang.org/x/text/transform"
9
10
)
10
11
11
- func ImportServer (configuration , settings , event , eventRules , entrylist , bop , assistRules io.Reader ) error {
12
+ func ImportServer (configuration , settings , event , eventRules , entrylist , bop , assistRules io.ReadSeeker ) error {
12
13
server := new (ServerSettings )
13
14
14
15
if err := importFile (configuration , & server .Configuration , configurationJsonName ); err != nil {
@@ -46,14 +47,24 @@ func ImportServer(configuration, settings, event, eventRules, entrylist, bop, as
46
47
return nil
47
48
}
48
49
49
- func importFile (reader io.Reader , config interface {}, filename string ) error {
50
+ func importFile (reader io.ReadSeeker , config interface {}, filename string ) error {
50
51
r := transform .NewReader (reader , utf16Encoding .NewDecoder ().Transformer )
51
52
52
53
if err := json .NewDecoder (r ).Decode (config ); err != nil {
53
- logrus .WithError (err ).
54
- WithField ("file" , filename ).
55
- Error ("Error unmarshalling configuration file JSON on import" )
56
- return err
54
+ if _ , er := reader .Seek (0 , io .SeekStart ); er != nil {
55
+ return er
56
+ }
57
+
58
+ // trying decode non ut16 content
59
+ if err2 := json .NewDecoder (reader ).Decode (config ); err2 != nil {
60
+ logrus .WithError (err ).
61
+ WithField ("file" , filename ).
62
+ WithField ("err_non_utf16" , err2 ).
63
+ Error ("Error unmarshalling configuration file JSON on import" )
64
+ return err
65
+ } else {
66
+ return nil
67
+ }
57
68
}
58
69
59
70
return nil
0 commit comments