From 30f992c6a83673358f1da3c7a6794030bb160935 Mon Sep 17 00:00:00 2001
From: Noah Hsu <i@nn.ci>
Date: Sat, 8 Oct 2022 22:23:33 +0800
Subject: [PATCH] feat(onedrive): customize chunk size (close #1927)

---
 drivers/onedrive/driver.go | 3 +++
 drivers/onedrive/meta.go   | 1 +
 drivers/onedrive/util.go   | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/onedrive/driver.go b/drivers/onedrive/driver.go
index d320821a..8ade7360 100644
--- a/drivers/onedrive/driver.go
+++ b/drivers/onedrive/driver.go
@@ -34,6 +34,9 @@ func (d *Onedrive) Init(ctx context.Context, storage model.Storage) error {
 	if err != nil {
 		return err
 	}
+	if d.ChunkSize < 1 {
+		d.ChunkSize = 5
+	}
 	return d.refreshToken()
 }
 
diff --git a/drivers/onedrive/meta.go b/drivers/onedrive/meta.go
index 36f9cbc1..86125844 100644
--- a/drivers/onedrive/meta.go
+++ b/drivers/onedrive/meta.go
@@ -14,6 +14,7 @@ type Addition struct {
 	RedirectUri  string `json:"redirect_uri" required:"true" default:"https://tool.nn.ci/onedrive/callback"`
 	RefreshToken string `json:"refresh_token" required:"true"`
 	SiteId       string `json:"site_id"`
+	ChunkSize    int64  `json:"chunk_size" type:"number" default:"5"`
 }
 
 var config = driver.Config{
diff --git a/drivers/onedrive/util.go b/drivers/onedrive/util.go
index 1d67f311..2376e7f2 100644
--- a/drivers/onedrive/util.go
+++ b/drivers/onedrive/util.go
@@ -166,7 +166,7 @@ func (d *Onedrive) upBig(ctx context.Context, dstDir model.Obj, stream model.Fil
 	}
 	uploadUrl := jsoniter.Get(res, "uploadUrl").ToString()
 	var finish int64 = 0
-	const DEFAULT = 100 * 1024 * 1024
+	DEFAULT := d.ChunkSize * 1024 * 1024
 	for finish < stream.GetSize() {
 		if utils.IsCanceled(ctx) {
 			return ctx.Err()