Apollo-link-rest: рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП response.headers рд╕рд╛рде рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рдЖрд░рд╛рдо

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдирд╡ре░ 2020  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: apollographql/apollo-link-rest

рдирдорд╕реНрддреЗ,

рдореИрдВ рдмрд╛рдХреА рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдкреНрд░рддрд┐ useQuery() response.headers рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рдХреА рдПрдкреАрдЖрдИ, рдЬреЛ рд╣реЗрдбрд░ рдореЗрдВ first, prev, next, last рдЬрд╛рдирдХрд╛рд░реА рдбрд╛рд▓рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╣реИ: https://codesandbox.io/embed/how-to-access-response-0mqx7?file=/src/Client.ts

рдЖрдк рдбреЗрд╡рд▓рдк рдЯреВрд▓ Network рдЯреИрдм рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреЗрдВ, рд▓рд┐рдВрдХ рдореЗрдВ , рдкреЗрдЬрд┐рдиреЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ Headers рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗрдВ ....

рд╣рд╛рдпрд░ рдореЗрд░рд╛ рдореБрдЦреНрдп рдХреЛрдб рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, response.headers.link рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ...

  const queryTodos = gql`
      query Todos($page: number, $limit: number) {
        todos(_page: $page, _limit: $limit)
          @rest(type: "[Todo]", path: "/todos/?{args}") {
            userId
            id
            title
            completed
        }
     }
   `;

export const Todos = () => {
  const { data, loading, error } = useQuery(queryTodos, {
    variables: { page: 1, limit: 3 },
    fetchPolicy: "no-cache"
  });

 ...

  return (<div>...</div>)

рдореИрдВрдиреЗ рдпрд╣ рдкреНрд░рд╢реНрди рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рднреА рдкреВрдЫрд╛: https://stackoverflow.com/q/64791676/32799996 , рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред :рдбреА

enhancement enhancementЁЯТб feature help wanted ЁЯЫа questionтЭФ

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

@blatoo - рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдПрдХ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкреЛрд▓реЛ-рд▓рд┐рдВрдХ-рд░реЗрд╕реНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ, рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рд╣реЗрдбрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЧреНрд░рд╛рдл рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╣рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ "рдмреЙрдбреА" рдореЗрдВ рдПрдХ рдЧреБрдкреНрдд/рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ __headers рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреАрдЪрд░-рдлреНрд▓реИрдЧ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреБрдВрдЬрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рд╕рдВрдЧрдд рд╣реЛрдВред

const queryTodos = gql`
      query Todos($page: number, $limit: number) {
        todos(_page: $page, _limit: $limit)
          @rest(type: "[Todo]", path: "/todos/?{args}") {
+             __headers {
+                         XMyHeader
+             }
            userId
            id
            title
            completed
        }
     }
   `;

@fbartho рдЗрд╕ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЕрдЧрд░ рд╣рдо рд╣реЗрдбрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреАред рдореИрдВ рдЬреЗрд╕рди-рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╡реЗ Headers рдореЗрдВ рдкреЗрдЬрд┐рдиреЗрд╢рди рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдХрд░реНрд╕рд░ рдЖрдзрд╛рд░рд┐рдд рдкреЗрдЬрд┐рдиреЗрд╢рди рдЗрдиреНрдлреЛрд╕ рдХреЗ рд▓рд┐рдП рднреА рдбрд╛рд▓рддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ: responseTansformer рдФрд░ customFetch рд╡рд┐рдХрд▓реНрдкред рдХреНрдпрд╛ рдореИрдВ рдкреЗрдЬрд┐рдиреЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ ??? рдЕрд╕рд▓ рдореЗрдВ рдореИрдВрдиреЗ рдмрд╣реБрдд рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА...:

https://www.apollographql.com/docs/link/links/rest/#response -transforming

https://www.apollographql.com/docs/link/links/rest/#custom -fetch

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, apollo-link-rest рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП apollo-link рдХреЗ рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЬреЗрдПрд╕ Headers рдПрдкреАрдЖрдИ рдХреЛ рд╕реАрдзреЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, responseTransformer рдпрд╛ customFetch рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЛ рдЬреЛ рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

responseTransformer рдХреЛ JS Response рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ response.headers рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИред

рддреЛ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

responseTransformer: async (resp: Response) => {
    const body = await resp.json();
    const interestingHeaders = {};
    interestingHeaders.headerOne = resp.headers.get("headerOne"); // Pluck out the headers you want
    body.__headers = interestingHeaders
    return body;
}

рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ headers.entries() рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЗрдбрд░ рдХреЗ рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП headers.get() - рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдХрд┐ рд╕рдлрд╛рд░реА-рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЕрднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░рд▓реАрдХреГрдд рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдЖрдк рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛!

customFetch рднреА рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ responseTransformer рдЖрд╕рд╛рди рд╣реИред

@fbartho рд╡рд╛рд╣, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ! рдореИрдВрдиреЗ рдЕрднреА рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рд┐рдВрдХ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред

рдЕрдм рдпрд╣ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ, рдореИрдВ рдХреНрд╡реЗрд░реА рдореЗрдВ body.__headers.link рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореЗрд░рд╛ рдХреНрд╡реЗрд░реА рдХреЛрдб рд╣реИ:

const queryTodos = gql`
  query Todos($page: number, $limit: number) {
    todos(_page: $page, _limit: $limit)
      @rest(type: "TodoPagination", path: "/todos/?{args}") {
      __headers {
        link
      }
      userId
      id
      title
      completed
    }
  }
`;

рд▓реЗрдХрд┐рди __headers рдХрд╛ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИ ...
рдХреЛрдб рдпрд╣рд╛рдВ рд╣реИ: рдореИрдВрдиреЗ рдЖрдкрдХрд╛ рдХреЛрдб Client.ts рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдХреНрд╡реЗрд░реА рдХреЛрдб Todo.tsx :
https://codesandbox.io/s/how-to-access-response-0mqx7?file=/src/Todos.tsx

@fbartho рд╣рд╛рдп, рдореИрдВрдиреЗ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЖрдЦрд┐рд░ рдореЗрдВ, рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЕрдкрдиреА рд░рд╛рдп рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд┐рдзрд┐ 1: рд╡рд┐рдлрд▓ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ __headers рдореЗрдВ useQuery() рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдХрдИ рдмрд╛рд░ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░рд╣рд╛ред

рд╡рд┐рдзрд┐ 2: рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕рдВрджреЗрд╣ рд╣реИ
responseTransformer рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓реЗрдВ, __headers рдХреЛ __headers рдХреБрдВрдЬреА рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ рдЯреВрдбреВ рд╕реВрдЪреА рдХреЛ todo рдХреБрдВрдЬреА рдореЗрдВ рднреА рд░рдЦреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВрдХрд┐, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рднреА рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓ рджреА рдЬрд╛рдПрдЧреАред рддреЛ рдореБрдЭреЗ useQuery() рдореЗрдВ рд╕рднреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рдзрд┐ 3: рд╕рдлрд▓рддрд╛ рдФрд░ рдореГрдд рд╕рд░рд▓
рдореИрдВрдиреЗ __headers рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рд╣реИред responseTransformer рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ __headers рдХрд╛ рдорд╛рди рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рд╣реИ, рдФрд░ useQuery() рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐, рдореБрдЭреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЪрд░ рдмрдирд╛рдирд╛ рд╣реИ ...

@blatoo , рдпрд╣ рдПрдХ рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕реЗ new ApolloLink рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ

const paginationLink = new ApolloLink((operation, forward) => {
  return forward(operation).map((response) => {
    const context = operation.getContext();

    const { headers } = context.restResponses[0] || null;
    // in my case i'm making a bunch of sub queries, so i'm using `[0]` to get the headers from the top level.

    if (headers) {
      const pagination = getPaginationFromHeaders(headers.get('link'));

      return { ...response, data: { ...response.data, pagination } };
    }
    return response;
  });
});

const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: concat(paginationLink, restLink),
});
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

timhwang21 picture timhwang21  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sinisterra picture sinisterra  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Daniel-Griffiths picture Daniel-Griffiths  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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