@@ -3,6 +3,25 @@ import Apollo
3
3
4
4
private let token = " YOUR_TOKEN "
5
5
6
+ class TokenAddingInterceptor : ApolloInterceptor {
7
+ func interceptAsync< Operation: GraphQLOperation > (
8
+ chain: RequestChain ,
9
+ request: HTTPRequest < Operation > ,
10
+ response: HTTPResponse < Operation > ? ,
11
+ completion: @escaping ( Result < GraphQLResult < Operation . Data > , Error > ) -> Void ) {
12
+ request. addHeader ( name: " Authorization " , value: " Bearer \( token) " )
13
+ chain. proceedAsync ( request: request, response: response, completion: completion)
14
+ }
15
+ }
16
+
17
+ class NetworkInterceptorProvider : LegacyInterceptorProvider {
18
+ override func interceptors< Operation: GraphQLOperation > ( for operation: Operation ) -> [ ApolloInterceptor ] {
19
+ var interceptors = super. interceptors ( for: operation)
20
+ interceptors. insert ( TokenAddingInterceptor ( ) , at: 0 )
21
+ return interceptors
22
+ }
23
+ }
24
+
6
25
final class RepositoriesViewController : UITableViewController {
7
26
private var repositories : [ SearchRepositoriesQuery . Data . Search . Edge . Node . AsRepository ] ? {
8
27
didSet {
@@ -11,14 +30,16 @@ final class RepositoriesViewController: UITableViewController {
11
30
}
12
31
13
32
private lazy var apollo : ApolloClient = {
14
- let network = RequestChainNetworkTransport (
15
- interceptorProvider: LegacyInterceptorProvider ( ) ,
16
- endpointURL: URL ( string: " https://api.github.com/graphql " ) !,
17
- additionalHeaders: [
18
- " Authorization " : " Bearer \( token) "
19
- ]
33
+ let client = URLSessionClient ( )
34
+ let cache = InMemoryNormalizedCache ( )
35
+ let store = ApolloStore ( cache: cache)
36
+ let provider = NetworkInterceptorProvider ( client: client, store: store)
37
+ let url = URL ( string: " https://api.github.com/graphql " ) !
38
+ let transport = RequestChainNetworkTransport (
39
+ interceptorProvider: provider,
40
+ endpointURL: url
20
41
)
21
- return . init( networkTransport: network )
42
+ return . init( networkTransport: transport , store : store )
22
43
} ( )
23
44
24
45
override func viewWillAppear( _ animated: Bool ) {
0 commit comments