Skip to content

A network interface for Apollo that enables file-uploading to Absinthe back ends.

Notifications You must be signed in to change notification settings

slab/apollo-absinthe-upload-link

This branch is 4 commits ahead of bytewitchcraft/apollo-absinthe-upload-link:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 15, 2024
77d82c2 · Jul 15, 2024

History

62 Commits
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024
Jul 15, 2024

Repository files navigation

Apollo-Absinthe-Upload-Link

A network interface for Apollo that enables file-uploading to Absinthe back ends.

Usage

Install via yarn or npm and then use createLink from the package in the construction of your ApolloClient-instance.

import ApolloClient from "apollo-client";
import { createLink } from "slab-apollo-absinthe-upload-link";

const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    })
});

Custom headers

Custom headers can be passed through options of the link.

import ApolloClient from "apollo-client";
import { createLink } from "slab-apollo-absinthe-upload-link";

const headers = { authorization: 1234 } 
const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    }),
    headers,
});

Custom fetch

You can use the fetch option when creating an apollo-absinthe-upload-link to do a lot of custom networking. This is useful if you want to modify the request based on the calculated headers or calculate the uri based on the operation.

import ApolloClient from "apollo-client";
import { createLink } from "slab-apollo-absinthe-upload-link";

const customFetch = (uri, options) => {
  const { header } = Hawk.client.header(
    "http://example.com:8000/resource/1?b=1&a=2",
    "POST",
    { credentials: credentials, ext: "some-app-data" }
  );
  options.headers.Authorization = header;
  return fetch(uri, options);
};

const headers = { authorization: 1234 } 
const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    }),
    headers,
    fetch: customFetch
});

Usage with React Native

Substitute File with ReactNativeFile:

import { ReactNativeFile } from 'apollo-absinthe-upload-link'

const file = new ReactNativeFile({
  uri: '…',
  type: 'image/jpeg',
  name: 'photo.jpg'
})

const files = ReactNativeFile.list([
  {
    uri: '…',
    type: 'image/jpeg',
    name: 'photo-1.jpg'
  },
  {
    uri: '…',
    type: 'image/jpeg',
    name: 'photo-2.jpg'
  }
])

License

MIT (see LICENSE)

Acknowledgements

About

A network interface for Apollo that enables file-uploading to Absinthe back ends.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 68.9%
  • JavaScript 26.7%
  • Shell 4.4%