mixin-node-client
v0.11.0
Published
Node.js SDK for Mixin Network
Downloads
16
Maintainers
Readme
mixin-node-client
Node.js SDK for Mixin Network, heavily inspired by mixin-node, but is much more developer friendly
Table of Contents
Install
yarn add mixin-node-client
# OR npm install mixin-node-client -S
Usage
1. Generate Config
Steps to use generate config for dapp:
- Create a dapp on developers.mixin.one, get clientId and clientSecret(the result when Click to generate a new secret)
- Generate config from a new session info of your dapp (the result when Click to generate a new session) using mixin-cli (a command line tool by me).
Config file format, remember to replace clientId
and clientSecret
with yours:
// Generated with awesome https://github.com/wangshijun/mixin-cli
module.exports = {
clientId: '<PUT YOUR DAPP CLIENT_ID HERE>',
clientSecret: '<PUT YOUR DAPP CLIENT_SECRET HERE>',
assetPin: '310012',
sessionId: '621c905b-1739-45e7-b668-b5531dd83646',
aesKey: '56GcGs2EFHBPV2Xsb/OiwLdgjGt3q53JcFeLmbUutEk=',
privateKey: `-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCsNaGbDx1UeKrTux01nC6R7/bu2GUELe6Q2mBSPymkZW2fpiaO
FjkTI1MkEE8Eq1kGm/+6vAP84LMXG/W49UqZTBkKkrQ=
-----END RSA PRIVATE KEY-----`,
};
2. HttpClient
HttpClient
provides wrapper for all API supported by mixin network and mixin messenger, such as pin/user/asset/snapshot:
const { HttpClient } = require('mixin-node-client');
const config = require('./config');
const client = new HttpClient(config);
const recipientId = 'ca630936-5af6-427e-ac4a-864a4c64f372'; // UserId
const senderId = '7701e7bf-2a86-4655-982e-023564fa8945'; // UserID
const assetId = '965e5c6e-434c-3fa9-b780-c50f43cd955c'; // CNB
(async () => {
const assets = await client.getAssets();
const verifyPin = await client.verifyPin(config.assetPin);
const user = await client.getUser(senderId);
console.log({ assets, verifyPin, user });
})();
Full API list supported by HttpClient
:
- getUserAssets, get asset list owned by user
- getUserAsset, get asset detail owned by user
- getNetworkAssets, get top asset list by mixin network
- getNetworkAsset, get top asset detail by mixin network
- getWithdrawAddress, get withdraw address
- createWithdrawAddress, create withdraw address
- deleteWithdrawAddress, delete withdraw address
- withdraw, request withdraw from mixin network
- deposit, get deposit address for asset
- getSnapshots, get network snapshot list
- getSnapshot, get network snapshot detail
- verifyPin, verify asset pin
- updatePin, update/create asset pin
- createTransfer, create transfer with an asset
- getTransfer, read transfer detail
- verifyPayment, verify transfer state
- getProfile, get user profile
- updatePreference, update user preference
- updateProfile, update user profile
- createUser, create user
- getUser, get user by id
- getUsers, get multiple users by id
- getFriends, get friend list
- getContacts, get contact list
- createConversation, create new conversation
- readConversation, read conversation detail
- sendMessage, send raw message to specific conversation, see next section for message sender util.
Working example for HttpClient
can be found HERE
Message Sender Util
Because we can send messages to a conversation, HttpClient
provide neat methods to send all kinds of message to Mixin Messenger:
console.log(client.getMessageSenders());
// [ 'sendText',
// 'sendImage',
// 'sendVideo',
// 'sendData',
// 'sendSticker',
// 'sendContact',
// 'sendButton',
// 'sendButtons',
// 'sendApp' ]
const text = await client.sendText({
conversationId: conversation.conversation_id,
data: 'Hello from node.js new client sdk',
});
const button = await client.sendButton({
conversationId: conversation.conversation_id,
data: { label: 'Open Mixin', color: '#FF0000', action: 'https://mixin.one' },
});
For syntax of sending messages, see working example HERE.
3. SocketClient
SocketClient
provide basic wrapper for Mixin Messenger WebSocket Messages, you can use it to listen and react to socket messages.
const { SocketClient } = require('mixin-node-client');
const config = require('./config');
const client = new SocketClient(config);
socket.on(
'message',
socket.getMessageHandler(message => {
console.log('Message Received', message);
if (message.data && message.data.category === 'PLAIN_TEXT' && message.data.data.toLowerCase() === 'hi') {
// We support `sendText`, `sendButton`, `sendImage` here
return socket.sendText('Hi there!', message);
}
return Promise.resolve(message);
})
);
Working example for SocketClient
can be found HERE
Same set of message sender utils are also supported by SocketClient
(Note: parameters are different for message sender utils of HttpClient
and SocketClient
, because we have the conversationId from the onMessage
callback):
socket.sendText('Hi there!', message);
socket.sendButton({ label: 'Open Mixin', color: '#FF0000', action: 'https://mixin.one' }, message);
Debugging
If you are curious what happened during each API call, try run example code with following command:
DEBUG=mixin-node-client:* node examples/http.js
DEBUG=mixin-node-client:* node examples/socket.js
DEBUG=mixin-node-client:* node examples/message.js
The mixin dapp included in the examples folder can be found with the following qrcode:
Contributors
| Name | | -------------- | | wangshijun |
License
MIT © wangshijun