@@ -204,12 +204,22 @@ This command outputs data in the following encodings:
204
204
* "protobuf"
205
205
* "json"
206
206
* "xml"
207
- (Specified by the "--encoding" or "--enc" flag)` ,
207
+ (Specified by the "--encoding" or "--enc" flag)
208
+
209
+ The encoding of the data field can be specifed by the --data-encoding flag
210
+
211
+ Supported values are:
212
+ * "text" (default)
213
+ * "base64"
214
+ ` ,
208
215
},
209
216
210
217
Arguments : []cmdkit.Argument {
211
218
cmdkit .StringArg ("key" , true , false , "Key of the object to retrieve, in base58-encoded multihash format." ).EnableStdin (),
212
219
},
220
+ Options : []cmdkit.Option {
221
+ cmdkit .StringOption ("data-encoding" , "Encoding type of the data field, either \" text\" or \" base64\" ." ).WithDefault ("text" ),
222
+ },
213
223
Run : func (req oldcmds.Request , res oldcmds.Response ) {
214
224
n , err := req .InvocContext ().GetNode ()
215
225
if err != nil {
@@ -219,6 +229,12 @@ This command outputs data in the following encodings:
219
229
220
230
fpath := path .Path (req .Arguments ()[0 ])
221
231
232
+ datafieldenc , _ , err := req .Option ("data-encoding" ).String ()
233
+ if err != nil {
234
+ res .SetError (err , cmdkit .ErrNormal )
235
+ return
236
+ }
237
+
222
238
object , err := core .Resolve (req .Context (), n .Namesys , n .Resolver , fpath )
223
239
if err != nil {
224
240
res .SetError (err , cmdkit .ErrNormal )
@@ -231,9 +247,15 @@ This command outputs data in the following encodings:
231
247
return
232
248
}
233
249
250
+ data , err := encodeData (pbo .Data (), datafieldenc )
251
+ if err != nil {
252
+ res .SetError (err , cmdkit .ErrNormal )
253
+ return
254
+ }
255
+
234
256
node := & Node {
235
257
Links : make ([]Link , len (object .Links ())),
236
- Data : string ( pbo . Data ()) ,
258
+ Data : data ,
237
259
}
238
260
239
261
for i , link := range object .Links () {
@@ -702,3 +724,14 @@ func unwrapOutput(i interface{}) (interface{}, error) {
702
724
703
725
return <- ch , nil
704
726
}
727
+
728
+ func encodeData (data []byte , encoding string ) (string , error ) {
729
+ switch encoding {
730
+ case "text" :
731
+ return string (data ), nil
732
+ case "base64" :
733
+ return base64 .StdEncoding .EncodeToString (data ), nil
734
+ }
735
+
736
+ return "" , fmt .Errorf ("unkown data field encoding" )
737
+ }
0 commit comments