Skip to content

Commit 3efa4f2

Browse files
committed
fix(API): filter null values of requrest structs
Some servers, like youtube, reject null values possibly thanks to the reliance on parts. Now we are filtering them (in a very inefficient, but working way), which seems to be fine with the servers. Effectively, we seem to be able now to upload videos ... . More testing required !
1 parent 3fe2732 commit 3efa4f2

4 files changed

Lines changed: 14 additions & 2 deletions

File tree

etc/api/type-api.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@ cargo:
2727
- url = "*"
2828
- serde = ">= 0.3.0"
2929
- serde_macros = "*"
30+
- json-tools = "*"

etc/api/type-cli.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,3 @@ cargo:
3131
- serde = ">= 0.3.0"
3232
- serde_macros = "*"
3333
- clap = "*"
34-
- json-tools = "*"

src/mako/api/lib.rs.mako

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ extern crate serde;
3737
extern crate yup_oauth2 as oauth2;
3838
extern crate mime;
3939
extern crate url;
40+
extern crate json_tools;
4041

4142
mod cmn;
4243

src/mako/api/lib/mbuild.mako

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,18 @@ else {
663663
664664
% if request_value:
665665
let mut json_mime_type = mime::Mime(mime::TopLevel::Application, mime::SubLevel::Json, Default::default());
666-
let mut request_value_reader = io::Cursor::new(json::to_vec(&self.${property(REQUEST_VALUE_PROPERTY_NAME)}));
666+
let mut request_value_reader =
667+
{
668+
let json_cache = json::to_string(&self.${property(REQUEST_VALUE_PROPERTY_NAME)}).unwrap();
669+
io::Cursor::new(json_tools::TokenReader::new(
670+
json_tools::FilterTypedKeyValuePairs::new(
671+
json_tools::Lexer::new(
672+
json_cache.bytes(),
673+
json_tools::BufferType::Span),
674+
json_tools::TokenType::Null),
675+
Some(&json_cache)).bytes().filter_map(|v|v.ok()).collect::${'<Vec<u8>>'}()
676+
)
677+
};
667678
let request_size = request_value_reader.seek(io::SeekFrom::End(0)).unwrap();
668679
request_value_reader.seek(io::SeekFrom::Start(0)).unwrap();
669680
% endif

0 commit comments

Comments
 (0)