From 52b72f1372dc9009fc406ec70d4f5173582615ec Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 29 May 2017 14:20:58 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=AB=20initial=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 13 +++++ .gitignore | 4 ++ .travis.yml | 5 ++ index.js | 59 +++++++++++++++++++++++ license.md | 21 ++++++++ media/repo-banner.sketch | Bin 0 -> 32157 bytes media/repo-banner@2x.png | Bin 0 -> 16326 bytes package.json | 34 +++++++++++++ readme.md | 101 +++++++++++++++++++++++++++++++++++++++ test/index.js | 17 +++++++ 10 files changed, 254 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100755 index.js create mode 100755 license.md create mode 100644 media/repo-banner.sketch create mode 100644 media/repo-banner@2x.png create mode 100644 package.json create mode 100644 readme.md create mode 100644 test/index.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b64e0cd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ + +# EditorConfig is awesome: http://EditorConfig.org + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true + +[*.json] +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fad8828 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log +yarn.lock +package-lock.json diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..83a38c6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: node + +notifications: + email: false diff --git a/index.js b/index.js new file mode 100755 index 0000000..449b6ff --- /dev/null +++ b/index.js @@ -0,0 +1,59 @@ +const fetch = require('node-fetch') +const ms = require('ms') +const chalk = require('chalk') + +let data = [] +const url = 'https://api.meetup.com/BigchainDB-IPDB-Meetup/events' + +const log = text => console.log(text) +const logError = text => console.log(chalk.bold.red(text)) + +// Response handling for all fetch calls +const handleResponse = res => { + if (res.status !== 200) { + return logError('Non-200 response code from Meetup: ' + res.status) + } + return res.json() +} + +// +// Fetch all upcoming meetups +// +const fetchMeetups = () => { + const start = Date.now() + + fetch(url) + .then(res => { + return handleResponse(res) + }) + .then(data_ => { + if (!data_) { + return + } + + data = data_ + + log(`Re-built meetups cache. ` + + `Total: ${data_.length} public meetups. ` + + `Elapsed: ${(new Date() - start)}ms`) + }) + .catch(err => { + logError('Error parsing response from Meetup: ' + err.stack) + }) +} + +// +// Let's roll, and roll again every X ms +// +fetchMeetups() +setInterval(fetchMeetups, ms('15m')) + +// +// Create the response +// +module.exports = async (req, res) => { + res.setHeader('Access-Control-Allow-Origin', '*') + res.setHeader('Access-Control-Allow-Methods', 'GET') + + return data +} diff --git a/license.md b/license.md new file mode 100755 index 0000000..af200da --- /dev/null +++ b/license.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 BigchainDB GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/media/repo-banner.sketch b/media/repo-banner.sketch new file mode 100644 index 0000000000000000000000000000000000000000..d492435ae041e770e1acff2057094933dda60157 GIT binary patch literal 32157 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ÒsZ*D5x7m_GxiVPX)dy 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

9^6UeBQ(CY!Fja8{7Qw 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 Microservice to cache and expose [our upcoming Meetups](https://www.meetup.com/BigchainDB-IPDB-Meetup/) for use throughout [www.bigchaindb.com](https://www.bigchaindb.com). + +[![Build Status](https://travis-ci.org/bigchaindb/meetups.svg?branch=master)](https://travis-ci.org/bigchaindb/meetups) +[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo) +[![Greenkeeper badge](https://badges.greenkeeper.io/bigchaindb/meetups.svg)](https://greenkeeper.io/) + + + + +## API + +Endpoint: [`https://bigchaindb-meetups.now.sh`](https://bigchaindb-meetups.now.sh) + +### GET / + +**200**: Returns all upcoming meetups, e.g.: + +```json +[ + { + created: 1480492250000, + id: "235925067", + name: "Privacy on the Blockchain", + rsvp_limit: 55, + status: "upcoming", + time: 1496854800000, + updated: 1495634541000, + utc_offset: 7200000, + waitlist_count: 9, + yes_rsvp_count: 61, + venue: { + id: 24947394, + name: "BlueYard", + lat: 52.49262237548828, + lon: 13.413067817687988, + repinned: false, + address_1: "Grimmstraße 13, 10967 ", + city: "Berlin", + country: "de", + localized_country_name: "Germany" + }, + group: { + created: 1480330155000, + name: "BigchainDB & IPDB Meetup", + id: 21301439, + join_mode: "open", + lat: 52.52000045776367, + lon: 13.380000114440918, + urlname: "BigchainDB-IPDB-Meetup", + who: "Members" + }, + link: "https://www.meetup.com/BigchainDB-IPDB-Meetup/events/235925067/", + description: "" + visibility: "public" + }, + ... +] +``` + +## Development + +Install dependencies: + +```bash +npm install +``` + +And run the server: + +```bash +npm start +``` + +## Test + +Run the tests: + +```bash +npm test +``` + +## Deployment + +Deploy to [now](https://zeit.co/now), make sure to switch to BigchainDB org before deploying: + +```bash +# first run +now login +now switch + +# deploy +now +# switch alias to new deployment, e.g. +now alias bigchaindb-meetups-wxkyissxos bigchaindb-meetups +``` + +## Authors + +- Matthias Kretschmann ([@kremalicious](https://github.com/kremalicious)) - [BigchainDB](https://www.bigchaindb.com) diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..624b839 --- /dev/null +++ b/test/index.js @@ -0,0 +1,17 @@ +import micro from 'micro' +import test from 'ava' +import listen from 'test-listen' +import request from 'request-promise' + +test('it works', async t => { + const service = micro(async (req, res) => { + micro.send(res, 200, { + test: 'woot' + }) + }) + + const url = await listen(service) + const body = await request(url) + + t.deepEqual(JSON.parse(body).test, 'woot') +})