🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

nest-qiniu-sdk

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nest-qiniu-sdk

qiniu-sdk for nestjs

1.0.4
latest
Source
npm
Version published
Weekly downloads
5
25%
Maintainers
1
Weekly downloads
 
Created
Source

nest-qiniu-sdk

qiniu sdk for nestjs

安装

yarn add nest-qiniu-sdk

使用

同步注册

// app.module.ts
import {Module} from '@nestjs/common'
import {AppController} from './app.controller'

import {QiniuModule, zone} from 'nest-qiniu-sdk'

@Module({
    imports: [
        QiniuModule.register({
            // 通常不用管区域
            // zone: zone.Zone_z0,
            global: true,
            access_key: 'access_key',
            secret_key: 'secret_key',
            bucket: 'bucket',
            domain: 'http://bucket.test',
        }),
    ],
    controllers: [AppController],
})
export class AppModule {
}
// app.controller.ts
import {Controller, Get} from '@nestjs/common'

import {QiniuService, util} from 'nest-qiniu-sdk'

@Controller()
export class AppController {
    constructor(private readonly QiniuService: QiniuService) {
    }

    @Get()
    hiQiniu(@Request() req): any {
        let options = this.QiniuService.getOptions(),
            access_key = this.QiniuService.getOptions('access_key'),
            secret_key = this.QiniuService.getOptions('secret_key'),
            zone = this.QiniuService.getZone(),
            bucket = this.QiniuService.getBucket(),
            domain = this.QiniuService.getDomain()

        /**
         * 具体文档参考 https://developer.qiniu.com/kodo/1289/nodejs
         * 大部分封装的不那么完美 建议根据源文档进行传参等配置 如 抓取网络资源到空间
         */
        let mac = this.QiniuService.mac(),
            cdnManager = this.QiniuService.cdnManager(),
            putPolicy = this.QiniuService.putPolicy({}),
            formUploader = this.QiniuService.formUploader(),
            bucketManager = this.QiniuService.bucketManager(),
            operationManager = this.QiniuService.operationManager()

        let key = 'file_path',
            // 过期时间 60秒
            expires = 60

        /**
         * 获取上传 token
         * https://developer.qiniu.com/kodo/1206/put-policy
         */
        let get_upload_token = this.QiniuService.getUploadToken({
            scope: bucket,
            insertOnly: 1,
            expires,
            // ...
        })

        // 获取公开空间下载地址
        let download_public_url = this.QiniuService.getPublicDownloadUrl(key)

        // 获取私有空间下载地址
        let download_private_url = this.QiniuService.getPrivateDownloadUrl(key, expires)

        // 判断是否为七牛回调
        let is_qiniu_callback = this.QiniuService.getIsQiniuCallback('request_full_url', req.headers['authorization'], req.body)

        // 抓取网络资源到空间
        let fetch_url = 'http://devtools.qiniu.com/qiniu.png'
        bucketManager.fetch(fetch_url, bucket, key, (err, respBody, respInfo) => {
            console.log(err, respBody, respInfo)
        })

        // 工具相关
        let isTimestampExpired = util.isTimestampExpired(1675274522)
    }
}

异步注册

  • 学艺不精 待验证

todo

  • 优雅的封装 自动注入所需的 bucket mac key 等参数
  • 支持 Promise

参考

  • https://developer.qiniu.com/kodo/1289/nodejs
  • https://github.com/nestjs/jwt

Keywords

qiniu sdk

FAQs

Package last updated on 31 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts