Dev User hai 3 meses
pai
achega
88ac9581a9
Modificáronse 3 ficheiros con 40 adicións e 1 borrados
  1. 36 1
      src/tencent_cos.cpp
  2. 1 0
      src/tencent_cos.h
  3. 3 0
      target/tencent_cos.lua

+ 36 - 1
src/tencent_cos.cpp

@@ -253,6 +253,40 @@ std::pair<std::string,bool> module::tencent_cos::exist(const std::string& appid,
     cos_pool_destroy(p);
     return {result,exist};
 }
+std::string module::tencent_cos::deldir(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& prefix)
+{
+    if (prefix.empty() || prefix.back() != '/') {
+        return "code:0, error_code:invalid_prefix, error_msg:prefix must end with '/'";
+    }
+
+    cos_pool_t* p = NULL;
+    cos_string_t bucket;
+    cos_string_t object_prefix;
+    cos_status_t* s = NULL;
+    cos_request_options_t* options = NULL;
+    cos_pool_create(&p, NULL);
+
+    options = cos_request_options_create(p);
+    options->config = cos_config_create(options->pool);
+    cos_str_set(&options->config->endpoint, endpoint.c_str());
+    cos_str_set(&options->config->access_key_id, access_key_id.c_str());
+    cos_str_set(&options->config->access_key_secret, access_key_secret.c_str());
+    cos_str_set(&options->config->appid, appid.c_str());
+    options->config->is_cname = COS_FALSE;
+    options->ctl = cos_http_controller_create(options->pool, 0);
+
+    cos_str_set(&bucket, bucket_name.c_str());
+    cos_str_set(&object_prefix, prefix.c_str());
+
+    s = cos_delete_objects_by_prefix(options, &bucket, &object_prefix);
+
+    std::string result = "";
+    if (!cos_status_is_ok(s)) {
+        result = "code:" + std::to_string(s->code) + ", error_code:" + s->error_code + ", error_msg:" + s->error_msg;
+    }
+    cos_pool_destroy(p);
+    return result;
+}
 void module::tencent_cos::regist(sol::state* lua)
 {
     lua->new_usertype<module::tencent_cos>("fw_tencent_cos",
@@ -260,7 +294,8 @@ void module::tencent_cos::regist(sol::state* lua)
         "upfile", &module::tencent_cos::upfile,
         "updata", &module::tencent_cos::updata,
         "del", &module::tencent_cos::del,
-        "exist", &module::tencent_cos::exist
+        "exist", &module::tencent_cos::exist,
+        "deldir", &module::tencent_cos::deldir
     );
 }
 

+ 1 - 0
src/tencent_cos.h

@@ -10,6 +10,7 @@ namespace module
 		std::string updata(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name,const std::string_view& data);
 		std::string del(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name);
 		std::pair<std::string,bool> exist(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& object_name);
+		std::string deldir(const std::string& appid,const std::string& endpoint,const std::string& access_key_id,const std::string& access_key_secret,const std::string& bucket_name,const std::string& prefix);
 		static void regist(sol::state* lua);
 	private:
 		// 通过 imodule 继承

+ 3 - 0
target/tencent_cos.lua

@@ -29,6 +29,9 @@ end
 function tencent_cos:exist(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name)
     return self.module:exist(appid,endpoint,access_key_id, access_key_secret,bucket_name,object_name)
 end
+function tencent_cos:deldir(appid,endpoint,access_key_id, access_key_secret,bucket_name,prefix)
+    return self.module:deldir(appid,endpoint,access_key_id, access_key_secret,bucket_name,prefix)
+end
 function tencent_cos:self()
     return self.module:self()
 end