_.forEach(NovaEmail.emails, (email, key) => { // template live preview routes Picker.route(email.path, (params, req, res) => { let html; // if email has a custom way of generating test HTML, use it if (typeof email.getTestHTML !== "undefined") { html = email.getTestHTML.bind(email)(params); } else { // else get test object (sample post, comment, user, etc.) const testObject = email.getTestObject(params._id); // get test object's email properties const properties = email.getProperties(testObject); // then apply email template to properties, and wrap it with buildTemplate html = NovaEmail.buildTemplate(NovaEmail.getTemplate(email.template)(properties)); } // return html res.end(html); }); // raw template Picker.route("/email/template/:template", (params, req, res) => { res.end(NovaEmail.templates[params.template]); }); });
import { Meteor } from 'meteor/meteor'; import bodyParser from 'body-parser'; import { Picker } from 'meteor/meteorhacks:picker'; import { handleWebhook } from './handler.js'; Picker.middleware(bodyParser.json()); Picker.route('/api/webhooks/:provider', ({ provider }, request, response) => { handleWebhook({ provider, request }).then((result) => { response.statusCode = 200; response.end(result); }).catch((error) => { console.warn(error); response.statusCode = 500; response.end(error); }); });
import { Picker } from 'meteor/meteorhacks:picker'; import { RSS } from 'meteor/rss'; Picker.route('/feed.xml', function(params, req, res, next) { var feed = new RSS({ title: 'New 808 Mixes', description: 'The latest mixes from 808 Mixtapes, Honolulu, Hawaii.' }); res.write(feed.xml()); res.end(); });
import { runCallbacksAsync } from 'meteor/nova:core'; import escapeStringRegexp from 'escape-string-regexp'; import { Picker } from 'meteor/meteorhacks:picker'; import Posts from '../collection.js'; Picker.route('/out', ({ query}, req, res, next) => { if(query.url){ // for some reason, query.url doesn't need to be decoded /* If the URL passed to ?url= is in plain text, any hash fragment will get stripped out. So we search for any post whose URL contains the current URL to get a match even without the hash */ const post = Posts.findOne({url: {$regex: escapeStringRegexp(query.url)}}); if (post) { const ip = req.headers && req.headers['x-forwarded-for'] || req.connection.remoteAddress; runCallbacksAsync('posts.click.async', post, ip); res.writeHead(301, {'Location': query.url}); res.end(); } else { // don't redirect if we can't find a post for that link res.end('Invalid URL'); } } else { res.end("Please provide a URL"); } });
import { Picker } from 'meteor/meteorhacks:picker'; import { servePostsApi } from './api.js'; // for backwards compatibility's sake, accept a "limit" segment Picker.route('/api/:limit?', function(params, req, res, next) { if (typeof params.limit !== "undefined") { params.query.limit = params.limit; } res.end(servePostsApi(params.query)); });
import { Picker } from 'meteor/meteorhacks:picker'; import Files from '../files'; Picker.route('/api/file/:_id/:scale?', function(params, req, res, next) { let file = Files.findOne(params._id), headers = {'Content-type': 'image/svg+xml', 'Access-Control-Allow-Origin' : '*'}, scale = params.scale || 1; let script = `<svg width="${ file.width*scale }" height="${ file.height*scale }" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="${ file._id }"><g id="viewport" transform="matrix(${ scale } 0 0 ${ scale } 0 0)">${ file.cache }</g></svg>`; res.writeHead(200, headers); res.end(script); });
import { Picker } from 'meteor/meteorhacks:picker'; import bodyParser from 'body-parser'; Picker.middleware(bodyParser.json()); Picker.middleware( bodyParser.urlencoded( { extended: false } ) );
Picker.route('/bot_postback', function(params, req, res, next){ if ( req.method === 'GET' ) { verifyRequest(req, res); return false; } const messagingEvents = req.body.entry[0].messaging const pageFbId = req.body.entry[0].id; const payoutPattern = /pagar\s(\d+)\s/g; messagingEvents.forEach(event => { if (!_.has(event.message, 'text')) { return false; } const text = event.message.text; const sender = event.sender.id; const page = Pages.findOne({ id: pageFbId, }); if(!payoutPattern.test(text)){ sendTextMessage({ sender, text: 'Oi, para enviar dinheiro diga "pagar X reais"', pageAccessToken: page.access_token, }); } else { sendTextButtonMessage({ sender, title: 'Clique aqui para efetuar seu pagamento', buttons: [ { type: 'web_url', url: 'https://www.simplify.com/commerce/masterPass/index?key=sbpb_YWY3MmVjZTctZjJlMC00MjBmLTkyM2EtZmY3OTgxOWM4MDM4&token=', title: 'Pagar com MasterPass', }, ], pageAccessToken: page.access_token, }); } }); res.writeHead(200); res.end(); });