@simpleview/sv-filestorage-client
v1.4.1
Published
Client for communicating with sv-filestorage
Downloads
13
Maintainers
Keywords
Readme
sv-filestorage-client
Client for communicating with the sv-filestorage
GraphQL system.
It is built in TypeScript and has one peer dependency of @simpleview/sv-graphql-client
.
OS Support
The expectation is that this application will be installed in Linux using sv-kubernetes.
Prerequisites
Install
Using npm:
npm install @simpleview/sv-filestorage-client
Using yarn:
yarn install @simpleview/sv-filestorage-client
Update
To update to the latest version, rerun the install command.
Authentication Requirements
Interactions with sv-filestorage
require authentication as a Simpleview user or a user with appropriate filestorage permissions.
Use a Google Service Account when interacting with the service on behalf of a product.
const { AuthPrefix } = require("@simpleview/sv-auth-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
async function serviceAccountToken() {
const service_account = JSON.parse(SERVICE_ACCOUNT_JSON);
const { auth } = new GraphServer({
graphUrl: AUTH_GRAPHQL_URL,
prefixes: [AuthPrefix]
});
// authorize the service_account return the token
const { token } = await auth.login_service_account({
input: {
email: service_account.client_email,
private_key: service_account.private_key
},
fields: `
success
token
`
});
return token;
}
The token
should be added to the context
for each function call.
Implementation & Usage
To see the input parameters and output fields of an endpoint, view the Schema in the GraphQL Explorer at https://graphql.simpleviewinc.com/ for the corresponding GraphQL query.
FileStoragePrefix
FileStoragePrefix
can be loaded into the sv-graphql-client
GraphServer
to use as a client library for accessing filestorage
in GraphQL.
JavaScript:
const { FileStoragePrefix } = require("@simpleview/sv-filestorage-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
module.exports = new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [FileStoragePrefix] });
TypeScript:
import { FileStoragePrefix } from "@simpleview/sv-filestorage-client";
import { GraphServer } from "@simpleview/sv-graphql-client";
export default new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [FileStoragePrefix] });
Where you are making server requests:
JavaScript:
const { filestorage } = require("./fileStorageGraphServer");
TypeScript:
import { filestorage } from "./fileStorageGraphServer";
FileStoragePrefix.buckets
This method wraps the filestorage.buckets
GraphQL query.
const result = await filestorage.buckets({
fields: `
count
docs {
acct_id
name
storage_class
versioning
maximum_size
}
`,
filter: {
name: "your_bucket_name"
},
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.buckets_upsert
This method wraps the filestorage.buckets_upsert
GraphQL mutation.
const result = await filestorage.buckets_insert({
input: {
id: "5c8c37b5df622c0064491fca",
name: "your_bucket_name",
storage_class: autoclass,
versioning: false,
maximum_size: 10000
},
fields: "success message doc { id acct_id name storage_class versioning minimum_size }"
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.buckets_remove
This method wraps the filestorage.buckets_remove
GraphQL mutation.
const result = await filestorage.buckets_remove({
input: {
name: "your_bucket_name"
},
fields: "success message",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.file
This method wraps the filestorage.file
Graphql query.
const result = await filestorage.file({
id: "gcp://bucket_name/61fdc7a5-573d-4e19-865a-500b0e94407a-your_file_name",
fields: "id acct_id ... on filestorage_file_gcp { content_type generation size created updated deleted last_accessed metadata }"
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files
This method wraps the filestorage.files
GraphQL query.
const result = await filestorage.files({
input: {
prefix: "gcp://bucket_name/images/landscape/"
},
options: {
versions: true
}
fields: "count docs { id acct_id ... on filestorage_file_gcp { content_type generation size created updated deleted last_accessed metadata } }"
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files_upload_start
This method wraps the filestorage.files_upload_start
GraphQL mutation.
const result = await filestorage.files_upload_start({
input: {
name: "gcp://your_bucket_name/your_file_name",
metadata: {
property: "value"
}
},
fields: "success message id",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files_upload_update_start
This method wraps the filestorage.files_upload_update_start
GraphQL mutation.
const result = await filestorage.files_upload_update_start({
input: {
id: "gcp://your_bucket_name/415b7682-8941-448a-bece-cca22eb10837-your_file_name",
metadata: {
property: "value"
}
},
fields: "success message",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files_upload_chunk
This method wraps the filestorage.files_upload_chunk
GraphQL mutation.
const result = await filestorage.files_upload_chunk({
input: {
id: "gcp://your_bucket_name/61fdc7a5-573d-4e19-865a-500b0e94407a-your_file_name",
data: "base64EncodedData"
},
fields: "success message",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files_upload_end
This method wraps the filestorage.files_upload_end
GraphQL mutation.
const result = await filestorage.files_upload_end({
input: {
id: "gcp://your_bucket_name/61fdc7a5-573d-4e19-865a-500b0e94407a-your_file_name"
},
fields: "success message doc { acct_id id metadata created updated }",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
});
FileStoragePrefix.files_remove
This method wraps the filestorage.files_remove
GraphQL mutation.
const = await filestorage.files_remove({
input: {
id: "gcp://your_bucket_name/61fdc7a5-573d-4e19-865a-500b0e94407a-your_file_name"
},
fields: "success message",
context: {
acct_id: "your_acct_id",
token // from serviceAccountToken call
}
})
Related Documentation
Troubleshooting
For any assistance please reach out on the sv-filestorage Slack channel.