From 0d960ece4646180f1f318603460c38d352ba7ef2 Mon Sep 17 00:00:00 2001 From: quesalltime Date: Sun, 28 Jan 2018 21:43:58 +0800 Subject: [PATCH 1/2] Create MeetUpAPILambda.js --- MeetUpAPILambda.js | 109 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 MeetUpAPILambda.js diff --git a/MeetUpAPILambda.js b/MeetUpAPILambda.js new file mode 100644 index 0000000..696640a --- /dev/null +++ b/MeetUpAPILambda.js @@ -0,0 +1,109 @@ +let axios = require('axios'); +let querystring = require('querystring'); +let timestamp = require('unix-timestamp'); + +let apiKey = process.env.API_KEY; +let baseUrl = 'https://api.meetup.com/Taipei-Ethereum-Meetup'; + +function parseDesc(bodyData) { + console.log('bodyData:',bodyData); + let desc = ''; + let sche = bodyData.schedule; + console.log('sche:',sche.length); + for(let i = 0; i < sche.length; i++) { + console.log('desc:',desc); + let section = sche[i]; + desc = desc + + section.time + '
' + + section.title + '
'; + if(section.detail) { + desc = desc + + 'by ' + section.detail.speaker + '
'; + } + desc = desc + '
'; + } + console.log('desc all:',desc); + return desc; +} + +function newPostData(bodyData) { + let name = bodyData.name || 'Monthly Meetup'; + let ts = timestamp.fromDate(bodyData.date)*1000; //in miliseconds + let venueId = bodyData.venueId || 24798785; + let desc = parseDesc(bodyData); + + return querystring.stringify({ + announce: false, + name: name, + description: desc, + time: ts, + publish_status: 'draft', + venue_id: venueId + //lat: 25.020000457763672, + //lon: 121.44999694824219 + }); +} + +function newMeetup(bodyData ,callback) { + let url = baseUrl + '/events' + '?key=' + apiKey; + let axiosHeaders = { + headers:{ + 'Content-Type': 'application/x-www-form-urlencoded' + } + }; + axios.post(url,newPostData(bodyData),axiosHeaders) + .then(res => { + console.log('success:',res); + callback(null,{ + statusCode: 200, + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify(res.data) + }); + }) + .catch(err => { + console.log('err:',err); + throw (err); + }) ; +} + +function updateMeetup(bodyData ,callback) { + let eventId = bodyData.eventId; + let url = baseUrl + '/events' + '/' + eventId + '?key=' + apiKey; + let axiosHeaders = { + headers:{ + 'Content-Type': 'application/x-www-form-urlencoded' + } + }; + axios.patch(url,newPostData(bodyData),axiosHeaders) + .then(res => { + console.log('success:',res); + callback(null,{ + statusCode: 200, + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify(res.data) + }); + }) + .catch(err => { + console.log('err:',err); + throw (err); + }) ; +} + +exports.handler = (event, context, callback) => { + try { + let method = event.httpMethod; + let bodyData = JSON.parse(event.body); + if(method == 'POST') { + newMeetup(bodyData ,callback); + } else { + updateMeetup(bodyData ,callback); + } + + } catch (err) { + callback(null,{ + statusCode: 400, + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({err:err}) + }) + } +}; From 9842f7f403ff4459295527b17048a3c8590cb64a Mon Sep 17 00:00:00 2001 From: quesalltime Date: Sun, 28 Jan 2018 21:46:04 +0800 Subject: [PATCH 2/2] Update MeetUpAPILambda.js --- MeetUpAPILambda.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MeetUpAPILambda.js b/MeetUpAPILambda.js index 696640a..44e16cc 100644 --- a/MeetUpAPILambda.js +++ b/MeetUpAPILambda.js @@ -1,3 +1,7 @@ +/* + This is an AWS Lambda script with Node.js 6.10 + */ + let axios = require('axios'); let querystring = require('querystring'); let timestamp = require('unix-timestamp');