@@ -226,14 +226,20 @@ cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync(
226
226
const std::string& url, std::optional<std::string> temp_model_id,
227
227
std::optional<std::string> temp_name) {
228
228
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" );
231
234
}
232
235
233
236
if (url_obj->host == kHuggingFaceHost ) {
234
237
if (url_obj->pathParams [2 ] == " blob" ) {
235
238
url_obj->pathParams [2 ] = " resolve" ;
236
239
}
240
+ } else {
241
+ return cpp::fail (" Only support pull model from " +
242
+ std::string (kHuggingFaceHost ));
237
243
}
238
244
auto author{url_obj->pathParams [0 ]};
239
245
auto model_id{url_obj->pathParams [1 ]};
@@ -243,10 +249,6 @@ cpp::result<DownloadTask, std::string> ModelService::HandleDownloadUrlAsync(
243
249
return DownloadModelFromCortexsoAsync (model_id, url_obj->pathParams [3 ]);
244
250
}
245
251
246
- if (url_obj->pathParams .size () < 5 ) {
247
- return cpp::fail (" Invalid url: " + url);
248
- }
249
-
250
252
std::string huggingFaceHost{kHuggingFaceHost };
251
253
std::string unique_model_id = " " ;
252
254
if (temp_model_id.has_value ()) {
@@ -798,13 +800,19 @@ cpp::result<ModelPullInfo, std::string> ModelService::GetModelPullInfo(
798
800
799
801
if (string_utils::StartsWith (input, " https://" )) {
800
802
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" );
803
808
}
804
809
if (url_obj->host == kHuggingFaceHost ) {
805
810
if (url_obj->pathParams [2 ] == " blob" ) {
806
811
url_obj->pathParams [2 ] = " resolve" ;
807
812
}
813
+ } else {
814
+ return cpp::fail (" Only support pull model from " +
815
+ std::string (kHuggingFaceHost ));
808
816
}
809
817
810
818
auto author{url_obj->pathParams [0 ]};
0 commit comments