Added carrier support. typpo/textbelt#56
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
var express = require('express')
|
||||
, app = express()
|
||||
, _ = require('underscore')
|
||||
, carriers = require('../lib/carriers.js')
|
||||
, crypto = require('crypto')
|
||||
, exec = require('child_process').exec
|
||||
, fs = require('fs')
|
||||
@@ -83,25 +84,29 @@ app.get('/providers/:region', function(req, res) {
|
||||
});
|
||||
|
||||
app.post('/text', function(req, res) {
|
||||
if (req.body.getcarriers != null && (req.body.getcarriers == 1 || req.body.getcarriers.toLowerCase() == 'true')) {
|
||||
res.send({success:true, carriers:Object.keys(carriers).sort()});
|
||||
return;
|
||||
}
|
||||
var number = stripPhone(req.body.number);
|
||||
if (number.length < 9 || number.length > 10) {
|
||||
res.send({success:false, message:'Invalid phone number.'});
|
||||
return;
|
||||
}
|
||||
textRequestHandler(req, res, number, 'us', req.query.key);
|
||||
textRequestHandler(req, res, number, req.body.carrier, 'us', req.query.key);
|
||||
});
|
||||
|
||||
app.post('/canada', function(req, res) {
|
||||
textRequestHandler(req, res, stripPhone(req.body.number), 'canada', req.query.key);
|
||||
textRequestHandler(req, res, stripPhone(req.body.number), req.body.carrier, 'canada', req.query.key);
|
||||
});
|
||||
|
||||
app.post('/intl', function(req, res) {
|
||||
textRequestHandler(req, res, stripPhone(req.body.number), 'intl', req.query.key);
|
||||
textRequestHandler(req, res, stripPhone(req.body.number), req.body.carrier, 'intl', req.query.key);
|
||||
});
|
||||
|
||||
// App helper functions
|
||||
|
||||
function textRequestHandler(req, res, number, region, key) {
|
||||
function textRequestHandler(req, res, number, carrier, region, key) {
|
||||
var ip = req.connection.remoteAddress;
|
||||
if (!ip || ip === '127.0.0.1') {
|
||||
ip = req.header('X-Real-IP');
|
||||
@@ -115,6 +120,14 @@ function textRequestHandler(req, res, number, region, key) {
|
||||
res.send({success:false, message:'Number and message parameters are required.'});
|
||||
return;
|
||||
}
|
||||
if (carrier != null) {
|
||||
carrier = carrier.toLowerCase();
|
||||
if (carriers[carrier] == null) {
|
||||
res.send({succes:false, message:'Carrier ' + carrier + ' not supported! POST getcarriers=1 to '
|
||||
+ 'get a list of supported carriers'});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var message = req.body.message;
|
||||
if (message.indexOf(':') > -1) {
|
||||
@@ -150,7 +163,7 @@ function textRequestHandler(req, res, number, region, key) {
|
||||
response_obj = response_obj || {};
|
||||
|
||||
// Time to actually send the message
|
||||
text.send(number, message, region, function(err) {
|
||||
text.send(number, message, carrier, region, function(err) {
|
||||
if (err) {
|
||||
mpq.track('sendText failed', tracking_details);
|
||||
res.send(_.extend(response_obj,
|
||||
|
Reference in New Issue
Block a user