{"push_id":587876204,"size":42,"distinct_size":5,"ref":"refs/heads/invoice_new","head":"3f835dfd0712fc21f05905590f4bfc2ebbc3c578","before":"f75826e21547e6425d0343805cce3ba651fe170c","commits":[{"sha":"70c3ec18778addb9e376f3522c431602f7e2cfa3","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Remove extra debug statement.\n\nHate when those slip through.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/70c3ec18778addb9e376f3522c431602f7e2cfa3"},{"sha":"c968e29d0f12a357d21eb7b928f78cecb87278ac","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Remove workaround, issue fixed upstream.\n\nThanks to boltdb/bolt#297, NextSequence is now properly persisted.  Thus,\nremove my ugly workaround.  Luckily, it hasn't been pushed to production\nyet.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/c968e29d0f12a357d21eb7b928f78cecb87278ac"},{"sha":"44ba2969873ae9b92030b4cc8e2eeb01f67f8703","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Make the integration server stop when idle connections exist.\n\nNow, when the integration server is being shut down ensure it doesn't get\nheld up by idle connections.  This approach uses locking, and thus ok for\nhere but not great for production.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/44ba2969873ae9b92030b4cc8e2eeb01f67f8703"},{"sha":"ca54e3b8952aeea4c9d441dbc475a34302a79532","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add the notify-send reporter to karma.\n\nTo make karma work more like goconvey, have it report status updates to\nthe desktop notification system.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/ca54e3b8952aeea4c9d441dbc475a34302a79532"},{"sha":"e9f00b09bf4ab899f3cba67c68a85a95a55f07ab","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"go fmt","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/e9f00b09bf4ab899f3cba67c68a85a95a55f07ab"},{"sha":"97498491fa913398c72b41a3ed949540024af545","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"The bolt tests should be labelled as hitting the bolt database.\n\nBad copy+paste error in a string.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/97498491fa913398c72b41a3ed949540024af545"},{"sha":"6d57d96779f86c444429550b6409df0519a8e42c","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add session handling to the system.\n\nUsing a bolt backend to the gorilla session system, and the ability to store\nsession information.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/6d57d96779f86c444429550b6409df0519a8e42c"},{"sha":"2bb0cd653bc78af7a86621a88cb055a7975c9cfd","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add initial XSRF tokens.\n\nAdd initial support for XSRF tokens, using the session support to store the\nvalidation token.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/2bb0cd653bc78af7a86621a88cb055a7975c9cfd"},{"sha":"3fd78c2da15f436f3316eed88d47deb6a5603752","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add Google+ sign in button.\n\nCan now login, but it does not have the application authenticate against\nGoogle.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/3fd78c2da15f436f3316eed88d47deb6a5603752"},{"sha":"b160824ecffb32fa9578d1e8481f8c5a5cf96146","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add a service to communicate login status to the server.\n\nWhen Google gives us back a valid code, send it up to the server to authenticate\nthe session.  Server code comes next.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/b160824ecffb32fa9578d1e8481f8c5a5cf96146"},{"sha":"87393de2117f40c3ad6f54c5c851305196086d6d","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add a string slice type for use with flags.\n\nTo get in a list of valid admin email addresses, we need to get in a slice.\nTo avoid post-processing the incoming flags, make a custom type that\nimplements flag.Value.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/87393de2117f40c3ad6f54c5c851305196086d6d"},{"sha":"2eb31761a7ddd42c0cd5750980a6da6127535257","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add google authentication handling to the backend server.\n\nUsers can now sign in using google accounts, if their email address is on\nthe pre-approved list.  Client ID/secret and the email list are all\nconfiguration items.\n\nDue to the nature of the code, tests are currently not present.  It would\nbe nice to get.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/2eb31761a7ddd42c0cd5750980a6da6127535257"},{"sha":"379831fb077c22bc30478068f6921bcb39589dbc","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add admin page.\n\nAdd simple admin page for use.  It redirects users to the login page if\nthe server hasn't sent a logged in status yet.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/379831fb077c22bc30478068f6921bcb39589dbc"},{"sha":"7cf19a4ab3ab231e297df4ea426bcc98c19da4d6","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add the ability to fetch all records in a given bucket to boltorm.\n\nBoltorm now fetches all records.  Also adds tests and a memorydb implmentation,\nas usual.\n\nTo handle slices, it unfortunately has to use the reflect package.  It is\nall relatively straight forward.  All the tricky reflection code is moved\nto a general handler to make life simpler.\n\nThe memory db also has to sort the outgoing records, as the map of records\nis unsorted, and occasionally (though rarely, interestingly enough) causes\ntest failures.  Since the memorydb is meant for tests anyways, this isn't\na huge issue.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/7cf19a4ab3ab231e297df4ea426bcc98c19da4d6"},{"sha":"c1e8aa511c7a64741d61da97e016598e69f2be3c","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"To handle administration things, add a function to verify a session is ok.\n\nFor now, logins are limited.  Add a quick a dirty function to ensure an\nendpoint satisfies that.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/c1e8aa511c7a64741d61da97e016598e69f2be3c"},{"sha":"4752a1988182f3e6becf9d828a3dd00e24f9d91b","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add the backend to actually retrieve the backend list of records.\n\nThe backend can now retrieve the list of records.  Uses the authentication\nmodule to verify credentials.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/4752a1988182f3e6becf9d828a3dd00e24f9d91b"},{"sha":"262d9a4817938f6d6cf246b8b3f55aeb9ba7e428","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add rough first pass record list page.\n\nThe record list page needed something.  Now something exists.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/262d9a4817938f6d6cf246b8b3f55aeb9ba7e428"},{"sha":"b0b06b741702d9a9b62570526789e5461cc3e6b8","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Add an api endpoint to check if a session is logged in.\n\nWatching redirects bugged me, so implements this now, not later.  This pulls\nsome common test parts to a separate function.  Also add tests for the new\nendpoint, along with the common part.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/b0b06b741702d9a9b62570526789e5461cc3e6b8"},{"sha":"a46d85a72a16b7f3ee8c6c4e9c0b31e35f7ae064","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Hook up new end point to backend logic.\n\nNow that the backend allows checking the session state, make the frontend\nalso do this.  isLoggedIn now ask the backend if it doesn't have a cached\nvalue already.","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/a46d85a72a16b7f3ee8c6c4e9c0b31e35f7ae064"},{"sha":"d127c0a8feaf5e0e16ab75c9e50dc1dfb50f18aa","author":{"email":"f80d0ca101e967b50b730ddf8e8aca0de85e8df6@mjdsystems.ca","name":"Matthew Dawson"},"message":"Rename Id to ID.\n\nGolang seems to have generally decided upon this name.  Thus use it instead\nto better match people's expectations.  Push this now, before invoices are\nactually being created/used!","distinct":false,"url":"https://api.github.com/repos/CCJ16/registration/commits/d127c0a8feaf5e0e16ab75c9e50dc1dfb50f18aa"}]}