src/app/shared/graphql.module.ts
import { NgModule } from '@angular/core';
import { HttpClientModule, HttpHeaders } from '@angular/common/http';
import { ApolloModule, APOLLO_OPTIONS } from 'apollo-angular';
import { HttpLinkModule, HttpLink } from 'apollo-angular-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { setContext } from 'apollo-link-context';
import { ApolloLink } from 'apollo-link';
const uri = 'https://api.github.com/graphql';
export function createApollo(httpLink: HttpLink) {
const basic = setContext((op, ctx) => ({
headers: new HttpHeaders().set('Accept', 'charset=uf-8')
}));
const auth = setContext((operation, ctx) => ({
headers: ctx.headers.append(
'Authorization',
`Bearer 92ad2f89a0eaa8693abdf05d5d4889c70873491b`
)
}));
const link = ApolloLink.from([basic, auth, httpLink.create({ uri })]);
return {
link,
cache: new InMemoryCache()
};
}
@NgModule({
exports: [HttpClientModule, ApolloModule, HttpLinkModule],
providers: [
{
provide: APOLLO_OPTIONS,
useFactory: createApollo,
deps: [HttpLink]
}
]
})
export class GraphQLModule {}