Advertisement
derpvera

Untitled

Apr 17th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 15.76 KB | None | 0 0
  1. <<<<<<< HEAD
  2. var User = require('../models/user')
  3. var Item = require('../models/item')
  4. var Allergy = require('../models/allergy')
  5. var Recipe = require('../models/recipe')
  6. var config = require("../../config");
  7. var request = require("request");
  8.  
  9.  
  10. module.exports = function(app, express,passport){
  11.  
  12.     //get an instance of the express
  13.  
  14.     var apiRouter = express.Router();
  15.  
  16.     //middleware to use for all requests
  17.     apiRouter.use(function(req,res,next){
  18.         //do logging
  19.         console.log('Somebody just came to our app!');
  20.         next();
  21.     });
  22.  
  23.     //test route to make sure everything is working
  24.     // accessed at GET http://localhost:80/api
  25.     apiRouter.get('/',function(req,res){
  26.     res.json({message: 'hooray! Welcome to our ap!'});
  27.     });
  28.     //--------------------------------------
  29.     //more routes for our API will happen here
  30.  
  31.  
  32.     //on routes that end in /users
  33.     //---------------------------------
  34.     apiRouter.route('/users')
  35.     //create a user(accessed at POST http://localhost:80/api/user)
  36.     .post(function(req,res){
  37.  
  38.         //create a new instance of the User model
  39.         var user = new User();
  40.  
  41.         //set the users information(comes from the request)
  42.         user.name = req.body.name;
  43.         user.username = req.body.username;
  44.         user.password = req.body.password;
  45.         user.token = (Math.random()*1e128).toString(36)
  46.         user.token_expiration = Date.now() + (36000 * 60 * 24 * 60) // 2 months for now
  47.                 user.date_registered = Date.now();
  48.         //initialize all user allergies to false
  49.         user.allergic_to_milk = false;
  50.         user.allergic_to_eggs = false;
  51.         user.allergic_to_fish = false;
  52.         user.allergic_to_shellfish = false;
  53.         user.allergic_to_tree_nuts = false;
  54.         user.allergic_to_peanuts = false;
  55.         user.allergic_to_wheat = false;
  56.         user.allergic_to_soybeans = false;
  57.         user.allergic_to_gluten = false
  58.  
  59.         //save the user and check for errors
  60.         user.save(function(err){
  61.             if(err){
  62.                 //duplicate entry
  63.                 if(err.code == 11000)
  64.                     return res.json({success:false, message: 'A user with that username already exists.'});
  65.  
  66.                     else
  67.                         return res.send(err);
  68.                 }
  69.             res.json({success: true, message: 'User created!'});
  70.         });
  71.     })
  72.  
  73.     //update user
  74. .put(function(req,res){
  75.     //find the user we want to update
  76.     if(req.query.username){
  77.  
  78.         User.findOne({"username":req.query.username}, function(err,user){
  79.         if(User.length != 0){
  80.             if(err)
  81.                 res.json({"err": err});
  82.                 //return the user
  83.             else{
  84.                 //update only info only if it's new
  85.                 if(req.body.name)//update name
  86.                     user.name = req.body.name;
  87.  
  88.                 if(req.body.password)//update password
  89.                     user.password = req.body.password;
  90.  
  91.                 if(req.body.allergic_to_milk)//upate allergy to milk
  92.                     user.allergic_to_milk = req.body.allergic_to_milk;
  93.  
  94.                 if(req.body.allergic_to_eggs)//upate allergy to eggs
  95.                     user.allergic_to_eggs = req.body.allergic_to_eggs;
  96.  
  97.                 if(req.body.allergic_to_fish)//upate allergy to fish
  98.                     user.allergic_to_fish = req.body.allergic_to_fish;
  99.  
  100.                 if(req.body.allergic_to_shellfish)//upate allergy to shellfish
  101.                     user.allergic_to_shellfish = req.body.allergic_to_shellfish;
  102.  
  103.                 if(req.body.allergic_to_tree_nuts)//upate allergy to tree nuts
  104.                     user.allergic_to_tree_nuts = req.body.allergic_to_tree_nuts;
  105.  
  106.                 if(req.body.allergic_to_peanuts)//upate allergy to peanuts
  107.                     user.allergic_to_peanuts = req.body.allergic_to_peanuts;
  108.  
  109.                 if(req.body.allergic_to_wheat)//upate allergy to wheat
  110.                     user.allergic_to_wheat = req.body.allergic_to_wheat;
  111.  
  112.                 if(req.body.allergic_to_soybeans)//upate allergy to soybeans
  113.                     user.allergic_to_soybeans = req.body.allergic_to_soybeans;
  114.  
  115.                 if(req.body.allergic_to_gluten)//upate allergy to gluten
  116.                     user.allergic_to_gluten = req.body.allergic_to_gluten;
  117.  
  118.                 //save the user
  119.                 user.save(function(err) {
  120.                 if(err){
  121.                         res.json({err:"Error! Can't save"});
  122.                 }
  123.                 else{
  124.                         res.json({message: 'User updated!'});
  125.                     }
  126.                         });//end user.save(function(err)
  127.                 }
  128.  
  129.         }
  130.         else{res.json({err:'nothing to be updated!'});
  131.     }
  132.     })
  133. }})
  134.  
  135. //end update
  136.  
  137.     .get(function(req,res){
  138.         if(req.query.username){
  139.  
  140.             User.find({ "username":req.query.username  }, function(err,user){
  141.             if(User.length != 0){
  142.                 if(err)
  143.                     res.json({"err": err});
  144.                     //return the user
  145.                 else{
  146.  
  147.                     res.json(user);
  148.             }
  149.             }
  150.             else{
  151.                 res.json({message: 'Username not found'});
  152.             }
  153.             });
  154.  
  155.         }
  156.         else{
  157.  
  158.         //get all users
  159.             User.find(function(err, users){
  160.                 if(err)
  161.                     return res.json({"err": err});
  162.                 else
  163.  
  164.                     res.json(users);
  165.                 });
  166.  
  167.  
  168.     }
  169.  
  170.     });
  171.  
  172.     apiRouter.post('/login', function(req, res){
  173.  
  174.         var query = User.findOne({username: req.body.username});
  175.         query.select("username password token");
  176.         var promise = query.exec();
  177.  
  178.         promise.then(function(user){
  179.             if(!user){
  180.                 res.json({
  181.                     success: false,
  182.                     message: "Authentication failed. No user found."
  183.                 });
  184.             } else if (user) {
  185.     //          user.save();
  186.                 // check password
  187.                 var validPassword = user.comparePassword(req.body.password);
  188.                 if(!validPassword){
  189.                     res.json({
  190.                         success: false,
  191.                         message: 'Authentication failed. Wrong Password'
  192.                     });
  193.                 } else {
  194.  
  195.  
  196.                     var local_token = user.token || "In_Development"
  197.                     res.json({
  198.                         success: true,
  199.                         message: 'Successsssss',
  200.                         token: local_token
  201.                     });
  202.  
  203.                     //last logged saved update begin
  204.  
  205.                     user.last_logged = Date.now()
  206.                     user.save(function(err){
  207.                         if(err)
  208.                             return res.json({"err":err });
  209.                         else
  210.                             console.log("date saved")
  211.  
  212.                     })
  213.  
  214.                 //update end
  215.  
  216.                 }
  217.             }
  218.  
  219.  
  220.         })
  221.         .catch(function(err){
  222.             res.json({
  223.                 "success": false,
  224.                 "message": err
  225.             });
  226.         });
  227.     });
  228.  
  229.     apiRouter.route('/users/:user_id')
  230.         //get the user with that id
  231.         //(accessed at GET http://localhost:8080/api/users/:user_id)
  232.         .get(function(req, res){
  233.             User.findById(req.params.user_id, function(err,user){
  234.                 if(err)
  235.                     res.send(err);
  236.  
  237.                 //return that user
  238.                 res.json(user);
  239.             });
  240.         })
  241.         //update the user with this id
  242.         //(accessed at PUT http://localhost:8080/api/users/:user_id)
  243.  
  244.         .put(function(req, res){
  245.  
  246.             //use our model to find the user we want
  247.             User.findById(req.params.user_id, function(err,user){
  248.                 if(err)
  249.                     res.json({"err": err});
  250.  
  251.                 //update the user info only if its new
  252.                 if(req.body.name)
  253.                     user.name = req.body.name;
  254.                 if(req.body.username)
  255.                     user.username = req.body.username;
  256.                 if(req.body.password)
  257.                     user.password = req.body.password;
  258.                 //save the user
  259.                 user.token_expiration = new Date();
  260.                 user.save(function(err){
  261.                     if(err)
  262.                         res.json({"err": err});
  263.                     else
  264.                         //return a message
  265.                         res.json({message: 'User updated!'});
  266.                 });
  267.             });
  268.         })
  269.  
  270.         // delete the user with this id accessed at DELETE http://localhost:8080/api/user/:user_id)
  271.         .delete(function(req,res) {
  272.             User.remove({
  273.                 _id: req.params.user_id
  274.  
  275.             }, function(err,user){
  276.                 if(err)
  277.                     res.json({"err": err});
  278.  
  279.                 res.json({message: 'Successfully deleted'});
  280.             });
  281.         });
  282.  
  283.  
  284. //This is for the item route
  285. //route to items
  286. //apiRouter.route('/items')
  287.  
  288. //create an item accessed at POST http://localhost:8080/api/item
  289.  
  290. //create an instance of an item model
  291. apiRouter.post("/items", function(req,res){
  292. var item = new Item();
  293. //set the items name, description, and expiration date
  294. item.name = req.body.name;
  295. item.description = req.body.description;
  296. item.exp_date = req.body.exp_date;
  297. item.upvotes = 0;
  298. item.downvotes = 0;
  299. //save the item and check for errors
  300. item.save(function(err){
  301.     if(err)
  302.         return res.json({"err":err });
  303.   else
  304.         res.json({success:true, message: "Item created!"});
  305. });
  306.  
  307. });
  308.   //get the item by name
  309.   //accessed at GET http://localhost:8080/api/items/:name)
  310.  
  311.   apiRouter.get("/items", function(req, res) {
  312.     if (req.query.name) {
  313.       Item.find({ name: req.query.name }, function(err, item) {
  314.         if (item.length != 0) {
  315.           if (err) res.json({ err: err });
  316.           else {
  317.             //return the item
  318.  
  319.             res.json(item);
  320.           }
  321.         } else {
  322.           var options = {
  323.             method: "GET",
  324.             url: "https://api.nutritionix.com/v1_1/search/" + req.query.name,
  325.             qs: {
  326.               appId: config.nutritionix.appId,
  327.               appKey: config.nutritionix.appKey,
  328.               fields: "*",
  329.               results: "0:50"
  330.             },
  331.             headers: {
  332.               "postman-token": "01a3693a-6d0c-890c-3ae7-69609ab44652",
  333.               "cache-control": "no-cache",
  334.               "content-type": "application/x-www-form-urlencoded"
  335.             },
  336.             form: {
  337.               appId: config.nutritionix.appId,
  338.               appKey: config.nutritionix.appKey,
  339.               query: req.query.name
  340.             }
  341.           };
  342.  
  343.           request(options, function(error, response, body) {
  344.             if (error) throw new Error(error);
  345.  
  346.             var items = JSON.parse(body);
  347.             items.hits.forEach(function(i) {
  348.               //filterAllergies(i);
  349.               var item = new Item(i);
  350.               item.ingredients = i.fields.nf_ingredient_statement;
  351.               if (item.ingredients != null) {
  352.                 item.save(function(err) {
  353.                   console.log(err);
  354.                 });
  355.               }
  356.             });
  357.             res.json({ message: items.hits });
  358.           });
  359.         }
  360.       });
  361.     } else {
  362.       //get all items,
  363.       Item.find(function(err, items) {
  364.         if (err) return res.json({ err: err });
  365.         else res.json(items);
  366.       });
  367.  
  368.       //res.json({message: 'Nothing to be queried'});
  369.     }
  370.   });
  371.  
  372.   apiRouter.route("/items/:item_id").delete(function(req, res) {
  373.     Item.remove(
  374.       {
  375.         _id: req.params.item_id
  376.       },
  377.       function(err, item) {
  378.         if (err) res.json({ err: err });
  379.  
  380.         res.json({ message: "Successfully deleted" });
  381.       }
  382.     );
  383.   });
  384.  
  385.   /****allergies route****/
  386.  
  387.   //post allergies
  388.   apiRouter.post("/allergies", function(req, res) {
  389.     //create an instance of the Allergy model
  390.     var allergy = new Allergy();
  391.  
  392.     //set the allergy information(comes from the request)
  393.     allergy.name = req.body.name;
  394.     allergy.category = req.body.category;
  395.  
  396.     //save the user and check for errors
  397.     allergy.save(function(err) {
  398.       if (err) return res.json({ err: err });
  399.       else res.json({ success: true, message: "allergy created!" });
  400.     });
  401.   });
  402.  
  403.   //get allergies
  404.   apiRouter.get("/allergies", auth, function(req, res) {
  405.     if (req.query.name) {
  406.       Allergy.find({ name: req.query.name }, function(err, allergy) {
  407.         if (allergy.length != 0) {
  408.           if (err) res.json({ err: err });
  409.           else {
  410.             //return the allerg
  411.             res.json(allergy);
  412.           }
  413.         } else {
  414.           res.json({ message: "allergy not found" });
  415.         }
  416.       });
  417.     } else if (req.query.category) {
  418.       Allergy.find({ category: req.query.category }, function(err, allergy) {
  419.         if (allergy.length != 0) {
  420.           if (err) res.json({ err: err });
  421.           else {
  422.             //return the allerg
  423.             res.json(allergy);
  424.           }
  425.         } else {
  426.           res.json({ message: "allergy not found" });
  427.         }
  428.       });
  429.     } else {
  430.       //get all allergies
  431.       Allergy.find(function(err, allergies) {
  432.         if (err) return res.json({ err: err });
  433.         else res.json(allergies);
  434.       });
  435.  
  436.       //res.json({message: 'Nothing to be queried'});
  437.     }
  438.   });
  439.  
  440.   return apiRouter;
  441. };
  442.  
  443. function auth(req, res, next) {
  444.   if (!req.isAuthenticated()) {
  445.     res.send(401);
  446.   } else {
  447.     next();
  448.   }
  449. }
  450.  
  451. <<<<<<< HEAD
  452. });
  453.  
  454.  
  455.  
  456.  
  457.  
  458. apiRouter.route('/items/:item_id')
  459. .delete(function(req,res){
  460.     Item.remove({
  461.         _id: req.params.item_id
  462.     }, function(err,item){
  463.         if(err)
  464.             res.json({"err":err});
  465.  
  466.             res.json({message: 'Successfully deleted'});
  467.     });
  468. });
  469.  
  470.  
  471. /*
  472. apiRouter.put("/items",function(req,res){
  473.     Item.findOneandUpdate({shorten_id: id}, {$inc: {item.upvotes: 1})
  474.         if(err){throw err;}
  475.         else{console.log("it works!")}
  476.     }});
  477. */
  478.  
  479.  
  480.  
  481.  
  482. apiRouter.put("/items",function(req,res){
  483.         if(req.query.name){
  484.             Item.findOne({"name": req.query.name},function(err, item){
  485.                 if(Item.length!=0){
  486.                     if(err)
  487.                             res.json({"err":err});
  488.                     else{
  489.                         if(req.body.upvotes)
  490.                             item.upvotes++;
  491.                         if(req.body.downvotes)
  492.                             item.downvotes++;
  493.                         item.save(function(err){
  494.                             if(err)
  495.                                 res.json({err:"Error! Can't Update"});
  496.                             else{
  497.                                 res.json({message: 'Successfully updated Item upvotes / downvotes'});
  498.                                 }
  499.                         });//end Item.save
  500.                        
  501.                         }//end else
  502.  
  503.                 }//END IF
  504.                 else{
  505.                  res.json({err: 'Nothing to be updated '});
  506.                                    
  507.                 }
  508.            
  509.             })
  510.         }
  511. });
  512.            
  513.  
  514.  
  515.  
  516.  
  517.  
  518. /****allergies route****/
  519.  
  520. //post allergies
  521. apiRouter.post("/allergies",function(req,res){
  522.     //create an instance of the Allergy model
  523.     var allergy = new Allergy();
  524.  
  525.     //set the allergy information(comes from the request)
  526.     allergy.name = req.body.name;
  527.     allergy.category = req.body.category;
  528.  
  529.     //save the user and check for errors
  530.     allergy.save(function(err){
  531.         if(err)
  532.             return res.json({"err":err });
  533.       else
  534.             res.json({success:true, message: "allergy created!"});
  535.     });
  536. });
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543. //get allergies
  544. apiRouter.get("/allergies",function(req,res){
  545.     if(req.query.name){
  546.  
  547.         Allergy.find({ "name":req.query.name  }, function(err,allergy){
  548.         if(allergy.length != 0){
  549.             if(err)
  550.                 res.json({"err": err});
  551.                 //return the allergy
  552.             else{
  553.  
  554.                 res.json(allergy);
  555.         }
  556.         }
  557.         else{
  558.             res.json({message: 'allergy not found'});
  559.         }
  560.         });
  561.  
  562.     }
  563.     else if(req.query.category){
  564.         Allergy.find({ "category":req.query.category  }, function(err,allergy){
  565.         if(allergy.length != 0){
  566.             if(err)
  567.                 res.json({"err": err});
  568.                 //return the allergy
  569.             else{
  570.  
  571.                 res.json(allergy);
  572.             }
  573.         }
  574.         else{
  575.             res.json({message: 'allergy not found'});
  576.         }
  577.         });
  578.  
  579.     }
  580.     else{
  581.     //get all allergies
  582.         Allergy.find(function(err, allergies){
  583.             if(err)
  584.                 return res.json({"err": err});
  585.             else
  586.             res.json(allergies);
  587.  
  588.             });
  589.  
  590.     //res.json({message: 'Nothing to be queried'});
  591. }
  592.  
  593. });
  594.  
  595. //recipe route
  596.  
  597. apiRouter.post("/recipe",function(req, res){
  598.     var recipe = new Recipe();
  599.     recipe.name = req.body.name;
  600.     recipe.author = req.body.author;
  601.    
  602.     recipe.ingredients.push(req.body.ingredients);
  603.     recipe.save(function(err){
  604.         if(err)
  605.             return res.json({"err":err});
  606.         else
  607.             res.json({success:true,message:"Recipe created"});
  608.     });
  609. });
  610.  
  611.  
  612. apiRouter.get("/recipe",function(req,res){
  613.     if(req.query.name){
  614.        
  615.         Recipe.find({"name":req.query.name},function(err,recipe){
  616.             //check if it is null
  617.             if(recipe.length!=0){
  618.                 if(err)
  619.                     res.json({"err":err})
  620.                 else //return the recipe
  621.                     res.json(recipe)
  622.                 }
  623.             else{//recipe not found
  624.                 res.json({message:"Recipe not found"});
  625.             }
  626.         });
  627.     }
  628.     else{
  629.         res.json({message:"Nothing to be queried"});}
  630. });
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637. return apiRouter;
  638. };
  639. =======
  640. function filterAllergies(item) {
  641.   console.log(item.fields.nf_ingredient_statement);
  642. }
  643. >>>>>>> 7b567a105d892d741512f5f56b7c10e8e1b89dfc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement