npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mlog/mossdk

v1.1.1

Published

mlog MOS javascript SDK

Downloads

9

Readme

MOS javascript SDK 简介

Gavial Mos JavaScript SDK for the browser and Node.js

安装

npm install @mlog/mossdk
// yarn add @mlog/mossdk

兼容性

Node

Node.js >= 8.0.0 required.

Browser

  • IE >= 10 & Edge
  • Major versions of Chrome/Firefox/Safari
  • Major versions of Android/iOS/WP

Node Usage

const Mossdk = require("@mlog/mossdk").default;
// 参数为 Accesskey
let mos = new Mossdk({
  baseUrl: "http://mlogcn.com",
  token: "80dfba73e4d7d412e9cd223f0a52b3791"
});

Browser Usage

import Mossdk from "@mlog/mossdk";
// 参数为 Accesskey
const mos = new Mossdk({
  baseUrl: "http://mlogcn.com",
  token: "80dfba73e4d7d412e9cd223f0a52b3791"
});

Basic usage

<script src="./mossdk.min.js"></script>

<script>
  const mos = new MOS.Mossdk({
    baseUrl: "http://mlogcn.com",
    token: "80dfba73e4d7d412e9cd223f0a52b3791"
  });
  mos.getBucketInfo("aa").then(res => {
    console.log(res);
  });
</script>

Mossdk(option)

创建一个 sdk 实例

参数:

  • option { Object } bucket 配置

    • token { String } accesskey
    • baseUrl { String } 服务端地址
    • useCache { Boolean } 非必填 查询 list prefix 时是否使用缓存,默认 fasle。 例子:
const mos = new Mossdk({
  baseUrl: "http://mlogcn.com",
  token: "80dfba73e4d7d412e9cd223f0a52b3791",
  useCache: true
});

Bucket Operations

.useBucket(name)

使用这个 bucket

参数:

  • name { String } bucket 名称

例子:

  • 使用 aa bucket.
mos.useBucket("aa");

返回值:

this mos 实例

.getBucketInfo(name)

参看这个 bucket 的信息

参数:

  • name { String } bucket 名称

例子:

  • 参看 aa 的信息
mos.getBucketInfo("aa").then(
  res => {
    // 查询成功
    // 在不知道 bucke 的情况下,可以通过该接口确认 bucket是否存在。
    mos.useBucket("aa");
  },
  err => {
    // 失败
    console.log(err);
  }
);

返回值:

{
  "createTime": "2018-11-05 08:34:12",
  "id": "7e4932c355e947291ae1316d856e4",
  "name": "aa",
  "ownerId": 67,
  "ownerType": "GROUP",
  "protectType": "public"
}

Object Operations

.getObjectInfo(key)

查询 object 信息

参数:

  • key { String } object key

例子: 获取 aa buckey 下 /q/ 信息

// 以下例子默认使用 `aa` bucket
// mos.useBucket("aa").getObjectInfo("/q/")
mos.useBucket("aa");
mos.getObjectInfo("/q").then(res => {
  console.log(res);
});

.put(option)

文件上传

参数:

  • option { Object } 上传参数
    • key { String } 上传后文件的 key
    • content { File } 要上传的文件
    • mediaType { String } 非必填 例如’image/jpeg’
    • uploadProgress { Function } 非必填 上传进度事件

例子:

上传一个 test.docx

// 上传过程中触发,event 为原生获取上传进度的事件
function uploadProgress(event) {
  console.log(event);
}
let file = document.querySelector("input").files[0];
mos
  .put({
    key: "/q/test.docx",
    content: file,
    uploadProgress: uploadProgress
  })
  .then(res => {
    // 成功
    console.log(res.message);
  });

返回值:

{
  "key": "/q/tt.docx",
  "type": "upload",
  "message": "success"
}

.get(key)

下载文件

参数:

  • key { String } Object key

例子:

mos.get("/q/test.docx").then(res => {
  console.log(res.message);
});

返回值:

{
  "key": "/q/test.docx",
  "type": "download",
  "message": "success"
}

.list(option)

Object 目录遍历, ``useCache == true` 时启用缓存模式。

参数:

  • option { Object } 遍历参数
    • delimiter { String } 目录对象 key
    • prefix { String } 非必填 匹配前缀
    • startKey { String } 非必填 该目录下最小文件名(包含)
    • endKey { String } 非必填 该目录下最大文件名(包含)
    • pageSize { Number } 非必填 单页数据最大条数

例子:

mos.list({ delimiter: "/q/", prefix: "t" }).then(res => {
  console.log(res);
});

返回值:

  • data { Array } 查出的 Object 列表
  • hasMore { Boolean } 列表是否还有下一页
  • pageIndex { Number } 列表当前页,开启'缓存模式'返回
  • nextMarker { String } 下一页起始文件名
{
  "data": [
    {
      "id": "7a7_test.docx",
      "key": "/q/test.docx",
      "name": "test.docx",
      "length": 29370,
      "mediaType": null,
      "lastModifyTime": 1547445894935,
      "bucket": "aa",
      "attrs": {},
      "contentEncoding": null
    }
  ],
  "hasMore": true,
  "nextMarker": "/q/tt.docx"
  // "pageIndex": 1
}

.listNext()

Object 目录遍历下一页数据。'缓存模式'开启且返回值 hasMore == true 时可调用,否则会报错。

例子:

mos.listNext().then(res => {
  console.log(res);
});

.listPre()

Object 目录遍历上一页数据。'缓存模式'开启且返回值中 pageIndex > 2 时可用。

例子:

mos.listPre().then(res => {
  console.log(res);
});

'缓存模式'未开启时,请根据 nextMarker 调用 .list() 接口。

例子:

请求下一页数据

mos
  .list({ delimiter: "/q/", prefix: "t", startKey: "/q/tt.docx" })
  .then(res => {
    console.log(res);
  });

.prefix(option)

Object 前缀遍历。 ``useCache == true` 时启用缓存模式。 参数:

  • prefix { String } 文件名前缀
  • listId { String } 本次遍历唯一 ID, 默认为空。 第一次请求传空, 再次调用须传返回结果中的 listId

例子: 匹配 /1 前缀

mos.prefix({ prefix: "/1", listId: "" }).then(res => {
  // 成功
  console.log(res);
});

返回值:

  • data { Array } 查出的 Object 列表
  • hasMore { Boolean } 列表是否还有下一页
  • pageIndex { Number } 列表当前页,开启'缓存模式'返回
  • nextMarker { String } 下一页起始文件名
  • listId { String } 本次遍历唯一 ID
{
  "data": [
    {
      "id": "1a1_11.docx",
      "key": "/11.docx",
      "name": "11.docx",
      "length": 29370,
      "mediaType": null,
      "lastModifyTime": 1547088271387,
      "bucket": "aa",
      "attrs": {},
      "contentEncoding": null
    }
  ],
  "hasMore": false,
  "nextMarker": null,
  "listId": "11c375295d5c4c13ae6380b78624c97d"
}

.prefixNext()

Object 前缀遍历下一页数据。'缓存模式'开启且返回值 hasMore == true 时可调用,否则会报错。

例子:

mos.prefixNext().then(res => {
  console.log(res);
});

.prefixPre()

Object 前缀遍历上一页数据。'缓存模式'开启且返回值中 pageIndex > 2 时可用。

例子:

mos.prefixPre().then(res => {
  console.log(res);
});

'缓存模式'未开启时,直接调用 .prefix() 接口。

例子:

请求下一页数据

mos
  .list({ delimiter: "/q/", prefix: "t", startKey: "/q/tt.docx" })
  .then(res => {
    console.log(res);
  });

.delete(key)

删除 Object

参数

  • key { Object } Object key

例子: 删除 /q/test/test.docx

mos.delete("/q/test/test.docx").then(res => {
  // 成功
  console.log(res);
});

返回值:

{
  "key": "/q/test.docx",
  "type": "delete",
  "message": "success"
}

错误处理

sdk 返回的都是 Promise ,错误处理安 Promise 来处理就可以 例子: 上传参数错误

mos
  .put({
    key: "test.docx",
    content: file
  })
  .then(
    res => {
      ···
    },
    err => {
      console.log(err)
      ···
    }
  );

mos
  .put({
    key: "test.docx",
    content: file
  })
  .then()
  .catch(err => {
    console.log(err)
    ···
  });

返回值:

{
  "timestamp": 1547453683228,
  "status": 500,
  "error": "Internal Server Error",
  "exception": "java.lang.IllegalArgumentException",
  "message": "org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Row length is 0",
  "path": "/object/ajax"
}