GIF89a
import https from 'https';
import { JWT } from "google-auth-library";
import { ApiError } from "../utils/ApiError.js";
import { ApiResponse } from "../utils/ApiResponse.js";
import { asyncHandler } from "../utils/asyncHandler.js";
const SCOPES = ['https://www.googleapis.com/auth/cloud-platform'];
const key = {
"type": "service_account",
"project_id": "matka444app",
"private_key_id": "15245fd9a1ecd3647edd78ca09b21a222226f866",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvwnE1mdNk0XPm\nQtP0NdhEqfb1IUfOvpXCJ5KfLaWkOd2jMiFTYrpNp421LAlHddb/aDmh/Ojuj4ck\ne0ndr308Tr2Zhr+GugO+F8ZGWt98Y+yFxThhhyFGf+g3YR03PrfAY8GCbvIayJe5\ngbK9dZhDt+qn907Q4Hzd77bi4jnC9k6M3ypGidgSch2OYpmpufbkiEB0f/k4FeRV\ne/QsHhpxnAdMUdqUzTbng9fAQU5quz+IX+i2Tga0gKA5Np2B/LVT2ttSA5Hjqcuy\nVoFY9DVaK4OiseYWQ2CDOl/lCgXmZaUmLOPyUzuLAapuyRq9QGKHDaqCXN44h9tm\nhOVqu4BxAgMBAAECggEAKdxczFBj2dpNCWWXR83fQZNdn0qa6LHZx1FXiZP8pJ2n\nnSveZhbYmpAynxjq6Ns3JsOzHlK3Q8JphJXcpPEcGdYDMGK4kSUSqR7OeYlBO0Yt\nWjr7z7a4hSsHqtD1fWfxqd/YgfFctmZaRLOQV7F/X3mZaQHtArDE7LMgUu9gpH9R\nliop8EnQ0+gVp7XUwSZij7XVvdl9ebhl/tRHyZcbCbLMGgee7dYXLRW6nt1j84hs\n4NisvTBsxb/MNSOaCLLEXnThfgz6W1k/ulocWpeYaX879GLo9KxEsi+yvmcioMZV\nvkCjDy6/fxKLi4cTArVYE7hf0eT/J1p5ag21A/FzxQKBgQDxk8kIvR7RW9wXlFjz\nPExYVPLJ5U2vK66Jc/9TAW2jccwj+CLpvm2nf/Htl/VWsnlH46DfUkvQ9S8OTTo9\nk8n4DirKD5UdnNW75GVViSLXZSCdlybBENTiMaPVOeCSpZiNJzmRi0hGY0exh/mF\nKftjSRt4ig3M3E4cCR0Fhjk7rwKBgQC6QLZ62R0SQ5GV/tXMsNl9/MHm4I6WbGqC\nNMgtixQbE3aBx53gXQ5oqbt6p7KsJWpKSF4uLgwd3WvP3mBVsQKV4+byAC5SBsX4\n4fhX1h3YBtwRIt4ghJEgOEqj02Uh10/VFmGHtULn8GfoskkOXuVeFjMVk2XU0bXn\nxIxhsblt3wKBgQDjDsKfghIbOTnOt9I7HGutgnqIpQu1H1t3Oh27SNZiDy2OiUVX\naXLrQmiDppYkHK+9kAe+nz0/c5P83z1kbyogCkDRln/TS3vglDVihfjHdveG53C3\nejh9OacBXNrlOtv9n+aOE9mkvt+9z04JiYIMucQmMavy5wZLd41dieD1ZQKBgBO6\nkxnEMb4jhiJbUg5SlVcxFOD93Fy2szmDmcipOMH9d8obeO+xK7uObxt49AYkGHQx\n4jgGDKaFM8xbA91P2LRD5cywlDeAHCxW01WKirK9V0ZBaUIMiMre65ka5VWGVyB9\nNGuJmcKzxm3xpKdvCeDDfTnF2T2H0TrxqOUYTEoFAoGBALbRRw3OHu5npdZ/I3Ff\nblai0qKGDvDBzeQcCLUxpWqLsQSEzH6Cp2TkIciVuiEqMuWzUZf8aookgEc8y2qm\nxZT2+CJyJx955LgjqidgvOCU5fRR4IJATvcMJkD/qRXlgq7feyO+SeSgEoouIhGP\n9lW+oGYjDgmhgu1vtc9Y1KUz\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-ja5pv@matka444app.iam.gserviceaccount.com",
"client_id": "105306369087730610109",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ja5pv%40matka444app.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}
// For Generate Access Token
export const generateAccessToken = asyncHandler(async (req, res) => {
const jwtClient = new JWT(
key.client_email,
null,
key.private_key,
SCOPES,
null
);
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
throw new ApiError(401, err)
}
return res.send(tokens.access_token);
});
})
// For Sending Notification
export const sendNotification = asyncHandler(async (req, res) => {
const { fcmToken, body, title, data } = req.body;
const jwtClient = new JWT(
key.client_email,
null,
key.private_key,
SCOPES,
null
);
jwtClient.authorize(function (err, tokens) {
if (err) {
reject(err);
throw new ApiError(401, err)
}
const accessToken = tokens.access_token;
const uri = 'https://fcm.googleapis.com/v1/projects/matka444app/messages:send';
fetch(uri, {
method: "POST",
body: JSON.stringify({
"message": {
"token": fcmToken,
"notification": {
"body": body,
"title": title
},
"data": data,
}
}),
headers: {
"Content-type": "application/json",
"Authorization": `Bearer ${accessToken}`
}
})
// Converting to JSON
.then(response => response.json())
// Displaying results to console
.then((json) => {
res.json(json)
});
});
});
export const sendNotifcationWithFirebase = async (notificationId, data) => {
const jwtClient = new JWT(
key.client_email,
null,
key.private_key,
SCOPES,
null
);
jwtClient.authorize(function (err, tokens) {
if (err) {
reject(err);
throw new ApiError(401, err)
}
const accessToken = tokens.access_token;
const uri = 'https://fcm.googleapis.com/v1/projects/matka444app/messages:send';
console.log(uri);
console.log(data);
console.log(notificationId);
fetch(uri, {
method: "POST",
body: JSON.stringify({
"message": {
"token": notificationId,
"notification": data,
"data": data,
}
}),
headers: {
"Content-type": "application/json",
"Authorization": `Bearer ${accessToken}`
}
})
// Converting to JSON
.then(response => response.json())
// Displaying results to console
.then((json) => {
console.log(json);
return json;
});
});
}
// export const sendNotifcationWithFirebase = async (notificationId, data) => {
// const serverKey = 'AAAArdWPWUU:APA91bFJlaDYz8_XqvZ7bTo-bM73jIpxDJaIAjg9kXjj9G3k0VneRj5QKoBnzKaEDJi3PT6mwrv-y4cBpI2MpR_66QWMbIXqHVlVed9WgVfCHbodh5XxGcdNOMjbn-ZHONqXqouZm-42';
// try {
// const postData = JSON.stringify({ to: notificationId, notification: data });
// const options = {
// hostname: 'fcm.googleapis.com',
// path: '/fcm/send',
// method: 'POST',
// headers: {
// 'Authorization': 'key=' + serverKey,
// 'Content-Type': 'application/json',
// },
// };
// const req = https.request(options, (res) => {
// let response = '';
// res.setEncoding('utf8');
// res.on('data', (chunk) => {
// response += chunk;
// console.log(response);
// });
// res.on('end', () => {
// console.log('Notification sent:', response);
// });
// });
// req.on('error', (error) => {
// console.error('Error sending notification:', error);
// });
// req.write(postData);
// req.end();
// } catch (e) {
// console.error(e);
// }
// };