{"push_id":1067799022,"size":902,"distinct_size":902,"ref":"refs/heads/master","head":"f56d2e7ef8c4d8a01dcdae6a12843c6e49a10552","before":"a5fbec5cea75011dc409e49af9766f8a41f27a2d","commits":[{"sha":"1576a588574bfa71a6143774907b7e2f780c3d88","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Add basic Haskell-based API using Servant","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/1576a588574bfa71a6143774907b7e2f780c3d88"},{"sha":"111044f7adf097e06f73997533965bce317b9c42","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Add content ID route parameter","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/111044f7adf097e06f73997533965bce317b9c42"},{"sha":"e60602519c7900d6cce26d15a35decb7bcda7c3d","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Hide Haskell/Cabal specific folders","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/e60602519c7900d6cce26d15a35decb7bcda7c3d"},{"sha":"97a98cae8d005983cb89d80a85b956faf1523dd2","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Set tab size to 2","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/97a98cae8d005983cb89d80a85b956faf1523dd2"},{"sha":"10db4b02bd4e29af80810d6e31de895cbec030fd","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Introduce `Content` data type","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/10db4b02bd4e29af80810d6e31de895cbec030fd"},{"sha":"e3f2d2c98a9c1a3111a566d8e1e3d50c1a5511db","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Prefix `DeepZoomImage` and `Content` field names\n\nAvoids ambiguity, e.g. for `url`. Use Template Haskell to derive JSON instances\nand rename fields.\n\nSee: https://hackage.haskell.org/package/aeson-0.10.0.0/docs/Data-Aeson-TH.html","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/e3f2d2c98a9c1a3111a566d8e1e3d50c1a5511db"},{"sha":"5fc4541fd8ac0596dd1f5a2f82da197ab8669d4e","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Declare `servant-lucid` as `extra-deps`","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/5fc4541fd8ac0596dd1f5a2f82da197ab8669d4e"},{"sha":"a062ecdd6f72ad29e481489846645c03bb13af66","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Add `aeson-casing` dependency","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/a062ecdd6f72ad29e481489846645c03bb13af66"},{"sha":"8b8ed76916071e3554477fe2e18a1c9aa0fb00be","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Use `aeson-casing` for pretty JSON","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/8b8ed76916071e3554477fe2e18a1c9aa0fb00be"},{"sha":"29c15a297070b0dc780aaf4d33ca483c5d192d06","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Rename `main.hs` to `Main.hs`","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/29c15a297070b0dc780aaf4d33ca483c5d192d06"},{"sha":"dd238881d0f7b5f88359449a4dcdaaba5631202c","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Define `ContentState`","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/dd238881d0f7b5f88359449a4dcdaaba5631202c"},{"sha":"21e20f2462b75fda5c63c62534102d8e7e9a08b9","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Add `/v1/content?url=…` API","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/21e20f2462b75fda5c63c62534102d8e7e9a08b9"},{"sha":"395c74faf0e969053495ea19012ef8bfc62c7e7b","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Extract `DeepZoomImage` and `Content` types","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/395c74faf0e969053495ea19012ef8bfc62c7e7b"},{"sha":"0f86c05636a093eb216ab25bfc146d0fbec96c4e","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Add `Handler a` type shortcut","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/0f86c05636a093eb216ab25bfc146d0fbec96c4e"},{"sha":"f53cac1a1e180d6ff1c0a0f654e41296181d3115","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Make it more obvious when JSON is fake","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/f53cac1a1e180d6ff1c0a0f654e41296181d3115"},{"sha":"6984d4aa702b2c1cebd62353c997aef2774ff52f","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":":art: :abc: language extensions","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/6984d4aa702b2c1cebd62353c997aef2774ff52f"},{"sha":"4854003e7091aa353915cf3d5adeffcde7b2db43","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Enable `OverloadedStrings` for simple `ByteString`s","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/4854003e7091aa353915cf3d5adeffcde7b2db43"},{"sha":"6291d3710775753cc359e308747e3e4f864a516b","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"HLint: Remove unused `LANGUAGE` pragmas","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/6291d3710775753cc359e308747e3e4f864a516b"},{"sha":"18ff9dea3b0dc6ce4278c4b0bcec7ff871ab5e7f","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Read JSON from disk in `contentById` handler","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/18ff9dea3b0dc6ce4278c4b0bcec7ff871ab5e7f"},{"sha":"b6f6b6ee99b02a7f05b9ec1413d83cf1a7611b57","author":{"email":"3d0f3b9ddcacec30c4008c5e030e6c13a478cb4f@gasienica.ch","name":"Daniel Gasienica"},"message":"Return proper HTTP 400 for missing `url`","distinct":true,"url":"https://api.github.com/repos/zoomhub/zoomhub/commits/b6f6b6ee99b02a7f05b9ec1413d83cf1a7611b57"}]}