A network interface for Apollo that enables file-uploading to Absinthe back ends.
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 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,
});
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
});
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'
}
])
MIT (see LICENSE)
- @labtwentyfive's
apollo-absinthe-upload-client
- @jaydenseric
apollo-upload-client