File tree 3 files changed +33
-9
lines changed
3 files changed +33
-9
lines changed Original file line number Diff line number Diff line change @@ -46,7 +46,7 @@ testing = ["opentelemetry/testing"]
46
46
# add ons
47
47
internal-logs = [" tracing" ]
48
48
with-schemars = [" schemars" ]
49
- with-serde = [" serde" , " hex" ]
49
+ with-serde = [" serde" , " hex" , " base64 " ]
50
50
51
51
[dependencies ]
52
52
tonic = { workspace = true , optional = true , features = [" codegen" , " prost" ] }
@@ -57,6 +57,7 @@ schemars = { version = "0.8", optional = true }
57
57
serde = { workspace = true , optional = true , features = [" serde_derive" ] }
58
58
hex = { version = " 0.4.3" , optional = true }
59
59
tracing = {workspace = true , optional = true } # optional for opentelemetry internal logging
60
+ base64 = { version = " 0.22.1" , optional = true }
60
61
61
62
[dev-dependencies ]
62
63
opentelemetry = { features = [" testing" ], path = " ../opentelemetry" }
Original file line number Diff line number Diff line change @@ -56,6 +56,11 @@ pub(crate) mod serializers {
56
56
map. serialize_entry ( "intValue" , & i. to_string ( ) ) ;
57
57
map. end ( )
58
58
}
59
+ Some ( Value :: BytesValue ( b) ) => {
60
+ let mut map = serializer. serialize_map ( Some ( 1 ) ) ?;
61
+ map. serialize_entry ( "bytesValue" , & base64:: encode ( b) ) ;
62
+ map. end ( )
63
+ }
59
64
Some ( value) => value. serialize ( serializer) ,
60
65
None => serializer. serialize_none ( ) ,
61
66
}
@@ -127,8 +132,10 @@ pub(crate) mod serializers {
127
132
value = Some ( any_value:: Value :: KvlistValue ( kv) ) ;
128
133
}
129
134
"bytesValue" => {
130
- let bytes = map. next_value ( ) ?;
131
- value = Some ( any_value:: Value :: BytesValue ( bytes) ) ;
135
+ let base64: String = map. next_value ( ) ?;
136
+ let decoded = base64:: decode ( base64. as_bytes ( ) )
137
+ . map_err ( |e| de:: Error :: custom ( e) ) ?;
138
+ value = Some ( any_value:: Value :: BytesValue ( decoded) ) ;
132
139
}
133
140
_ => {
134
141
//skip unknown keys, and handle error later.
Original file line number Diff line number Diff line change @@ -274,12 +274,22 @@ mod json_serde {
274
274
kind: 2 ,
275
275
start_time_unix_nano: 1544712660000000000 ,
276
276
end_time_unix_nano: 1544712661000000000 ,
277
- attributes: vec![ KeyValue {
278
- key: String :: from( "my.span.attr" ) ,
279
- value: Some ( AnyValue {
280
- value: Some ( Value :: StringValue ( String :: from( "some value" ) ) ) ,
281
- } ) ,
282
- } ] ,
277
+ attributes: vec![
278
+ KeyValue {
279
+ key: String :: from( "my.span.attr" ) ,
280
+ value: Some ( AnyValue {
281
+ value: Some ( Value :: StringValue ( String :: from(
282
+ "some value" ,
283
+ ) ) ) ,
284
+ } ) ,
285
+ } ,
286
+ KeyValue {
287
+ key: String :: from( "my.span.bytes.attr" ) ,
288
+ value: Some ( AnyValue {
289
+ value: Some ( Value :: BytesValue ( vec![ 0x80 , 0x80 , 0x80 ] ) ) ,
290
+ } ) ,
291
+ } ,
292
+ ] ,
283
293
dropped_attributes_count: 1 ,
284
294
events: vec![ Event {
285
295
time_unix_nano: 1544712660500000000 ,
@@ -369,6 +379,12 @@ mod json_serde {
369
379
"value": {
370
380
"stringValue": "some value"
371
381
}
382
+ },
383
+ {
384
+ "key": "my.span.bytes.attr",
385
+ "value": {
386
+ "bytesValue": "gICA"
387
+ }
372
388
}
373
389
],
374
390
"droppedAttributesCount": 1,
You can’t perform that action at this time.
0 commit comments