Created
December 20, 2015 20:11
-
-
Save trepidity/db941c376b023fc69bfd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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