@@ -93,6 +93,38 @@ func (c *twoskyClient) downloadTo(
9393 return nil
9494}
9595
96+ func normalizeServicesJSON (data []byte ) []byte {
97+ if b , err := unwrapMessageJSON (data ); err == nil {
98+ data = b
99+ }
100+ if b , err := indentJSON (data ); err == nil {
101+ data = b
102+ }
103+ return data
104+ }
105+
106+ func unwrapMessageJSON (data []byte ) ([]byte , error ) {
107+ var wrapped map [string ]struct {
108+ Message string `json:"message"`
109+ }
110+ if err := json .Unmarshal (data , & wrapped ); err != nil {
111+ return nil , err
112+ }
113+ flat := make (map [string ]string , len (wrapped ))
114+ for k , v := range wrapped {
115+ flat [k ] = v .Message
116+ }
117+ return json .Marshal (flat )
118+ }
119+
120+ func indentJSON (data []byte ) ([]byte , error ) {
121+ var buf bytes.Buffer
122+ if err := json .Indent (& buf , data , "" , " " ); err != nil {
123+ return nil , err
124+ }
125+ return buf .Bytes (), nil
126+ }
127+
96128// printFailedLocales prints sorted list of failed downloads, if any. l and
97129// failed must not be nil.
98130func printFailedLocales (
@@ -159,22 +191,7 @@ func saveToFile(
159191 }
160192
161193 if baseFile == servicesBaseFile {
162- var wrapped map [string ]struct {
163- Message string `json:"message"`
164- }
165- if err := json .Unmarshal (data , & wrapped ); err == nil {
166- flat := make (map [string ]string , len (wrapped ))
167- for k , v := range wrapped {
168- flat [k ] = v .Message
169- }
170- if b , mErr := json .Marshal (flat ); mErr == nil {
171- data = b
172- }
173- }
174- var buf bytes.Buffer
175- if err := json .Indent (& buf , data , "" , " " ); err == nil {
176- data = buf .Bytes ()
177- }
194+ data = normalizeServicesJSON (data )
178195 }
179196
180197 name := filepath .Join (outputDir , code + ".json" )
0 commit comments