@@ -226,14 +226,20 @@ cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync(
226226 const std::string& url, std::optional<std::string> temp_model_id,
227227 std::optional<std::string> temp_name) {
228228 auto url_obj = url_parser::FromUrlString (url);
229- if (url_obj.has_error ()) {
230- return cpp::fail (" Invalid url: " + url);
229+ if (url_obj.has_error () || url_obj->pathParams .size () < 5 ) {
230+ return cpp::fail (
231+ " Invalid url: " + url +
232+ " , a valid URL example is: "
233+ " https://huggingface.co/cortexso/tinyllama/blob/1b/model.gguf" );
231234 }
232235
233236 if (url_obj->host == kHuggingFaceHost ) {
234237 if (url_obj->pathParams [2 ] == " blob" ) {
235238 url_obj->pathParams [2 ] = " resolve" ;
236239 }
240+ } else {
241+ return cpp::fail (" Only support pull model from " +
242+ std::string (kHuggingFaceHost ));
237243 }
238244 auto author{url_obj->pathParams [0 ]};
239245 auto model_id{url_obj->pathParams [1 ]};
@@ -243,10 +249,6 @@ cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync(
243249 return DownloadModelFromCortexsoAsync (model_id, url_obj->pathParams [3 ]);
244250 }
245251
246- if (url_obj->pathParams .size () < 5 ) {
247- return cpp::fail (" Invalid url: " + url);
248- }
249-
250252 std::string huggingFaceHost{kHuggingFaceHost };
251253 std::string unique_model_id = " " ;
252254 if (temp_model_id.has_value ()) {
@@ -798,13 +800,19 @@ cpp::result<ModelPullInfo, std::string> ModelService::GetModelPullInfo(
798800
799801 if (string_utils::StartsWith (input, " https://" )) {
800802 auto url_obj = url_parser::FromUrlString (input);
801- if (url_obj.has_error ()) {
802- return cpp::fail (" Invalid url: " + input);
803+ if (url_obj.has_error () || url_obj->pathParams .size () < 5 ) {
804+ return cpp::fail (
805+ " Invalid url: " + input +
806+ " , a valid URL example is: "
807+ " https://huggingface.co/cortexso/tinyllama/blob/1b/model.gguf" );
803808 }
804809 if (url_obj->host == kHuggingFaceHost ) {
805810 if (url_obj->pathParams [2 ] == " blob" ) {
806811 url_obj->pathParams [2 ] = " resolve" ;
807812 }
813+ } else {
814+ return cpp::fail (" Only support pull model from " +
815+ std::string (kHuggingFaceHost ));
808816 }
809817
810818 auto author{url_obj->pathParams [0 ]};
0 commit comments