Changed the parameter type AuthorizationType to TargetType in the token closure;

Added MultiTarget pattern of "Access Token Auth" to AccessTokenPlugin docs.
This commit is contained in:
ZJQ
2020-05-20 15:03:18 +08:00
parent 71180ee3b0
commit bf27491e8b
3 changed files with 35 additions and 3 deletions
+3 -3
View File
@@ -62,7 +62,7 @@ extension AuthorizationType: Equatable {
*/
public struct AccessTokenPlugin: PluginType {
public typealias TokenClosure = (AuthorizationType) -> String
public typealias TokenClosure = (TargetType) -> String
/// A closure returning the access token to be applied in the header.
public let tokenClosure: TokenClosure
@@ -92,8 +92,8 @@ public struct AccessTokenPlugin: PluginType {
else { return request }
var request = request
let authValue = authorizationType.value + " " + tokenClosure(authorizationType)
let realTarget = (target as? MultiTarget)?.target ?? target
let authValue = authorizationType.value + " " + tokenClosure(realTarget)
request.addValue(authValue, forHTTPHeaderField: "Authorization")
return request
+16
View File
@@ -45,6 +45,22 @@ let token = "eyeAm.AJsoN.weBTOKen"
let authPlugin = AccessTokenPlugin { _ in token }
let provider = MoyaProvider<YourAPI>(plugins: [authPlugin])
```
If you use `MultiTarget` with different token, you can do like this:
```swift
let fooToken = "eyeAm.AJsoN.weBTOKen.foo"
let barToken = "eyeAm.AJsoN.weBTOKen.bar"
let authPlugin = AccessTokenPlugin { target in
if target is FooService {
return fooToken
} else if target is BarService {
return barToken
}
return ""
}
let provider = MoyaProvider<MultiTarget>(plugins: [authPlugin])
```
The `AccessTokenPlugin` initializer accepts a `tokenClosure` that is responsible
for returning the token to be applied to the header of the request.
+16
View File
@@ -44,6 +44,22 @@ let authPlugin = AccessTokenPlugin { _ in token }
let provider = MoyaProvider<YourAPI>(plugins: [authPlugin])
```
如果你使用 `MultiTarget` 且返回不同的令牌,你可以像下面这样:
```swift
let fooToken = "eyeAm.AJsoN.weBTOKen.foo"
let barToken = "eyeAm.AJsoN.weBTOKen.bar"
let authPlugin = AccessTokenPlugin { target in
if target is FooService {
return fooToken
} else if target is BarService {
return barToken
}
return ""
}
let provider = MoyaProvider<MultiTarget>(plugins: [authPlugin])
```
`AccessTokenPlugin` 构造器接收一个`tokenClosure`闭包来负责返回一个可以被添加到request头部的令牌 。
2. 您的 `TargetType` 需要遵循`AccessTokenAuthorizable` 协议: