todo.js 3.3 KB

/*
 * GET todo
 */

var fs = require('fs');	// 파일 시스템 모듈
var request = require('request');

exports.list = function(req, res){	// ToDo 목록 가져오기
	fs.exists('./todo_list.json', function (exists) {	// ToDo 목록 존재 확인
		if(exists) {
			fs.readFile('./todo_list.json', {
				'encoding': 'utf8'
			}, function (err, list) {	// todo_list.json 파일 읽기
				res.json(list);
			});
		} else {
			var list = {	// 기본 ToDo 목록 형식
				'list': []
			};
				
			fs.writeFile('./todo_list.json', JSON.stringify(list), function (err) {	// todo_list.json 파일 쓰기
				res.json(list);
			});
		}
	});
};

exports.add = function(req, res){	// 새로운 ToDo 항목 추가하기
	var todo = {	// 기본 ToDo 항목 형식
		'contents': '',
		'videoId':'',
		'complete': false
	};

	//유튜브 api 이용 검색부분
	
	var optionParams = {
		q:req.body.contents,
		part:"snippet",
		key:"AIzaSyCgGa6aM7taXs4bajtYukbc_EQAKTLVTNc",
		type:"video",
		maxResult:5,
		regionCode:"KR",
		order:"viewCount"
	};

	optionParams.q = encodeURI(optionParams.q);

	var url="https://www.googleapis.com/youtube/v3/search?";
	for(var option in optionParams){
		url+=option+"="+optionParams[option]+"&";
	}
	
	//url의마지막에 붙어있는 & 정리
	url=url.substr(0, url.length-1);
	
	request(url, function(err, res, body){
		// console.log(body)
		
		//json형식을 서버로 부터 받음
		var data=JSON.parse(body).items;
		for(var content in data){
			
			//youtube downloader에 videoId 넘기면 됨.
			console.log(data[content].snippet.title+" : "+data[content].id.videoId);
			todo.contents = data[content].snippet.title;
			todo.videoId = data[content].id.videoId;
			fs.readFile('./todo_list.json', {
				'encoding': 'utf8'
			}, function (err, data) {
				data = JSON.parse(data);
				
				for (var i=0;i<5;i++)
				{
					data.list.push(todo);
				}
					// 새로운 ToDo 항목 추가
				
				fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
					res.json(true); // 이부분에서 오류가 나는데 잘 모르겠습니다.
				});
			});
		}
		res.json(true); //교수님께서 추가하신 부분입니다.
	});

	//todo.contents = req.body.contents;
/*
	fs.readFile('./todo_list.json', {
		'encoding': 'utf8'
	}, function (err, data) {
		data = JSON.parse(data);
		
		for (var i=0;i<5;i++)
		{
			data.list.push(VideoIds[i]);
		}
			// 새로운 ToDo 항목 추가
		
		fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
			res.json(true);
		});
	});*/
};

exports.complete = function(req, res){	// 선택한 ToDo 항목 완료하기
	fs.readFile('./todo_list.json', {
		'encoding': 'utf8'
	}, function (err, data) {
		data = JSON.parse(data);
		
		data.list[req.body.index].complete = true;
		console.log(data.list[req.body.index].contents);
		fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
			res.json(true);
		});
	});
};

exports.del = function(req, res){	// 선택한 ToDo 항목 삭제하기
	fs.readFile('./todo_list.json', {
		'encoding': 'utf8'
	}, function (err, data) {
		data = JSON.parse(data);
		
		data.list[req.body.index] = null;	// 선택한 ToDo 항목 삭제
		data.list = data.list.filter(Boolean);	// 유효한 값 추려내기
		
		fs.writeFile('./todo_list.json', JSON.stringify(data), function (err) {
			res.json(true);
		});
	});
};