{"push_id":1088867057,"size":4,"distinct_size":1,"ref":"refs/heads/as-off-main","head":"6f89c9a849fa2e4f606c8bc1a068a5eecab4b4af","before":"993355409132d459569f49b8ca578c8bd03354d2","commits":[{"sha":"718c79adc5caf6f24e8162e0b37cfb8b70c52ba9","author":{"email":"3c0e33405b5b9ca07407de9e19cce194ff7151b6@gitpushgitpaid.com","name":"Gordon Fontenot"},"message":"Add test script\n\nfor the ci","distinct":false,"url":"https://api.github.com/repos/thoughtbot/Swish/commits/718c79adc5caf6f24e8162e0b37cfb8b70c52ba9"},{"sha":"fbb9c1ba998ecbd80c10071a6b645b51300140a4","author":{"email":"3c0e33405b5b9ca07407de9e19cce194ff7151b6@gitpushgitpaid.com","name":"Gordon Fontenot"},"message":"Add circle config","distinct":false,"url":"https://api.github.com/repos/thoughtbot/Swish/commits/fbb9c1ba998ecbd80c10071a6b645b51300140a4"},{"sha":"67d34ae929eab76e6365ac20251b7336d7b79fdd","author":{"email":"3c0e33405b5b9ca07407de9e19cce194ff7151b6@gitpushgitpaid.com","name":"Gordon Fontenot"},"message":"Use SwishError as our final error type\n\nOriginally, we were trying to let users model their error types by\nimplementing a `transformError` function on their `Request` objects that\nknew how to go from the generic error encountered by Swish to a more\nexplicit error type controlled by the client application.\n\nUnfortunately, this was a fairly naive approach that ended up causing\nmore trouble than it was worth.\n\n - Given that there were so many different places for the request to\n   encounter an error, it wasn't nearly as simple to model the errors as\n   it was the success cases. This means that the original intent of the\n   API was lost from the start.\n - It became confusing to know when you should use `SwishError` and when\n   you should use `NSError`. The boundary was fairly blurry and users\n   encountered both regularly.\n - Being completely generic about the error type at the `Client` level\n   made it extremely difficult to wrap. We had been using this in client\n   applications for things like global error messaging, where we'd wrap\n   the `Client` and then post a notification if we encountered an error\n   at any time in the request process. This became basically impossible\n   once we needed to refer to a generic type like `T.ResponseError`,\n   because we had absolutely no clues as to what that object was. Given\n   the rest of the issues listed above, this seemed like needlessly\n   complicated API with no real concrete benefit.\n\nThat being said, having `SwishError` around as an error type _is_ a\nbetter solution than `NSError` in the long run. This error type gives\nthe end user _much_ more context about exactly what went wrong, and that\nwill give them the ability to do something better with it. Therefore, I\nthink it makes sense to move to an all-`SwishError` interface, rather\nthan reverting to `NSError`.","distinct":false,"url":"https://api.github.com/repos/thoughtbot/Swish/commits/67d34ae929eab76e6365ac20251b7336d7b79fdd"},{"sha":"6f89c9a849fa2e4f606c8bc1a068a5eecab4b4af","author":{"email":"706f6f91a3ffb12d189235632c3af2756dc3e4fe@me.com","name":"Adam Sharp"},"message":"Don't force completion blocks to be scheduled on the main queue\n\nDifferent request performers are allowed to have different semantics\nwhen it comes to the queue that results are delivered on. If a performer\nalready happens to deliver results on the main queue, `APIClient` is\ninjecting latency by scheduling an unnecessary async call. If a\nperformer delivers results on a background queue (i.e.,\n`NetworkRequestPerformer`), and there's further processing that would\nbenefit from occurring in the background (e.g., image processing or\ndecoding a large object), callers must dispatch back onto a background\nqueue to avoid blocking the UI. It also hampers composability of\nrequests, because multiple chained requests will incur a penalty from\njumping back and forth from the main queue to a background queue.\n\nThis breaking change removes the `dispatc_async` and leaves that\ndecision to callers, as it's not possible to anticipate the correct\ndecision to use in every situation.","distinct":true,"url":"https://api.github.com/repos/thoughtbot/Swish/commits/6f89c9a849fa2e4f606c8bc1a068a5eecab4b4af"}]}