Skip to content

openpracticelibrary/opl-media-service

Repository files navigation

Open Practice Library - Media Service

A service for compression, optimization and storage of media for the Open Practice Library.

Currently uses GraphQL for both upload and retrieval, media is stored in the opl-media GitHub repository.

Run it locally

The service is set up to use the GitHub uploader by default. To use it, you will need to provide a few environment variables:

GITHUB_PAT - (github personal access token, so that the service can commit to the repository)
GITHUB_ORG - (github org where your repository lives)
GITHUB_REPO - (repository where your images are to be stored)
GITHUB_PAGES_URL - (base url for images stored in your github repository, we use pages, you don't have to)

After those environment variables are set, you can run the service:

node server.js

To test a file upload, you can open another terminal and run the following curl command (be sure to update the path to the image you're uploading on the last line):

curl -s -X POST \
    http://localhost:4002/graphql \
    -H "Content-Type: multipart/form-data" \
    -F 'operations={"query": "mutation ($imageUpload1: Upload!) { singleUpload(file: $imageUpload1) { filename, url } }","variables": { "imageUpload1": null } }' \
    -F 'map={ "z_image1": ["variables.imageUpload1"] }' \
    -F "z_image1=@/path/to/your/image"

You can also retrieve all images in your repository via GraphQL query. A curl command would look like so:

curl -X POST http://localhost:4002/graphql \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    --data-binary '{"query": "query { images { name, rawGHLink, link, size, type } }"}'

For more information on the GraphQL schema and what can be done with it, checkout the GraphQL web interface.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published