Node.js SDK for Mixin Network, heavily inspired by mixin-node, but is much more developer friendly
yarn add mixin-node-client
# OR npm install mixin-node-client -S
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-----`,
};
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
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.
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);
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:
Name |
---|
wangshijun |
MIT © wangshijun