@oberoncms/plugin-flydrive
A plugin that provides an Image component for
OberonCMS it's pre-configured to using
flydrive, a filesystem abstraction
layer that allows you to easily interact with files systems of different cloud
storage providers.
Table of Contents
pnpm add @oberoncms/plugin-flydrive flydrive
Setup
for example using S3 driver:
npm i @aws-sdk/s3-request-presigner @aws-sdk/client-s3
- create a flydrive adapter, and generate your plugin!
import "server-only"
import { initAdapter } from "@oberoncms/core/adapter"
import { S3Driver } from "flydrive/drivers/s3"
import { getFlyDrivePlugin } from "@oberoncms/plugin-flydrive/plugin"
const s3Driver = new S3Driver({
credentials: {
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
},
forcePathStyle: true,
bucket: process.env.bucket,
urlBuilder: {
generateSignedURL()
generateURL()
},
})
export const { flyDrivePlugin, initFlyDriveRouter } = getFlyDrivePlugin(s3Driver)
export const adapter = initAdapter([
flyDrivePlugin,
])
prepare API
import { initFlyDriveRouter } from "./adapter"
export const { GET, POST } = initFlyDriveRouter()
Editor configuration
import { Image } from "@oberoncms/plugin-flydrive"
export const editorConfig = {
components: {
Image,
Nested: {
fields: {
images: {
type: "array",
arrayFields: {
image: ImageNestedField,
},
},
image: {
type: "object",
objectFields: {
image: ImageNestedField ,
},
},
},
render(props: {
images?: OberonImage[]
image?: { image?: OberonImage }
}) {
return <></>
},
},
},
}
That's it! you can now use the Image component in your editor!
Want to discuss this plugin?
contact me on Discord @sudoahmed
GitHub @ahmedrowaihi