Apollo-link: [рдмрдЧ] рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд╕рдВрджрд░реНрдн "рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ" рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рджрд┐рд╕ре░ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: apollographql/apollo-link

рдЗрдЪреНрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо:
рдореИрдВ рдЯреЛрдХрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдореЗрдВ "рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ" рдореЗрдВ рдЯреЛрдХрди рд╕реЗрдЯ рдвреВрдВрдврдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

(рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ)ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо:
рдЕрдиреБрд░реЛрдз рдореЗрдВ рдореЗрд░рд╛ рдЯреЛрдХрди рдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рдХреЛрдИ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рддрд░реАрдХреЗ рд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ:

{рдбреЗрдЯрд╛: {},\n рд╕рдВрджрд░реНрдн: \n {рдЕрдиреБрд░реЛрдз: {sourceIp: '110.169.68.32', рд╣реЗрдбрд░: {}, httpMethod: 'рдкреЛрд╕реНрдЯ'},\n рдСрде: рдирд▓,\n рд╕реЗрд╢рди рдХреИрд╢: {},\ n рдкрд░реНрдпрд╛рд╡рд░рдг: {}, \ n graphcool: \ n {rootToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTI5NzkxNzEsImlhdCI6MTUxMjk3ODg3MSwiY2xpZW50SWQiOiJfIiwicHJvamVjdElkIjoiY2o5dnAwMzloMTl2bjAxNDhlc3UzbnYzMSIsInBlcm1hbmVudEF1dGhUb2tlbklkIjoiY2piMXdrMHR2NGExNDAxNTRxMXBrMnh0diJ9.WcqQchOGD-BwwwM4Nmh0zYoOpPk7YcGk1qzRcutDxmY', \ n рдЕрдВрддрд┐рдордмрд┐рдВрджреБрдУрдВ: [рд╡рд╕реНрддреБ], \ n projectId: 'cj9vp039h19vn0148esu3nv31', \ n рдЙрд░реНрдл: рдЕрд╢рдХреНрдд, \ n рдкреИрдЯ : 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTI5NzkxNzEsImlhdCI6MTUxMjk3ODg3MSwiY2xpZW50SWQiOiJfIiwicHJvamVjdElkIjoiY2o5dnAwMzloMTl2bjAxNDhlc3UzbnYzMSIsInBlcm1hbmVudEF1dGhUb2tlbklkIjoiY2piMXdrMHR2NGExNDAxNTRxMXBrMnh0diJ9.WcqQchOGD-BwwwM4Nmh0zYoOpPk7YcGk1qzRcutDxmY', \ n serviceId: 'cj9vp039h19vn0148esu3nv31'}}} "

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХреИрд╕реЗ рдХрд░реЗрдВ:

import ApolloClient from "apollo-client";
import { HttpLink } from "apollo-link-http";
import { ApolloLink, concat } from "apollo-link";
import { InMemoryCache } from "apollo-cache-inmemory";
import { setContext } from "apollo-link-context";

const authMiddleware = setContext(request => {
  new Promise((success, fail) => {
    AsyncStorage.getItem(ProjectSettings.graphcoolKey).then(token => {
      success({
        headers: {
          authorization: 'Bearer ${token}'
        }
      });
    });
  });
});

const httpLink = new HttpLink({
  uri: ProjectSettings.simpleGraphCoolEndPoint
});

const client = new ApolloClient({
  link: concat(authMiddleware , httpLink),
  cache: new InMemoryCache()
});

рдореИрдВрдиреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

success({ token: 'async found token' })
success({ auth: 'async found token' })
success({ headers:  { auth: 'async found token' }})
...

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рднреА рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрддрд╛

const middleware = setContext((request, previousContext) => ({
  authorization: '1234'
}))

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдкрдХреЗ рд░реЗрдкреНрд░реЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЗ рд░реЗрдкреНрд░реЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

@imranolas рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ :)
рдореИрдВ рдпрд╛ рддреЛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдореБрдЭрд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧрд▓рддреА рд╣реИред

рджрд░рдЕрд╕рд▓, рдореИрдВрдиреЗ https://github.com/apollographql/apollo-link/tree/master/packages/apolo-link-context рд╕реЗ рдХреЛрдб рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЧрд▓рддреА рд╕реЗ рдХреБрдЫ рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝ рджрд┐рдП:/

рдорджрдж рдХреЗ рд▓рд┐рдП @imranolas рдзрдиреНрдпрд╡рд╛рдж!

рдбреЙрдХреНрдЯрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

success({ token: "async found token" })
if (token) return { token };
{  headers: { authorization: "1234"} }

рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл

{  headers: { authorization: "1234"} }

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде header рдлрд╝реАрд▓реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЗрдбрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫрджреНрдо рдХреЛрдб рд╣реИ рдпрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдордп рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lobosan picture lobosan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bwhitty picture bwhitty  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

NicholasLYang picture NicholasLYang  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

steffenmllr picture steffenmllr  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ChenRoth picture ChenRoth  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ