mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
Encoded url handling for is_ancestor queries
Summary: Adds proper url decoding for is_ancestor, so that special characters can be encoded in the url. Reviewed By: kulshrax Differential Revision: D9325467 fbshipit-source-id: d3ff60e004be8d254ea6f7288188adf54ab7ff5f
This commit is contained in:
parent
3a28aeef53
commit
a3b9887ac6
@ -26,6 +26,7 @@ extern crate metaconfig;
|
||||
extern crate mononoke_api as api;
|
||||
extern crate mononoke_types;
|
||||
extern crate panichandler;
|
||||
extern crate percent_encoding;
|
||||
extern crate reachabilityindex;
|
||||
extern crate scuba_ext;
|
||||
extern crate secure_utils;
|
||||
@ -60,6 +61,7 @@ use clap::Arg;
|
||||
use failure::{err_msg, Result};
|
||||
use futures::Future;
|
||||
use panichandler::Fate;
|
||||
use percent_encoding::percent_decode;
|
||||
use slog::{Drain, Level, Logger};
|
||||
use slog_glog_fmt::{kv_categorizer, kv_defaults, GlogFormat};
|
||||
use slog_logview::LogViewDrain;
|
||||
@ -117,11 +119,17 @@ fn get_raw_file(
|
||||
fn is_ancestor(
|
||||
(state, info): (State<HttpServerState>, actix_web::Path<IsAncestorQueryInfo>),
|
||||
) -> impl Future<Item = MononokeRepoResponse, Error = ErrorKind> {
|
||||
let proposed_ancestor_parsed = percent_decode(info.proposed_ancestor.as_bytes())
|
||||
.decode_utf8_lossy()
|
||||
.to_string();
|
||||
let proposed_descendent_parsed = percent_decode(info.proposed_descendent.as_bytes())
|
||||
.decode_utf8_lossy()
|
||||
.to_string();
|
||||
unwrap_request(state.mononoke.send(MononokeQuery {
|
||||
repo: info.repo.clone(),
|
||||
kind: MononokeRepoQuery::IsAncestor {
|
||||
proposed_ancestor: info.proposed_ancestor.clone(),
|
||||
proposed_descendent: info.proposed_descendent.clone(),
|
||||
proposed_ancestor: proposed_ancestor_parsed,
|
||||
proposed_descendent: proposed_descendent_parsed,
|
||||
},
|
||||
}))
|
||||
}
|
||||
|
@ -30,8 +30,17 @@ setup testing repo for mononoke
|
||||
$ hg add branch2
|
||||
$ hg commit -ma
|
||||
$ COMMITB2=$(hg --debug id -i)
|
||||
$ touch forward_slash_bm
|
||||
$ hg add forward_slash_bm
|
||||
$ hg commit -ma
|
||||
$ FORWARD_SLASH_BM_HASH=$(hg --debug id -i)
|
||||
$ COMMITB2_BOOKMARK=B2
|
||||
$ hg co $COMMITB2 > /dev/null
|
||||
$ hg bookmark $COMMITB2_BOOKMARK
|
||||
$ hg co $FORWARD_SLASH_BM_HASH > /dev/null
|
||||
$ FORWARD_SLASH_BM=forward/slash/bookmark
|
||||
$ ENCODED_FORWARD_SLASH_BM=forward%2Fslash%2Fbookmark
|
||||
$ hg bookmark $FORWARD_SLASH_BM
|
||||
|
||||
import testing repo to mononoke
|
||||
$ cd ..
|
||||
@ -162,6 +171,20 @@ test reachability on bookmarks
|
||||
$ sslcurl $APISERVER/repo/is_ancestor/$COMMITB2_BOOKMARK/$COMMIT2
|
||||
false (no-eol)
|
||||
|
||||
test reachability on url encoded bookmarks
|
||||
|
||||
$ sslcurl $APISERVER/repo/is_ancestor/$COMMIT2/$ENCODED_FORWARD_SLASH_BM
|
||||
true (no-eol)
|
||||
|
||||
$ sslcurl $APISERVER/repo/is_ancestor/$ENCODED_FORWARD_SLASH_BM/$COMMIT2
|
||||
false (no-eol)
|
||||
|
||||
$ sslcurl $APISERVER/repo/is_ancestor/$COMMITB2_BOOKMARK/$ENCODED_FORWARD_SLASH_BM
|
||||
true (no-eol)
|
||||
|
||||
$ sslcurl $APISERVER/repo/is_ancestor/$ENCODED_FORWARD_SLASH_BM/$COMMITB2_BOOKMARK
|
||||
false (no-eol)
|
||||
|
||||
test folder list
|
||||
$ sslcurl $APISERVER/repo/list/$COMMIT2/folder | tee output | python -mjson.tool
|
||||
[
|
||||
|
Loading…
Reference in New Issue
Block a user