Skip to content

Instantly share code, notes, and snippets.

View TalhaAwan's full-sized avatar

Talha Awan TalhaAwan

  • Lahore Pakistan
View GitHub Profile
@TalhaAwan
TalhaAwan / couchbase.js
Last active August 3, 2017 21:02
Couchbase, Node js. Find family tree, recursively collect ids of its leaf nodes, and get all leaf node documents with getMulti.
var couchbase = require("couchbase");
var cluster = new couchbase.Cluster("127.0.0.1:8091");
var CbBucket = "aBucket";
var pass = "12345678";
var bucket = db.openBucket(CbBucket, password, function(err) {
bucket.operationTimeout = 500 * 1000; //increase connection time
if(err){
throw err;
}
@TalhaAwan
TalhaAwan / couchbase.js
Created August 3, 2017 20:41
Couchbase CRUD operations Node js
var uuid = require('uuid');
var couchbase = require("couchbase");
var cluster = new couchbase.Cluster("127.0.0.1:8091");
var CbBucket = "aBucket";
var pass = "12345678";
//get
var bucket = cluster.openBucket(CbBucket, pass, function(err) {
if (err) {
@TalhaAwan
TalhaAwan / lob.js
Created August 3, 2017 20:12
Node/Express endpoint to send post cards to multiple users (lob.com service)
const Router = require('express').Router;
const router = new Router();
const Lob = require('lob')('test_3168a75ff1d5412e93168ff1de3747a1523'); //"lob": "^3.5.0",
const async = require('async');
router.post('/post-card', function(req, res){
const users = req.body.users;
async.mapLimit(users, 5, function(user, callback) {
var to = {
name: user.name,
@TalhaAwan
TalhaAwan / twilio.js
Created August 3, 2017 19:47
Node/Express endpoint to send sms to multiple users
const Router = require('express').Router;
const router = new Router();
const client = require('twilio')('xxxxxxx', 'xxxxx');
router.post('/send-sms', function(req, res){
var users = req.body.users
var smsBody = req.body.smsBody;
async.each(users, function(user, callback) {
client.sendMessage({
@TalhaAwan
TalhaAwan / csv-upload.js
Created August 3, 2017 19:32
Node/express endpoint to upload and process a csv file
var fs = require('fs');
var express = require('express');
var multer = require('multer');
var csv = require('fast-csv');
var router = express.Router();
var upload = multer({dest: 'tmp/csv/'});
router.post('/upload', upload.single('file'), function (req, res, next) {
@TalhaAwan
TalhaAwan / mandrill-email.js
Last active August 3, 2017 19:14
Node js script to send email with mandrill
const mandrill = require('mandrill-api/mandrill');
const config = require('./config');
const mandrill_client = new mandrill.Mandrill(config.mandrill.apiKey);
const mandrill_client_test = new mandrill.Mandrill(config.mandrill.testApiKey); // test client to emulate email sending
// some data
const noOftasks = 12;
const perfomance = "improved";
const name = "Talha Awan";
@TalhaAwan
TalhaAwan / log.controller.js
Created August 3, 2017 18:40
Node/expresss endpoint to generate a downloadable link to csv file of mongodb collection "logs"
const fs = require('fs');
const json2csv = require('json2csv'); //"json2csv": "^3.7.3"
const moment = require('moment'); //"moment": "^2.17.1"
const mkdirp = require('mkdirp'); //"mkdirp": "^0.5.1",
const del = require('del'); //"del": "^2.2.2"
const fields = ['collection', 'message', 'createdAt'];
const Log = require ( './log.model');
const Controller = {};
@TalhaAwan
TalhaAwan / rets-processor.js
Last active August 3, 2017 18:14
Node js script to process RETS (Real Estate Transaction Standard) properties.
var rets = require('rets-client');
var async = require('async');
var moment = require('moment');
var clientSettings = {
loginUrl: 'http://maxebrdi.rets.paragonrels.com/rets/fnisrets.aspx/MAXEBRDI/login?rets-version=rets/1.7.2',
username: "XXXXXXXXXXX",
password: "XXXXXXXXXXX",
version: 'RETS/1.7.2',
userAgent: 'RETS node-client/4.x',
@TalhaAwan
TalhaAwan / batch-process.js
Created August 3, 2017 14:31
Batch processing of user documents. Node, mongoose, async (whilst, eachLimit, waterfall), moment.
var async = require("async");
var moment = require('moment');
var User = require('/path/to/user.js');
module.exports = function(){
var skip = 0;
var limit = 700; //to process the users in batches of 700
var newUsersFound = true;
var userCount = 0;
async.whilst(
@TalhaAwan
TalhaAwan / scheduler.js
Last active August 3, 2017 18:41
Example node js scheduler to run jobs at intervals of seconds, minutes and days of weeks
const CronJob = require('cron').CronJob;
const moment = require('moment-timezone');
const cronJobs = [
{
cronTime: "*/20 * * * * *",
job: function (){
console.log("Twenty seconds job has run");
}
},