diff --git a/README.md b/README.md index 185e02d..c600091 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # github-commit-ical - View your commit history in Calendar diff --git a/app.coffee b/app.coffee index 2d297c9..627d30d 100644 --- a/app.coffee +++ b/app.coffee @@ -4,11 +4,21 @@ async = require 'async' harp = require 'harp' path = require 'path' ical = require 'ical-generator' +redis = require 'redis' _ = require 'underscore' -default_request_flags = - headers: - 'User-Agent': 'github-commit-ical' +config = require './config' + +redis_client = redis.createClient() + +sendRequest = (path, callback) -> + {user, pass} = config.auth + url = "https://#{user}:#{pass}@api.github.com#{path}" + + request url, + headers: + 'User-Agent': 'github-commit-ical' + , callback app = express() @@ -17,20 +27,36 @@ app.use harp.mount(path.join(__dirname, 'static')) app.get '/:username', (req, res) -> username = req.param 'username' - request "https://api.github.com/users/#{username}/events", default_request_flags, (err, _res, body) -> + sendRequest "/users/#{username}/events", (err, _res, body) -> events = _.filter JSON.parse(body), (event) -> return event.type == 'PushEvent' async.map events, (event, callback) -> async.map event.payload.commits, (commit, callback) -> - request "https://api.github.com/repos/#{event.repo.name}/git/commits/#{commit.sha}", default_request_flags, (err, _res, body) -> - real_time = JSON.parse(body).committer.date + redis_client.get "github-commit-ical:#{commit.sha}", (err, result) -> + if result + result = JSON.parse result - callback err, - start: new Date real_time - end: new Date real_time - summary: "#{commit.message} (#{event.repo.name})" - url: commit.html_url + result.start = new Date result.start + result.end = new Date result.end + + callback err, result + + else + sendRequest "/repos/#{event.repo.name}/git/commits/#{commit.sha}", (err, _res, body) -> + unless JSON.parse(body).committer.date + console.log JSON.parse(body) + + real_time = JSON.parse(body).committer.date + + result = + start: new Date real_time + end: new Date real_time + summary: "#{commit.message} (#{event.repo.name})" + url: commit.html_url + + redis_client.set "github-commit-ical:#{commit.sha}", JSON.stringify(result), -> + callback err, result , (err, result) -> callback err, result diff --git a/config.coffee b/config.coffee new file mode 100644 index 0000000..3de6686 --- /dev/null +++ b/config.coffee @@ -0,0 +1,4 @@ +module.exports = + auth: + user: 'username' + pass: 'personal-access-tokens' diff --git a/package.json b/package.json index 3fb6cb1..576dbc3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "github-commit-ical", "version": "0.1.0", "description": "View your commit history in Calendar", - "homepage": "http://commit-calendar.newsbee.io/", + "homepage": "http://commit-calendar.newsbee.io", "license": "MIT", "repository": { "type": "git", @@ -21,6 +21,7 @@ "ical-generator": "*", "harp": "*", "async": "*", - "underscore": "*" + "underscore": "*", + "redis": "*" } } \ No newline at end of file