Skip to content
This repository has been archived by the owner on Sep 27, 2021. It is now read-only.

Commit

Permalink
rough promotion list with failing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
garrensmith committed Feb 12, 2011
1 parent 806840c commit e49250f
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 30 deletions.
2 changes: 1 addition & 1 deletion LICENSE
@@ -1,4 +1,4 @@
Copyright (c) 2010 Garren Smith
Copyright (c) 2011 Garren Smith

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
Expand Down
29 changes: 17 additions & 12 deletions examples/demo.js
@@ -1,19 +1,24 @@
var Madmimi = require('../lib/index');

var madmimi = new Madmimi(process.env['email'],process.env["madmimi_api_key"], true);

var madmimi = new Madmimi("email","api_key");
/*var options = {
promotion_name:"Test Promotion",
recipient:"Jimi Hendrix <jimi@electricladyland.com>",
subject:"Test Promotion",
from:"no-reply@guitargear.com",
raw_html:"<html><head><title>Great promotion!</title></head><body>Cool guitar stuff[[tracking_beacon]]</body></html>"
};
var options = {
promotion_name:"Test Promotion",
recipient:"Jimi Hendrix <jimi@electricladyland.com>",
subject:"Test Promotion",
from:"no-reply@guitargear.com",
raw_html:"<html><head><title>Great promotion!</title></head><body>Cool guitar stuff[[tracking_beacon]]</body></html>"
};

madmimi.sendMail(options, function (msg) {
madmimi.sendMail(options, function (msg) {
console.log("email send, the id is: " + msg);
});
});
madmimi.mailStatus(2861240550, function (msg) {
madmimi.mailStatus(2861240550, function (msg) {
console.log("status: " + msg);
});*/


madmimi.promotions(function (promotions) {
console.dir(promotions);
});
73 changes: 56 additions & 17 deletions lib/index.js
@@ -1,5 +1,7 @@
var https = require('https'),
querystring = require('querystring');
querystring = require('querystring'),
xml2js = require('xml2js');


var Madmimi = module.exports = function (username, api_key, debug) {

Expand All @@ -14,20 +16,20 @@ var Madmimi = module.exports = function (username, api_key, debug) {
}

var self = this;

self.username = username,
self.api_key = api_key;
self.api_key = api_key;

self.request = function(requestOptions, body, cb) {

self.request = function(requestOptions, body, cb) {

if(!cb) { cb = function () {} };

var httpBody = undefined
if (arguments.length > 2) {
httpBody = body;
}

if (arguments.length > 2) {
httpBody = body;
}

var req = https.request(requestOptions, function(res) {
res.body = "";

Expand Down Expand Up @@ -71,29 +73,66 @@ var Madmimi = module.exports = function (username, api_key, debug) {
};

self.request(requestOptions, optionsParameterized, cb);

};

self.mailStatus = function(id, cb) {
options = {
username: self.username,
username: self.username,
api_key: self.api_key
};
};

optionsParameterized = querystring.stringify(options, "&", "=");
transactionPath = '/mailers/status/'+ id +'?' + optionsParameterized;

var requestOptions = {
var requestOptions = {
host: 'madmimi.com',
port: '443',
path: transactionPath,
method: 'GET',
};

self.request(requestOptions, optionsParameterized, cb);
};


self.promotions = function (cb) {
options = {
username: self.username,
api_key: self.api_key
};

optionsParameterized = querystring.stringify(options, "&", "=");
transactionPath = '/promotions.xml' +'?' + optionsParameterized;

var requestOptions = {
host: 'api.madmimi.com',
port: '443',
path: transactionPath,
method: 'GET',
};

xml_parser_cb = function (data) {
logger("promotions_xml: " + data);

var parser = new xml2js.Parser();

parser.addListener('end', function(result) {
logger("result_js:");
logger(result);
var promotions = result.promotion;

cb(promotions);
});

parser.parseString(data);

};

self.request(requestOptions, optionsParameterized, xml_parser_cb);

};


return self;
};

Expand Down
34 changes: 34 additions & 0 deletions spec/promotions_spec.js
@@ -0,0 +1,34 @@
var describe = require('Jody').describe,
Madmimi = require('../lib/index.js');

var madmimi = "";
var email_options = {
promotion_name:"Test Promotion",
recipient:"Jimi Hendrix <jimi@electricladyland.com>",
subject:"Test Promotion",
from:"no-reply@guitargear.com",
raw_html:"<html><head><title>Great promotion!</title></head><body>Cool guitar stuff[[tracking_beacon]]</body></html>"
};


describe("Promotions").
beforeEach( function () {
madmimi = new Madmimi("fake@email.com", "fake-api-key");
}).
it("Should create http request for all promotions", function (atEnd) {
var requestOptions;

madmimi.request = function (options, body) {
requestOptions = options;
};

madmimi.promotions(function () {});

atEnd(function () {
requestOptions.host.should().beEqual('madmimi.com');
requestOptions.port.should().beEqual('443');
requestOptions.path.should().beEqual('/mailers/status/1234?username=fake%40email.com&api_key=fake-api-key');
requestOptions.method.should().beEqual('GET');
})
});

0 comments on commit e49250f

Please sign in to comment.