A network interface for Apollo that enables file-uploading to Absinthe back ends.
npm install apollo-absinthe-upload-link
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.
``js
import ApolloClient from "apollo-client";
import { createLink } from "apollo-absinthe-upload-link";
const client = new ApolloClient({
link: createLink({
uri: "/graphql"
})
});
`
Custom headers can be passed through options of the link.
`js
import ApolloClient from "apollo-client";
import { createLink } from "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.
`js
import ApolloClient from "apollo-client";
import { createLink } from "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:
`js
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`