{"push_id":1023263336,"size":31,"distinct_size":29,"ref":"refs/heads/api-error-handling","head":"9ec4fa329deddec6ef16aa3daba72f5794e16045","before":"59dcee4af3f2871b42a8e1a1e6db011fe23103d5","commits":[{"sha":"9681946719010d44a75f30375fca8f0aa5ae725c","author":{"email":"ea00c50c9bb514ae88e784581b3452e1aaeb90b5@gmail.com","name":"markjamesbutler"},"message":"Add a/b test for copy permissions.","distinct":false,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/9681946719010d44a75f30375fca8f0aa5ae725c"},{"sha":"074af55c5376bc599fc19203689537e10ba937ac","author":{"email":"ea00c50c9bb514ae88e784581b3452e1aaeb90b5@gmail.com","name":"Mark Butler"},"message":"Merge pull request #112 from guardian/social-signin-permissions-copy\n\nAdd a/b test for social permissions copy","distinct":false,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/074af55c5376bc599fc19203689537e10ba937ac"},{"sha":"e9ff2d0337950aa082c0e1fd9934bfd5602d1df2","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Revised error handling to a set of Action Compositions\n\n- `ServiceAction` which utilises a `ServiceActionBuilder` builds an\n  `Action` from a block which returns a `Future[Either[ServiceErrors, Result]]`\n  automatically handling error cases and transformations.\n- `RedirectOnError` Action Builder to catch app errors and redirect to\n  a specified route.\n- Specified a form `BodyParser` to parse body automatically into a\n  `SignInActionRequestBody` object. Moved Request parsing out of\n  Controller.","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/e9ff2d0337950aa082c0e1fd9934bfd5602d1df2"},{"sha":"03c8aa50d3eef1e49def93bcba8ef927be4861e1","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Modelled `AppException` for all errors\n\n- ServiceAction transforms `Left(errors)` to failed future of error,\n  replaces the use of `ErrorResult` to propogate errors to other Actions\n- `AppException` models id for use by `RedirectOnError` action","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/03c8aa50d3eef1e49def93bcba8ef927be4861e1"},{"sha":"477fac4a3b82f4dca4a950fff20626f86b15d323","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Use ComposableActionBuilder to fix issues with composing actions with ActionBuilder","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/477fac4a3b82f4dca4a950fff20626f86b15d323"},{"sha":"b37d03dc664d48bab1da0699a84ef47c935404fa","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Use execution context from ActionBuilder","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/b37d03dc664d48bab1da0699a84ef47c935404fa"},{"sha":"8d4b3e34c63a2598db970d2497bf1619e20271bc","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Ensure tests compile","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/8d4b3e34c63a2598db970d2497bf1619e20271bc"},{"sha":"937ad62b84bb0ea88bee2aa686d6302c8bd4d854","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Adapt Play's CSRF Check action to allow custom request body parsers\n\n- Play's CSRF check action doesn't work for requests using a different\n  body parser.\n- Mix in `RequestBodyWithCSRFToken` to custom request body types to\n  allow CSRF token checking.","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/937ad62b84bb0ea88bee2aa686d6302c8bd4d854"},{"sha":"676ee59d46a3ea83480b08c1c6e78953adff66ba","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Raise ForgeryTokenAppException when a CSRF check fails\n\n- Also ensures RedirectOnError action can handle known errors raised\n  directly from Action apply methods.","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/676ee59d46a3ea83480b08c1c6e78953adff66ba"},{"sha":"1af888d6f8b2f7b5da83b05c6c26d39b07c8e954","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Removed recaptcha logic from sign in","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/1af888d6f8b2f7b5da83b05c6c26d39b07c8e954"},{"sha":"9e5acdbad67d346df2e5ee6d0d9daede48d7ae90","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Show full stacktraces and duration in tests","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/9e5acdbad67d346df2e5ee6d0d9daede48d7ae90"},{"sha":"93d36cff692103fc128406e47bf04ffa40fb5e48","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Ensure errors from sign-in action redirect as before\n\n- Updated tests with new errors\n- Updated RedirectOnError to redirect with an unexpected error when one\n  occurs\n- Modified SignInActionRequestBody's body parser to throw errors, such\n  as when the token is not found, catchable by RedirectOnError","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/93d36cff692103fc128406e47bf04ffa40fb5e48"},{"sha":"5728ee5cf0ecd706d0ed6021721c6b6b835abec6","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Reinstate logging of successful sign in from master","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/5728ee5cf0ecd706d0ed6021721c6b6b835abec6"},{"sha":"deec7eb930e3882b15aca43bbba71f76fc5e9f24","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"RequestParameter traits and Form Mapping for ReturnUrl\n\n- Allows passing of explicit Request parameter types allowing only\n  access to fields which are used.\n- Form Mapping for ReturnUrl allows direct mapping of ReturnUrl object\n  to request objects.","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/deec7eb930e3882b15aca43bbba71f76fc5e9f24"},{"sha":"d9fd9b4eced5fd7c7234618d828d223e6f3eabf5","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Use UrlBuilder to build urls with params for errors","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/d9fd9b4eced5fd7c7234618d828d223e6f3eabf5"},{"sha":"d32ba46a4354266cf9210629344a6d6033ee98b3","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Cater for multiple errors when building redirect urls","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/d32ba46a4354266cf9210629344a6d6033ee98b3"},{"sha":"dd5bcce9f1dc8a63dc0a6fbe096c6010c7848757","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Renamed client errors for greater readability","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/dd5bcce9f1dc8a63dc0a6fbe096c6010c7848757"},{"sha":"eaa384f56d295dc31b345353182ac15ed1752be4","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Specific error for Invalid Sign in credentials","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/eaa384f56d295dc31b345353182ac15ed1752be4"},{"sha":"4b1f244de2ea60f1a64e8507567cd8241e8d700a","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Separated out AppExceptions into multiple files for readability","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/4b1f244de2ea60f1a64e8507567cd8241e8d700a"},{"sha":"2039467bcdf15804e7ab739accb61f9c07954ee6","author":{"email":"474ba67bdb289c6263b36dfd8a7bed6c85b04943@jamespamplin.com","name":"james@jamespamplin.com"},"message":"Specific errors for registration cases","distinct":true,"url":"https://api.github.com/repos/guardian/identity-frontend/commits/2039467bcdf15804e7ab739accb61f9c07954ee6"}]}