vadymmarkov / Malibu

:surfer: Malibu is a networking library built on promises
https://vadymmarkov.github.io
Other
414 stars 39 forks source link

Middleware promise #47

Closed vadymmarkov closed 8 years ago

vadymmarkov commented 8 years ago

"Middleware" is the function which works with the first promise in the chain, before the actual request. It could be used to prepare networking, do some kind of pre-processing task, cancel request under particular conditions, etc.

For example, in the combination with https://github.com/hyperoslo/OhMyAuth

// In your configuration
// Remember to `resolve` or `reject` the promise
networking.middleware = { promise in
  AuthContainer.serviceNamed("service")?.accessToken { accessToken, error in
    if let error == error {
      promise.reject(error)
      return
    }

    guard let accessToken = accessToken else {
      promise.reject(CustomError())
      return
    }

    self.networking.authenticate(bearerToken: accessToken)
    promise.resolve()
  }
}

// Send your request like you usually do
networking.GET(request)
  .validate()
  .toJSONDictionary()
viktorgardart commented 8 years ago

Awesome work 👍 🎉

vadymmarkov commented 8 years ago

Thanks @viktorgardart I hope it will solve the problem you've explained in https://github.com/hyperoslo/Malibu/issues/42

vadymmarkov commented 8 years ago

@zenangst I think it's ready to merge.

zenangst commented 8 years ago

@vadymmarkov yeah