Adds plugin for Contentful synchronization (#75)

Adds plugin for Contentful

Will create product and product variants in Contentful, when created in Medusa

Closes #47
This commit is contained in:
Oliver Windall Juhl
2020-07-02 09:41:57 +02:00
committed by GitHub
parent a7951ca29c
commit d56ccba2b1
20 changed files with 7662 additions and 109 deletions
@@ -0,0 +1,10 @@
import { Router } from "express"
import hooks from "./routes/hooks"
export default (container) => {
const app = Router()
hooks(app)
return app
}
@@ -0,0 +1 @@
export default (fn) => (...args) => fn(...args).catch(args[2])
@@ -0,0 +1,5 @@
import { default as wrap } from "./await-middleware"
export default {
wrap,
}
@@ -0,0 +1,25 @@
export default async (req, res) => {
try {
const contentfulService = req.scope.resolve("contentfulService")
const contentfulType = req.body.contentType.sys.id
let updated = {}
switch (contentfulType) {
case "product":
updated = await contentfulService.sendContentfulProductToAdmin(req.body)
break
case "productVariant":
updated = await contentfulService.sendContentfulProductVariantToAdmin(
req.body
)
break
default:
break
}
res.status(200).send(updated)
} catch (error) {
res.status(400).send(`Webhook error: ${error.message}`)
}
}
@@ -0,0 +1,13 @@
import { Router } from "express"
import bodyParser from "body-parser"
import middlewares from "../../middlewares"
const route = Router()
export default (app) => {
app.use("/hooks", route)
route.post("/contentful", middlewares.wrap(require("./contentful").default))
return app
}