npm install canvas
const { createCanvas, loadImage } = require('canvas')
const canvas = createCanvas(50, 50)
const ctx = canvas.getContext('2d')
loadImage('https://habrastorage.org/r/w60/webt/5d/fc/84/5dfc84d27a4a2949249978.jpeg')
.then((image) => {
ctx.drawImage(image, 0, 0, 50, 50);
ctx.globalCompositeOperation = 'destination-in';
ctx.beginPath();
ctx.arc(25, 25, 25, 0, Math.PI * 2);
ctx.closePath();
ctx.fill();
console.log(canvas.toDataURL()) // Выводим в консоль Data URL
})
app.get('/products', function (req, res) {
if (req.query.ajax = 1) { // Если есть get параметр ajax = 1
// Делаете что-то и возвращаете не целую страничку, а только то что нужно добавить
} else { // Если нет
// Делаете что-то и возвращаете целую html страничку
}
});
export enum KeyboardColor {
PRIMARY = 'primary',
DEFAULT = 'default',
NEGATIVE = 'negative',
POSITIVE = 'positive'
}
/**
* Класс для создания клавиатуры для бота
*/
export default class Keyboard {
private obj: any
constructor(oneTime = false, inline = false) { this.obj = { one_time: oneTime, inline: inline, buttons: [] } }
addButton(label: string, color: string = KeyboardColor.DEFAULT, payload = null) {
if (!this.obj.buttons.length) this.obj.buttons.push([])
let lastRow = this.obj.buttons[this.obj.buttons.length - 1]
if (lastRow.length === 4) throw new Error('Maximum amount of buttons in one row = 4')
lastRow.push({ action: { type: 'text', label, payload }, color })
return this
}
addRow() {
if (this.obj.buttons.length === 10) throw new Error('Maximum amount of rows = 10')
this.obj.buttons.push([])
return this
}
toString() { return JSON.stringify(this.obj) }
}
const binaryData = new Buffer(json.data.file_content, 'base64').toString('binary');
fs.writeFileSync(`./download/${item.file_name}`, json.data.file_content, 'base64', function(err) {
console.log(err);
});
CORS: «Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.»
CORS: «Ответ на предварительный запрос не проходит проверку контроля доступа: перенаправление не разрешено для предварительного запроса.»