Skip to content

Instantly share code, notes, and snippets.

View ancyrweb's full-sized avatar
🏠
Working from home

Anthony Cyrille ancyrweb

🏠
Working from home
View GitHub Profile
async generateIDToken(uid: string) {
const customToken = await this.admin.auth().createCustomToken(uid);
const res = await rp({
url: `https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=${this.apikey}`,
method: 'POST',
body: {
token: customToken,
returnSecureToken: true,
},
json: true,
import { BullModule } from '@nestjs/bull';
import { Module } from '@nestjs/common';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CommentEmailGenerator } from './comment.email-generator';
import { CommentNotifier } from './comment.notifier';
import { EmailProcessor } from './email.processor';
import { EmailService } from './email.service';
import { InjectQueue } from '@nestjs/bull';
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { Queue } from 'bull';
import { CommentEvents, NewCommentEvent } from './comment.events';
import { CommentEmailGenerator } from './comment.email-generator';
import { createEmailJob } from './email.processor';
@Injectable()
import { Injectable } from '@nestjs/common';
import * as nodemailer from 'nodemailer';
import Mail from 'nodemailer/lib/mailer';
export type SendEmailData = {
subject: string;
from: string;
to: string;
body: string;
};
import { Process, Processor } from '@nestjs/bull';
import { Job } from 'bull';
import { EmailService, SendEmailData } from './email.service';
// We create an intermediary type EmailJob in case our EmailProcessor
// needs more information than the actual e-mail service.
// Just a level of indirection for now.
export type EmailJob = SendEmailData;
export const createEmailJob = (data: EmailJob): EmailJob => data;
import * as React from 'react';
import { Injectable } from '@nestjs/common';
import {
render,
MjmlBody,
Mjml,
MjmlHead,
MjmlFont,
MjmlPreview,
MjmlSection,
import { Body, Controller, Post } from '@nestjs/common';
import { AppService } from './app.service';
import { CommentDTO } from './comment.interfaces';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Post()
addComment(@Body() data: CommentDTO) {
@ancyrweb
ancyrweb / docker-compose.yml
Last active July 8, 2022 17:15
E-mail Workflow docker-compose.yml
version: '3'
services:
mailcatcher:
image: 'schickling/mailcatcher'
ports:
- '7001:1080' # UI
- '7002:1025' # SMTP
redis:
image: 'redis'
ports:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
<title>Hello World</title>
</head>
import { useCallback, useState } from "react";
import { StyleSheet, Text, View, ScrollView } from "react-native";
import Modal from "react-native-modal";
export default function App() {
const [visible, setVisible] = useState(false);
const showModal = useCallback(() => setVisible(true), []);
const hideModal = useCallback(() => setVisible(false), []);
return (