Skip to content

Commit 5e6258d

Browse files
authored
Feature weiyankong 392d305f (#54)
1、严格签名contentLenght修复 2、生成同步预览 HTML 3、文档转码异步任务接口 4、多文件打包压缩接口 5、流水线整改
1 parent 386d786 commit 5e6258d

File tree

16 files changed

+546
-62
lines changed

16 files changed

+546
-62
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ QCloudCSharpSDK/NCOS
1616
QCloudCSharpSDK/.idea
1717
*.vs
1818
.vscode
19+
**/.DS_Store
1920
**/bin/
2021
**/obj/

QCloudCSharpSDK/COSXML/Common/CosRequestHeaderKey.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ public sealed class CosRequestHeaderKey
7676
public const string MAX_PARTS = "max-parts";
7777

7878
public const string CONTENT_MD5 = "Content-MD5";
79+
80+
public const string CONTENT_LENGTH = "content-length";
7981

8082
public const string RESPONSE_CONTENT_TYPE = "response-content-type";
8183

QCloudCSharpSDK/COSXML/CosXml.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,16 @@ string GenerateSign(string method, string key, Dictionary<string, string> queryP
12021202
/// </summary>
12031203
/// <param name="request"></param>
12041204
/// <returns></returns>
1205+
[Obsolete]
12051206
SubmitDocumentProcessJobResult SubmitDocumentProcessJob(SubmitDocumentProcessJobRequest request);
1207+
1208+
/// <summary>
1209+
/// 提交文档转码任务
1210+
/// </summary>
1211+
/// <param name="request"></param>
1212+
/// <returns></returns>
1213+
CreateDocProcessJobsResult CreateDocProcessJobs(CreateDocProcessJobsRequest request);
1214+
12061215
/// <summary>
12071216
/// 查询指定的文档转码任务
12081217
/// </summary>

QCloudCSharpSDK/COSXML/CosXmlServer.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,6 +1312,17 @@ public SubmitCensorJobResult SubmitDocumentCensorJob(SubmitDocumentCensorJobRequ
13121312
/// </summary>
13131313
/// <param name="request"></param>
13141314
/// <returns></returns>
1315+
public CreateDocProcessJobsResult CreateDocProcessJobs(CreateDocProcessJobsRequest request)
1316+
{
1317+
request.Region = this.GetConfig().Region;
1318+
return Execute(request, new CreateDocProcessJobsResult());
1319+
}
1320+
/// <summary>
1321+
/// 提交文档转码任务
1322+
/// </summary>
1323+
/// <param name="request"></param>
1324+
/// <returns></returns>
1325+
[Obsolete]
13151326
public SubmitDocumentProcessJobResult SubmitDocumentProcessJob(SubmitDocumentProcessJobRequest request)
13161327
{
13171328
request.Region = this.GetConfig().Region;
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
using System.Text;
5+
using COSXML.Common;
6+
using COSXML.Model.Object;
7+
using COSXML.Model.Tag;
8+
using COSXML.CosException;
9+
using COSXML.Utils;
10+
11+
namespace COSXML.Model.CI
12+
{
13+
/// <summary>
14+
/// 提交文档转码任务
15+
/// <see href="https://cloud.tencent.com/document/product/460/46942"/>
16+
/// </summary>
17+
public sealed class CreateDocProcessJobsRequest : CIRequest
18+
{
19+
public DocumentProcessJobInfo documentProcessJobInfo;
20+
public CreateDocProcessJobsRequest(string bucket)
21+
: base(bucket)
22+
{
23+
documentProcessJobInfo = new DocumentProcessJobInfo();
24+
this.method = CosRequestMethod.POST;
25+
this.SetRequestPath("/doc_jobs");
26+
this.SetRequestHeader("Content-Type", "application/xml");
27+
documentProcessJobInfo.input = new DocumentProcessJobInfo.Input();
28+
documentProcessJobInfo.operation = new DocumentProcessJobInfo.Operation();
29+
documentProcessJobInfo.operation.output = new DocumentProcessJobInfo.Output();
30+
documentProcessJobInfo.operation.docProcess = new DocumentProcessJobInfo.DocProcess();
31+
}
32+
33+
public void SetTag(string tag)
34+
{
35+
documentProcessJobInfo.tag = tag;
36+
}
37+
38+
public void SetInputObject(string inputObject)
39+
{
40+
documentProcessJobInfo.input.inputObject = inputObject;
41+
}
42+
43+
public void SetOutputRegion(string outputRegion)
44+
{
45+
documentProcessJobInfo.operation.output.region = outputRegion;
46+
}
47+
48+
public void SetOutputBucket(string outputBucket)
49+
{
50+
documentProcessJobInfo.operation.output.bucket = outputBucket;
51+
}
52+
public void SetOutputObject(string outputObject)
53+
{
54+
documentProcessJobInfo.operation.output.outPutObject = outputObject;
55+
}
56+
public void SetSrcType(string srcType)
57+
{
58+
documentProcessJobInfo.operation.docProcess.srcType = srcType;
59+
}
60+
public void SetTgtType(string tgtType)
61+
{
62+
documentProcessJobInfo.operation.docProcess.tgtType = tgtType;
63+
}
64+
public void SetStartPage(string startPage)
65+
{
66+
documentProcessJobInfo.operation.docProcess.startPage = startPage;
67+
}
68+
public void SetEndPage(string endPage)
69+
{
70+
documentProcessJobInfo.operation.docProcess.endPage = endPage;
71+
}
72+
public void SetSheetId(string sheetId)
73+
{
74+
documentProcessJobInfo.operation.docProcess.sheetId = sheetId;
75+
}
76+
public void SetPaperDirection(string paperDirection)
77+
{
78+
documentProcessJobInfo.operation.docProcess.paperDirection = paperDirection;
79+
}
80+
public void SetPaperSize(string paperSize)
81+
{
82+
documentProcessJobInfo.operation.docProcess.paperSize = paperSize;
83+
}
84+
85+
public void SetImageParams(string imageParams)
86+
{
87+
documentProcessJobInfo.operation.docProcess.imageParams = imageParams;
88+
}
89+
90+
public void SetQuality(string quality)
91+
{
92+
documentProcessJobInfo.operation.docProcess.quality = quality;
93+
}
94+
95+
public void SetZoom(string zoom)
96+
{
97+
documentProcessJobInfo.operation.docProcess.zoom = zoom;
98+
}
99+
100+
public void SetImageDpi(string imageDpi)
101+
{
102+
documentProcessJobInfo.operation.docProcess.imageDpi = imageDpi;
103+
}
104+
105+
public void SetPicPagination(string picPagination)
106+
{
107+
documentProcessJobInfo.operation.docProcess.picPagination = picPagination;
108+
}
109+
110+
111+
public override Network.RequestBody GetRequestBody()
112+
{
113+
return GetXmlRequestBody(documentProcessJobInfo);
114+
}
115+
116+
}
117+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using COSXML.Model.Tag;
2+
3+
namespace COSXML.Model.CI
4+
{
5+
/// <summary>
6+
///
7+
/// </summary>
8+
public sealed class CreateDocProcessJobsResult : CosDataResult<DocProcessResponse>
9+
{
10+
11+
/// <summary>
12+
/// 文档转码结果
13+
/// </summary>
14+
/// <value></value>
15+
public DocProcessResponse docProcessResponse {
16+
get {return _data; }
17+
}
18+
}
19+
}

QCloudCSharpSDK/COSXML/Network/CommandTask.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ private static void HandleHttpWebRequest(HttpWebRequest httpWebRequest, Request
135135
//setp5: send request content: body
136136
if (request.Body != null)
137137
{
138-
httpWebRequest.ContentLength = request.Body.ContentLength;
138+
// httpWebRequest.ContentLength = request.Body.ContentLength;
139139
request.Body.OnWrite(httpWebRequest.GetRequestStream());
140140
}
141141
//print request start log
@@ -429,7 +429,7 @@ private static void HandleHttpWebRequestHeaders(Request request, HttpWebRequest
429429
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationCertificate);
430430
}
431431
//初始化长度
432-
httpWebRequest.ContentLength = 0L;
432+
// httpWebRequest.ContentLength = 0L;
433433
}
434434

435435
/// <summary>

QCloudCSharpSDK/COSXML/Network/HttpClient.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,16 @@ private Request CreateRequest(CosRequest cosRequest, QCloudCredentialProvider cr
300300

301301
request.Body = cosRequest.GetRequestBody();
302302

303+
if (request.Body != null)
304+
{
305+
request.AddHeader(CosRequestHeaderKey.CONTENT_LENGTH, request.Body.ContentLength.ToString());
306+
}
307+
else
308+
{
309+
request.AddHeader(CosRequestHeaderKey.CONTENT_LENGTH, "0");
310+
}
311+
312+
303313
// cacluate md5
304314
if (CheckNeedMd5(request, cosRequest.IsNeedMD5) && request.Body != null)
305315
{
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using COSXML;
2+
using COSXML.Auth;
3+
using COSXML.Model.CI;
4+
5+
namespace COSXMLDemo
6+
{
7+
public class CreateDocProcessJobsModel
8+
{
9+
10+
public CosXml cosXml;
11+
12+
// 初始化COS服务实例
13+
private void InitCosXml()
14+
{
15+
string region = Environment.GetEnvironmentVariable("COS_REGION");
16+
CosXmlConfig config = new CosXmlConfig.Builder()
17+
.SetRegion(region) // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
18+
.Build();
19+
string secretId = Environment.GetEnvironmentVariable("SECRET_ID"); // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
20+
string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi
21+
long durationSecond = 600; //每次请求签名有效时长,单位为秒
22+
QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
23+
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider);
24+
}
25+
26+
CreateDocProcessJobsModel()
27+
{
28+
InitCosXml();
29+
}
30+
31+
public void CreateDocProcessJobs()
32+
{
33+
try
34+
{
35+
string bucket = "bucketname-APPID";
36+
string textKey = "";
37+
38+
CreateDocProcessJobsRequest request = new CreateDocProcessJobsRequest(bucket);
39+
request.SetInputObject("demo.docx");
40+
request.SetTag("DocProcess");
41+
request.SetSrcType("docx");
42+
request.SetTgtType("jpg");
43+
request.SetStartPage("3");
44+
request.SetEndPage("5");
45+
request.SetImageParams("imageMogr2/cut/400x400");
46+
request.SetQuality("90");
47+
request.SetZoom("200");
48+
request.SetImageDpi("100");
49+
request.SetPicPagination("1");
50+
request.SetOutputBucket("");
51+
request.SetOutputObject("");
52+
request.SetOutputRegion("");
53+
request.SetSheetId("1");
54+
request.SetPaperDirection("1");
55+
request.SetPaperSize("1");
56+
CreateDocProcessJobsResult createDocProcessJobsResult = cosXml.CreateDocProcessJobs(request);
57+
Console.WriteLine(createDocProcessJobsResult.docProcessResponse.JobsDetail.JobId);
58+
}
59+
catch (COSXML.CosException.CosClientException clientEx)
60+
{
61+
Console.WriteLine("CosClientException: " + clientEx);
62+
}
63+
catch (COSXML.CosException.CosServerException serverEx)
64+
{
65+
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
66+
}
67+
}
68+
69+
public static void CreateDocProcessJobsModelMain()
70+
{
71+
CreateDocProcessJobsModel m = new CreateDocProcessJobsModel();
72+
m.CreateDocProcessJobs();
73+
}
74+
}
75+
}

QCloudCSharpSDK/COSXMLDemo/Object/ObjectRestore.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,5 @@ public static void ObjectRestoreModelMain()
7070
}
7171

7272
}
73-
}
73+
}
74+

0 commit comments

Comments
 (0)