Skip to content

Commit

Permalink
feat: support for requests without content-type header (renamed mid…
Browse files Browse the repository at this point in the history
…dlewares)
  • Loading branch information
aiji42 committed Jun 15, 2022
1 parent 7450ae7 commit 27ffb99
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 25 deletions.
14 changes: 6 additions & 8 deletions README.md
Expand Up @@ -37,27 +37,25 @@ The server script is as follows.
Note that requests can reach paths other than `/graphql`. It is recommended that all paths be made available to receive requests.

```ts
// index.ts
import { PrismaClient, Prisma } from "@prisma/client";
import express from "express";
import { ApolloServer } from "apollo-server-express";
import { authenticate, errorHandler, makeServerConfig } from "prisma-data-proxy-alt";
import { beforeMiddleware, afterMiddleware, makeServerConfig } from "prisma-data-proxy-alt";

const db = new PrismaClient();

const port = process.env.PORT || "3000";
const authToken = process.env.DATA_PROXY_API_KEY || "foo";
const apiKey = process.env.DATA_PROXY_API_KEY || "foo";

(async () => {
const app = express();
const server = new ApolloServer(makeServerConfig(Prisma, db));

await Promise.all([db.$connect(), server.start()]);
app.use(errorHandler());
app.use(authenticate(authToken));
server.applyMiddleware({
app,
path: "/*",
});
app.use(beforeMiddleware());
app.use(afterMiddleware({ apiKey }));
server.applyMiddleware({ app, path: "/*" });
app.listen({ port }, () =>
console.log(
`🚀 Server ready at http://localhost:${port}${server.graphqlPath}`
Expand Down
2 changes: 1 addition & 1 deletion sample.ts
@@ -1,4 +1,4 @@
import { PrismaClient, Language } from "@prisma/client";
import { PrismaClient, Language } from "@prisma/client/edge";

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Expand Down
4 changes: 2 additions & 2 deletions src/index.ts
@@ -1,3 +1,3 @@
export { makeServerConfig } from "./helpers/makeServerConfig";
export { authenticate } from "./middlewares/authenticate";
export { errorHandler } from "./middlewares/errorHandler";
export { beforeMiddleware } from "./middlewares/beforeMiddleware";
export { afterMiddleware } from "./middlewares/afterMiddleware";
@@ -1,6 +1,6 @@
import { Request, Response, NextFunction } from "express";

export const errorHandler =
export const afterMiddleware =
() => (req: Request, res: Response, next: NextFunction) => {
const oldSend = res.send;

Expand Down
9 changes: 0 additions & 9 deletions src/middlewares/authenticate.ts

This file was deleted.

15 changes: 15 additions & 0 deletions src/middlewares/beforeMiddleware.ts
@@ -0,0 +1,15 @@
import { Request, Response, NextFunction } from "express";

export const beforeMiddleware =
({ apiKey }: { apiKey: string }) =>
(req: Request, res: Response, next: NextFunction) => {
// support request by @prisma/client/edge
if (req.method === "POST" && !req.headers["content-type"])
req.headers["content-type"] = "application/json";

// auth check
const token = req.headers.authorization || "";
if (req.method !== "OPTIONS" && token !== `Bearer ${apiKey}`)
return res.status(401).end();
next();
};
8 changes: 4 additions & 4 deletions src/server.ts
@@ -1,23 +1,23 @@
import express from "express";
import { ApolloServer } from "apollo-server-express";
import { PrismaClient, Prisma } from "@prisma/client";
import { errorHandler, makeServerConfig, authenticate } from "./";
import { afterMiddleware, makeServerConfig, beforeMiddleware } from "./";

const db = new PrismaClient({
log: ["query", "info", "warn", "error"],
});

const port = process.env.PORT || "3000";
const corsOrigin = process.env.CORS_ORIGIN;
const authToken = process.env.DATA_PROXY_API_KEY || "foo";
const apiKey = process.env.DATA_PROXY_API_KEY || "foo";

(async () => {
const app = express();
const server = new ApolloServer(makeServerConfig(Prisma, db));

await Promise.all([db.$connect(), server.start()]);
app.use(errorHandler());
app.use(authenticate(authToken));
app.use(afterMiddleware());
app.use(beforeMiddleware({ apiKey }));
server.applyMiddleware({
app,
path: "/*",
Expand Down

0 comments on commit 27ffb99

Please sign in to comment.