senler-sdk v1.0.0
Senler SDK
Description
`SenlerSDK' is a TypeScript library for easy interaction with the Senler API. It provides a modular structure for working with various Senler resources, such as subscribers, mailing lists, messages, etc.
Installation
npm
npm install senler-sdk
Usage examples
Initializing the client API
To work with the API, you will need the access_token
and vk_group_id
of your VKontakte community.
import { SenlerApiClient } from "senler-sdk"
const client = new SenlerApiClient({
accessToken: "YOUR_ACCESS_TOKEN",
vkGroupId: "YOUR_VK_GROUP_ID",
})
Get subscribers
client.subscribers.get().then((res) => console.log(res))
Integration with passport
Installation
npm i passport passport-senler
Use api client for get subscribers with received access token
import express from 'express';
import passport from 'passport';
import { SenlerStrategy } from 'passport-senler';
passport.use(
new SenlerStrategy({
clientID: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
callbackURL: 'https://yourapp.com/auth/senler/callback',
})
);
const app = express();
app.get('/auth/senler', passport.authenticate('senler'));
app.get(
'/auth/senler/callback',
passport.authenticate('senler', {
failureRedirect: '/auth/senler/error',
session: false, // Disable session (senler does not used it)
}),
async (req, res) => {
const client = new SenlerApiClient({
accessToken: req.accessToken,
vkGroupId: "YOUR_VK_GROUP_ID",
})
res.json(await client.subscribers.get())
}
);
app.listen(3000, () => {
console.log('Server is starting on port: 3000');
});
Error handling
To handle errors correctly, use try-catch
blocks or .catch()
methods.
const client = new SenlerApiClient({
accessToken: "YOUR_TOKEN",
vkGroupId: "YOUR_VK_GROUP_ID",
})
const app = express();
app.get('/get', async (_req, res) => {
try {
res.json(await client.subscribers.get())
}
catch (error: any) {
res.send(error.message)
}
});
Errors implemented via success
, error_code
and error_message
(docs) are converted and throws out as an ApiError with the corresponding message.
Logging
Logging is based on pino, you can overwrite the default configuration.
Example:
const loggingConfig = {
level: 'info',
destination: pino.destination("./log.log"),
base: { pid: false },
transport: {
target: 'pino-pretty',
options: {
colorize: true,
indent: 4
}
}
}
const client = new SenlerApiClient(apiConfig, loggingConfig, retryConfig, cacheConfig);
Retrying
Retrying is based on axios-retry, you can overwrite the default configuration.
Example:
const retryConfig = {
retries: 3,
retryDelay(retryCount, error): number {
return axiosRetry.exponentialDelay(retryCount, error, 100);
}
}
const client = new SenlerApiClient(apiConfig, loggingConfig, retryConfig, cacheConfig);
Caching
Caching is based on cache-manager:
const cacheConfig = {
enabled: true,
manager: createCache({ ttl: 10_000 })
}
const client = new SenlerApiClient(apiConfig, loggingConfig, retryConfig, cacheConfig);
You can also provide custom cache config in any routes:
await client.subscribers.get({count: 30}, cacheConfig)
License
This project is licensed under the MIT license. See LICENSE for details.
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago