coding-sdk

Open API SDK for Coding.net

Usage no npm install needed!

<script type="module">
  import codingSdk from 'https://cdn.skypack.dev/coding-sdk';
</script>

README

Coding SDK

github npm npm codecov Travis-CI codebeat badge

已经疯狂得不能用代码行数(总计56行,包含空行和debug)来衡量该项目了,代码仅有 1,375字节(净化后)。

五十六个民族五十六朵花。啦啦啦~

[TOC]

安装

yarn add coding-sdk
# or npm i -S coding-sdk

本项目中使用 camelCase 驼峰命名法则。

Scope 说明

scope 参数应传入数组如: ['user', 'project', 'team']

scope 名称 | 说明 | 授权 :--| -- | :--: user | 授权获取用户信息(用户名称,头像,tag,email,动态 ) | 读 user:email | 授权获取用户的email ) | 读 notification | 授权读取通知信息,包含email通知 | 读写 social | 授权读取冒泡列表,好友列表 | 读 social:tweet | 授权发送冒泡,冒泡操作(点赞、评论、删除) | 读写 social:message | 授权读取、发送私信、私信语音 | 读写 project | 授权项目信息、项目列表,仓库信息,公钥列表、成员,任务列表 | 读 project:members | 授权项目管理者增、删、改项目成员,退出项目 | 读写 project:task | 授权任务操作,包含增、删、改 | 读写 project:file | 授权文件,包含增、删、改 | 读写 project:depot | 获取 commit 信息,分支操作,MR/PR, LineNotes, fork, webhook 等操作 | 读写 project:key | 授权操作部署公钥、个人公钥 | 读写 team | 获取团队相关基本信息 | 读

Oauth 使用 示例

const SDK = require('coding-sdk');
// 初始化实例:
const coding = new SDK({
  clientId: 'xxx',
  clientSecret: 'xxx',
  callback: 'http://localhost/coding/callback'
});

// 获取 OAuth 鉴权链接 URL
console.log(coding.url());
// 如: https://coding.net/oauth_authorize.html?client_id=xxx&redirect_uri=xxx&response_type=code&scope=user
// 登录后跳转回 callback URL,获取其中的 code 字段

// 注意包裹在 async 内, 或者用 Promise.then(res=>{ console.log(res.data) }) 来获取返回 json 结果
const { data } = await coding.get('oauth/access_token', {
  grant_type: 'authorization_code',
  code: 'xxxxxx'
});
/*
{ access_token: 'xxxxx',
  refresh_token: 'xxxxx',
  expires_in: '864000' }
*/

Token 使用 示例

const coding = new SDK({
  user: 'willin',
  token: 'xxxxxx'
});

const { data } = await coding.delete('user/XXX/project/XXX/task/XXX');
/*
{ code: 0, data: true }
*/

一些公开接口 使用 示例

const coding = new SDK();

const { data } = await coding.get('user/key/willin')
/*
{
  code: 0,
  data: { ... }
}
*/

补充示例

获取 OAuth 登录地址

coding.url();

获取 access_token

const data = await coding.get('oauth/access_token', {
  grantType: 'authorization_code',
  code: 'xxxxxx'
}).then(res=>res.data);
/*
返回数据格式:
{
  access_token: "xxxxxxx",
  refresh_token: "xxxxxx",
  expires_in: "86382817"
}
*/

License

Apache 2.0

通过支付宝捐赠:

qr