Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tuya/tuya-connector-nodejs
nodejs sdk
https://github.com/tuya/tuya-connector-nodejs
tuya
Last synced: 3 months ago
JSON representation
nodejs sdk
- Host: GitHub
- URL: https://github.com/tuya/tuya-connector-nodejs
- Owner: tuya
- Created: 2021-06-16T06:49:10.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-04-20T16:46:03.000Z (almost 3 years ago)
- Last Synced: 2024-11-11T18:53:02.669Z (3 months ago)
- Topics: tuya
- Language: TypeScript
- Homepage:
- Size: 178 KB
- Stars: 40
- Watchers: 16
- Forks: 18
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
[English](README.md) | [中文版](README_CN.md)
### What is `tuya-connector`?
[Tuya Open Platform—API Reference](https://developer.tuya.com/en/docs/iot/api-reference?id=Ka7qb7vhber64)
Tuya provides a set of HTTP APIs and signature verification logic. You need to implement the logic when you make the API requests.
`tuya-connector` provides capabilities to sign a request, refresh, store, and renew a token, and encapsulate common APIs, helping you quickly connect to Tuya's open platform.
### Install
```bash
npm install @tuya/tuya-connector-nodejs# or
yarn add @tuya/tuya-connector-nodejs
```### Get started
```ts
import { TuyaContext } from '@tuya/tuya-connector-nodejs';const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
});const device = await tuya.device.detail({
device_id: 'device_id'
});```
## Advanced development
### Custom `tokenStore`
By default, `tokenStore` is implemented based on memory. We recommend that you implement the store instance in your service. In the following code block, the Redis Store is used as an example.
```ts
// tokenStore.ts
import { TuyaTokenStorInterface, TuyaTokensSave } from '@tuya/tuya-connector-nodejs';
import IORedis from 'ioredis';export class RedisTokenStore implements TuyaTokenStorInterface {
private readonly client: IORedis.Redis;
private readonly key: string;
constructor(client: IORedis.Redis, key: string = 'tuya::token') {
this.client = client;
this.key = key;
}async setTokens(tokens: TuyaTokensSave): Promise {
const res = await this.client.set(this.key, JSON.stringify(tokens));
return ! ! res;
}
async getAccessToken(): Promise {
const jsonStr = await this.client.get(this.key) || '{}';
const tokens: TuyaTokensSave = JSON.parse(jsonStr);
return tokens && tokens.access_token;
}
async getRefreshToken(): Promise {
const jsonStr = await this.client.get(this.key) || '{}';
const tokens: TuyaTokensSave = JSON.parse(jsonStr);
return tokens.refresh_token;
}
}// index.ts
import { RedisTokenStore } from './tokenStore';
import IoRedis from 'ioredis';
const redis = new IoRedis();const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
store: new RedisTokenStore(redis),
});
```### Custom request of `httpClient`
`tuya-connector` uses Axios as `httpClient` by default, and exposes replaceable parameters. If necessary, you can also customize `httpClient`.
```ts
import axios from 'axios';
import { TuyaContext } from '@tuya/tuya-connector-nodejs';const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
rpc: axios
});
```### Requests of other OpenAPIs
`tuya-connector` encapsulates common APIs, and declares the types of request and response parameters. You can customize additional API requests.
```ts
import { TuyaContext } from '@tuya/tuya-connector-nodejs';const tuya = new TuyaContext({
baseUrl: 'https://openapi.tuyacn.com',
accessKey: 'xx',
secretKey: 'xx',
});const { data } = await tuya.request({
method: 'GET',
path: '/v1.0/xx',
body: {},
});
```### Other issues
1. Apply for an authorization key. On the [platform](https://iot.tuya.com/cloud/), you can create a project to get the access ID and access secret of the cloud application.
2. For more information about global error codes, see [Global Error Codes](https://developer.tuya.com/en/docs/iot/error-code?id=K989ruxx88swc).