コード例 #1
0
ファイル: routes.js プロジェクト: JrEddie/Telescope
  _.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]);
    });

  });
コード例 #2
0
ファイル: api.js プロジェクト: daaaaan/meteor-stripe-native
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);
    
    });

});
コード例 #3
0
ファイル: routes.js プロジェクト: dchan3/OMGcast
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();
});
コード例 #4
0
ファイル: routes.js プロジェクト: JrEddie/Telescope
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");
  }
});
コード例 #5
0
ファイル: routes.js プロジェクト: JrEddie/Telescope
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));
});
コード例 #6
0
ファイル: routes.js プロジェクト: oro8oro/oroboro2
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);
});
コード例 #7
0
ファイル: picker.js プロジェクト: Astrocoders/botpay
import { Picker } from 'meteor/meteorhacks:picker';
import bodyParser from 'body-parser';

Picker.middleware(bodyParser.json());
Picker.middleware( bodyParser.urlencoded( { extended: false } ) );
コード例 #8
0
ファイル: listener.js プロジェクト: Astrocoders/botpay
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();
});