// Code generated by lark_sdk_gen. DO NOT EDIT.
/**
 * Copyright 2022 chyroc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package lark

import (
	"context"
)

// BatchGetDriveMediaTmpDownloadURL 该接口用于获取云文档中素材的临时下载链接。链接的有效期为 24 小时, 过期失效。
//
// * 调用此接口之前, 你需确保应用已拥有素材的下载权限。否则接口将返回 403 的 HTTP 状态码。参考[云空间常见问题](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/faq)第五点了解如何分享素材的下载权限给应用。
// * 对于拥有高级权限的多维表格, 在下载素材时, 你需要添加额外的 extra 作为 URL 查询参数, 未填正确填写 extra 接口将返回 403 的 HTTP 状态码。请参考[extra 参数说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/introduction#a478a7c3)正确填写 extra 参数。
// 该接口不支持较高并发, 且调用频率上限为 5 QPS。
//
// doc: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/batch_get_tmp_download_url
// new doc: https://open.feishu.cn/document/server-docs/docs/drive-v1/media/batch_get_tmp_download_url
func (r *DriveService) BatchGetDriveMediaTmpDownloadURL(ctx context.Context, request *BatchGetDriveMediaTmpDownloadURLReq, options ...MethodOptionFunc) (*BatchGetDriveMediaTmpDownloadURLResp, *Response, error) {
	if r.cli.mock.mockDriveBatchGetDriveMediaTmpDownloadURL != nil {
		r.cli.Log(ctx, LogLevelDebug, "[lark] Drive#BatchGetDriveMediaTmpDownloadURL mock enable")
		return r.cli.mock.mockDriveBatchGetDriveMediaTmpDownloadURL(ctx, request, options...)
	}

	req := &RawRequestReq{
		Scope:                 "Drive",
		API:                   "BatchGetDriveMediaTmpDownloadURL",
		Method:                "GET",
		URL:                   r.cli.openBaseURL + "/open-apis/drive/v1/medias/batch_get_tmp_download_url",
		Body:                  request,
		MethodOption:          newMethodOption(options),
		NeedTenantAccessToken: true,
		NeedUserAccessToken:   true,
	}
	resp := new(batchGetDriveMediaTmpDownloadURLResp)

	response, err := r.cli.RawRequest(ctx, req, resp)
	return resp.Data, response, err
}

// MockDriveBatchGetDriveMediaTmpDownloadURL mock DriveBatchGetDriveMediaTmpDownloadURL method
func (r *Mock) MockDriveBatchGetDriveMediaTmpDownloadURL(f func(ctx context.Context, request *BatchGetDriveMediaTmpDownloadURLReq, options ...MethodOptionFunc) (*BatchGetDriveMediaTmpDownloadURLResp, *Response, error)) {
	r.mockDriveBatchGetDriveMediaTmpDownloadURL = f
}

// UnMockDriveBatchGetDriveMediaTmpDownloadURL un-mock DriveBatchGetDriveMediaTmpDownloadURL method
func (r *Mock) UnMockDriveBatchGetDriveMediaTmpDownloadURL() {
	r.mockDriveBatchGetDriveMediaTmpDownloadURL = nil
}

// BatchGetDriveMediaTmpDownloadURLReq ...
type BatchGetDriveMediaTmpDownloadURLReq struct {
	FileTokens []string `query:"file_tokens" json:"-"` // 素材文件的 token。获取方式如下所示: * 新版文档: 通过[获取文档所有块](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/document-docx/docx-v1/document-block/list)接口获取指定文件块（File Block）或图片块（Image Block）的 token, 即为素材 token, * 电子表格: 通过[读取多个范围](https://open.feishu.cn/document/ukTMukTMukTM/ukTMzUjL5EzM14SOxMTN)接口获取指定附件的, `fileToken`, 即为素材的 token, * 多维表格: 通过[列出记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/list)接口获取指定附件的 `file_token`, 即为素材的 token, 如需一次获取多个素材的下载链接, 可多次传递本参数及素材的 token 值, 格式如下: `https://{url}?file_tokens={token1}&file_tokens={token2}`, 其中: `file_tokens` 是参数名, 可以多次传递, `token1` 和 `token2` 为素材的实际 token 值, 你最多可一次获取五个素材的下载链接, 示例值: boxcnrHpsg1QDqXAAAyachabcef
	Extra      *string  `query:"extra" json:"-"`       // 拓展信息, 如拥有高级权限的多维表格在下载素材时, 需要添加额外的扩展信息作为 URL 查询参数鉴权。详情参考[上传点类型及对应 Extra说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/introduction)。未填正确填写该参数的接口将返回 403 的 HTTP 状态码, 示例值: 请参考[上传点类型及对应 extra 说明](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/introduction)
}

// BatchGetDriveMediaTmpDownloadURLResp ...
type BatchGetDriveMediaTmpDownloadURLResp struct {
	TmpDownloadURLs []*BatchGetDriveMediaTmpDownloadURLRespTmpDownloadURL `json:"tmp_download_urls,omitempty"` // 临时下载列表
}

// BatchGetDriveMediaTmpDownloadURLRespTmpDownloadURL ...
type BatchGetDriveMediaTmpDownloadURLRespTmpDownloadURL struct {
	FileToken      string `json:"file_token,omitempty"`       // 素材的 token
	TmpDownloadURL string `json:"tmp_download_url,omitempty"` // 素材的临时下载链接
}

// batchGetDriveMediaTmpDownloadURLResp ...
type batchGetDriveMediaTmpDownloadURLResp struct {
	Code  int64                                 `json:"code,omitempty"` // 错误码, 非 0 表示失败
	Msg   string                                `json:"msg,omitempty"`  // 错误描述
	Data  *BatchGetDriveMediaTmpDownloadURLResp `json:"data,omitempty"`
	Error *ErrorDetail                          `json:"error,omitempty"`
}
