Skip to content

Instantly share code, notes, and snippets.

@trepidity
Created December 20, 2015 20:11
Show Gist options
  • Select an option

  • Save trepidity/db941c376b023fc69bfd to your computer and use it in GitHub Desktop.

Select an option

Save trepidity/db941c376b023fc69bfd to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
/**
* Module dependencies.
*/
//"use strict";
var inquirer = require("inquirer");
var Rx = require('rx');
var request = require("request");
console.log("Hi, welcome to Frank.");
var profile_questions = [
{
type: "input",
name: "email",
message: "What's your email address",
validate: function( value ) {
var pass = value.match(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i);
if (pass) {
return true;
} else {
return "Please enter a valid email address";
}
}
}];
var list_questions = [
{
type: "list",
name: "prize",
message: "For leaving a comments, you get a freebie",
choices: [ "cake", "fries" ],
when: function( answers ) {
return answers.comments !== "Nope, all good!";
}
}];
var questions = [
{
type: "confirm",
name: "createProfile",
message: "Do you want to create a new profile?",
default: false
},
{
type: "input",
name: "email",
message: "What's your email address",
validate: function( value ) {
var pass = value.match(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i);
if (pass) {
return true;
} else {
return "Please enter a valid email address";
}
}
},
{
type: "list",
name: "prize",
message: "For leaving a comments, you get a freebie",
choices: [ "cake", "fries" ],
when: function( answers ) {
return answers.comments !== "Nope, all good!";
}
}
];
var declarativeQuestions = [{
name: 'firstName',
message: 'What is your first name?'
}];
var rxQuestions = Rx.Observable.create(function( obs ) {
obs.onNext({
name: 'firstName',
message: 'What is your first name?'
})
obs.onNext({
name: 'firstName',
message: 'What is your first name?'
})
obs.onCompleted();
});
// inquirer.prompt( rxQuestions, function( answers ) {
// console.log("\nOrder receipt:");
// console.log( JSON.stringify(answers, null, " ") );
// });
inquirer.prompt({
type: "list",
name: "chocolate",
message: "What's your favorite chocolate?",
choices: [ "Mars", "Oh Henry", "Hershey" ]
}, function( answers ) {
console.log (answers);
inquirer.prompt({
type: "list",
name: "beverage",
message: "And your favorite beverage?",
choices: [ "Pepsi", "Coke", "7up", "Mountain Dew", "Red Bull" ]
});
});
// list entries that a profile has made
function list_entries()
{
// need to properly handle the profile ID
make_request('profiles/1/entries')
}
// add an entry
function add_entry(entry)
{
// need to properly handle the profile ID
var d = { "data":
{ "type": "entries",
"relationships": {
"profile":
{ "data":
{ "type": "profiles", "id": "1" }
}
},
"attributes": {
"received": true,
"note": entry,
"rating": 4
}
}
}
submit_request(d, 'entries')
}
// create a profile
function create_profile()
{
// need to properly handle these options
var d = {"data": {"type":"profiles", "attributes":{"firstname":"John", "lastname":"Doe", "email":"[email protected]"}}}
// fire request
submit_request(d, 'profiles');
}
// submit a GET request to the API
function make_request(path)
{
request({
url: url + path,
method: 'GET',
json: true,
headers: {
"content-type": "application/vnd.api+json",
"accept": "application/json",
}
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body['data'])
}
else {
console.log(body)
console.log("response.statusCode: " + response.statusCode)
}
})
}
// submit the POST request to the API
function submit_request(req_data, path, method)
{
request({
url: url + path,
method: 'POST',
json: true,
headers: {
"content-type": "application/vnd.api+json",
"accept": "application/json",
},
body: req_data //JSON.stringify(requestData)
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body)
}
else {
console.log(body)
console.log("response.statusCode: " + response.statusCode)
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment