Spaces:
Sleeping
Sleeping
chore: refactor into getScimBaseUrl
Browse filesSigned-off-by: Hung-Han (Henry) Chen <chenhungh@gmail.com>
- src/resources/(groups)/[groupId]/index.ts +2 -1
- src/resources/(groups)/index.ts +2 -1
- src/resources/(users)/[userId]/index.ts +2 -1
- src/resources/(users)/index.ts +2 -1
- src/tools/addUserToGroup.ts +2 -1
- src/tools/createGroup.ts +2 -1
- src/tools/createUser.ts +2 -1
- src/tools/deleteGroup.ts +2 -1
- src/tools/deleteUser.ts +2 -1
- src/tools/patchGroup.ts +2 -1
- src/tools/patchUser.ts +2 -1
- src/tools/removeUserFromGroup.ts +2 -1
- src/tools/replaceGroup.ts +2 -1
- src/tools/replaceUser.ts +2 -1
- src/utils/getSCIMBaseUrl.ts +15 -0
src/resources/(groups)/[groupId]/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ResourceMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const schema = {
|
| 7 |
groupId: z.string().describe("The ID of the group"),
|
|
@@ -32,7 +33,7 @@ export default async function handler({
|
|
| 32 |
}: InferSchema<typeof schema>) {
|
| 33 |
const requestHeaders = headers();
|
| 34 |
const apiToken = getScimToken(requestHeaders);
|
| 35 |
-
const baseUrl = requestHeaders
|
| 36 |
|
| 37 |
if (!apiToken) {
|
| 38 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../../../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const schema = {
|
| 8 |
groupId: z.string().describe("The ID of the group"),
|
|
|
|
| 33 |
}: InferSchema<typeof schema>) {
|
| 34 |
const requestHeaders = headers();
|
| 35 |
const apiToken = getScimToken(requestHeaders);
|
| 36 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 37 |
|
| 38 |
if (!apiToken) {
|
| 39 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/resources/(groups)/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ResourceMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const schema = {
|
| 7 |
filter: z
|
|
@@ -37,7 +38,7 @@ export default async function handler({
|
|
| 37 |
}: InferSchema<typeof schema>) {
|
| 38 |
const requestHeaders = headers();
|
| 39 |
const apiToken = getScimToken(requestHeaders);
|
| 40 |
-
const baseUrl = requestHeaders
|
| 41 |
|
| 42 |
if (!apiToken) {
|
| 43 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const schema = {
|
| 8 |
filter: z
|
|
|
|
| 38 |
}: InferSchema<typeof schema>) {
|
| 39 |
const requestHeaders = headers();
|
| 40 |
const apiToken = getScimToken(requestHeaders);
|
| 41 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 42 |
|
| 43 |
if (!apiToken) {
|
| 44 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/resources/(users)/[userId]/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ResourceMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const schema = {
|
| 7 |
userId: z.string().describe("The ID of the user"),
|
|
@@ -32,7 +33,7 @@ export default async function handler({
|
|
| 32 |
}: InferSchema<typeof schema>) {
|
| 33 |
const requestHeaders = headers();
|
| 34 |
const apiToken = getScimToken(requestHeaders);
|
| 35 |
-
const baseUrl = requestHeaders
|
| 36 |
|
| 37 |
if (!apiToken) {
|
| 38 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../../../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const schema = {
|
| 8 |
userId: z.string().describe("The ID of the user"),
|
|
|
|
| 33 |
}: InferSchema<typeof schema>) {
|
| 34 |
const requestHeaders = headers();
|
| 35 |
const apiToken = getScimToken(requestHeaders);
|
| 36 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 37 |
|
| 38 |
if (!apiToken) {
|
| 39 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/resources/(users)/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ResourceMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const schema = {
|
| 7 |
filter: z
|
|
@@ -37,7 +38,7 @@ export default async function handler({
|
|
| 37 |
}: InferSchema<typeof schema>) {
|
| 38 |
const requestHeaders = headers();
|
| 39 |
const apiToken = getScimToken(requestHeaders);
|
| 40 |
-
const baseUrl = requestHeaders
|
| 41 |
|
| 42 |
if (!apiToken) {
|
| 43 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const schema = {
|
| 8 |
filter: z
|
|
|
|
| 38 |
}: InferSchema<typeof schema>) {
|
| 39 |
const requestHeaders = headers();
|
| 40 |
const apiToken = getScimToken(requestHeaders);
|
| 41 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 42 |
|
| 43 |
if (!apiToken) {
|
| 44 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/addUserToGroup.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ToolMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 5 |
import { readJsonBody } from "../utils/responseBody";
|
| 6 |
|
| 7 |
export const metadata: ToolMetadata = {
|
|
@@ -26,7 +27,7 @@ export default async function addUserToGroup(
|
|
| 26 |
) {
|
| 27 |
const requestHeaders = headers();
|
| 28 |
const apiToken = getScimToken(requestHeaders);
|
| 29 |
-
const baseUrl = requestHeaders
|
| 30 |
|
| 31 |
if (!apiToken) {
|
| 32 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/createGroup.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { groupResourceSchema } from "../schemas/groupResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -32,7 +33,7 @@ export default async function createGroup(
|
|
| 32 |
const { groupResource } = params;
|
| 33 |
const requestHeaders = headers();
|
| 34 |
const apiToken = getScimToken(requestHeaders);
|
| 35 |
-
const baseUrl = requestHeaders
|
| 36 |
|
| 37 |
if (!apiToken) {
|
| 38 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { groupResourceSchema } from "../schemas/groupResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 33 |
const { groupResource } = params;
|
| 34 |
const requestHeaders = headers();
|
| 35 |
const apiToken = getScimToken(requestHeaders);
|
| 36 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 37 |
|
| 38 |
if (!apiToken) {
|
| 39 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/createUser.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { userResourceSchema } from "../schemas/userResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -32,7 +33,7 @@ export default async function createUser(
|
|
| 32 |
const { userResource } = params;
|
| 33 |
const requestHeaders = headers();
|
| 34 |
const apiToken = getScimToken(requestHeaders);
|
| 35 |
-
const baseUrl = requestHeaders
|
| 36 |
|
| 37 |
if (!apiToken) {
|
| 38 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { userResourceSchema } from "../schemas/userResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 33 |
const { userResource } = params;
|
| 34 |
const requestHeaders = headers();
|
| 35 |
const apiToken = getScimToken(requestHeaders);
|
| 36 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 37 |
|
| 38 |
if (!apiToken) {
|
| 39 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/deleteGroup.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ToolMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const metadata: ToolMetadata = {
|
| 7 |
name: "delete-group",
|
|
@@ -24,7 +25,7 @@ export default async function deleteGroup(
|
|
| 24 |
) {
|
| 25 |
const requestHeaders = headers();
|
| 26 |
const apiToken = getScimToken(requestHeaders);
|
| 27 |
-
const baseUrl = requestHeaders
|
| 28 |
|
| 29 |
if (!apiToken) {
|
| 30 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const metadata: ToolMetadata = {
|
| 8 |
name: "delete-group",
|
|
|
|
| 25 |
) {
|
| 26 |
const requestHeaders = headers();
|
| 27 |
const apiToken = getScimToken(requestHeaders);
|
| 28 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 29 |
|
| 30 |
if (!apiToken) {
|
| 31 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/deleteUser.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ToolMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 5 |
|
| 6 |
export const metadata: ToolMetadata = {
|
| 7 |
name: "delete-user",
|
|
@@ -24,7 +25,7 @@ export default async function deleteUser(
|
|
| 24 |
) {
|
| 25 |
const requestHeaders = headers();
|
| 26 |
const apiToken = getScimToken(requestHeaders);
|
| 27 |
-
const baseUrl = requestHeaders
|
| 28 |
|
| 29 |
if (!apiToken) {
|
| 30 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 6 |
|
| 7 |
export const metadata: ToolMetadata = {
|
| 8 |
name: "delete-user",
|
|
|
|
| 25 |
) {
|
| 26 |
const requestHeaders = headers();
|
| 27 |
const apiToken = getScimToken(requestHeaders);
|
| 28 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 29 |
|
| 30 |
if (!apiToken) {
|
| 31 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/patchGroup.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { patchOperationSchema } from "../schemas/patchOperationSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -27,7 +28,7 @@ export default async function patchGroup(
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
-
const baseUrl = requestHeaders
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { patchOperationSchema } from "../schemas/patchOperationSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 28 |
) {
|
| 29 |
const requestHeaders = headers();
|
| 30 |
const apiToken = getScimToken(requestHeaders);
|
| 31 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 32 |
|
| 33 |
if (!apiToken) {
|
| 34 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/patchUser.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { patchOperationSchema } from "../schemas/patchOperationSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -27,7 +28,7 @@ export default async function patchUser(
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
-
const baseUrl = requestHeaders
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { patchOperationSchema } from "../schemas/patchOperationSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 28 |
) {
|
| 29 |
const requestHeaders = headers();
|
| 30 |
const apiToken = getScimToken(requestHeaders);
|
| 31 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 32 |
|
| 33 |
if (!apiToken) {
|
| 34 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/removeUserFromGroup.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type InferSchema, type ToolMetadata } from "xmcp";
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 5 |
import { readJsonBody } from "../utils/responseBody";
|
| 6 |
|
| 7 |
export const metadata: ToolMetadata = {
|
|
@@ -26,7 +27,7 @@ export default async function removeUserFromGroup(
|
|
| 26 |
) {
|
| 27 |
const requestHeaders = headers();
|
| 28 |
const apiToken = getScimToken(requestHeaders);
|
| 29 |
-
const baseUrl = requestHeaders
|
| 30 |
|
| 31 |
if (!apiToken) {
|
| 32 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 2 |
import { headers } from "xmcp/headers";
|
| 3 |
import { z } from "zod";
|
| 4 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 5 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/replaceGroup.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { groupResourceSchema } from "../schemas/groupResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -27,7 +28,7 @@ export default async function replaceGroup(
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
-
const baseUrl = requestHeaders
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { groupResourceSchema } from "../schemas/groupResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 28 |
) {
|
| 29 |
const requestHeaders = headers();
|
| 30 |
const apiToken = getScimToken(requestHeaders);
|
| 31 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 32 |
|
| 33 |
if (!apiToken) {
|
| 34 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/tools/replaceUser.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { headers } from "xmcp/headers";
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { userResourceSchema } from "../schemas/userResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
|
|
|
| 6 |
import { readJsonBody } from "../utils/responseBody";
|
| 7 |
|
| 8 |
export const metadata: ToolMetadata = {
|
|
@@ -27,7 +28,7 @@ export default async function replaceUser(
|
|
| 27 |
) {
|
| 28 |
const requestHeaders = headers();
|
| 29 |
const apiToken = getScimToken(requestHeaders);
|
| 30 |
-
const baseUrl = requestHeaders
|
| 31 |
|
| 32 |
if (!apiToken) {
|
| 33 |
throw new Error("Missing required headers: x-scim-api-key");
|
|
|
|
| 3 |
import { z } from "zod";
|
| 4 |
import { userResourceSchema } from "../schemas/userResourceSchema";
|
| 5 |
import { getScimToken } from "../utils/getSCIMApiKey";
|
| 6 |
+
import { getScimBaseUrl } from "../utils/getSCIMBaseUrl";
|
| 7 |
import { readJsonBody } from "../utils/responseBody";
|
| 8 |
|
| 9 |
export const metadata: ToolMetadata = {
|
|
|
|
| 28 |
) {
|
| 29 |
const requestHeaders = headers();
|
| 30 |
const apiToken = getScimToken(requestHeaders);
|
| 31 |
+
const baseUrl = getScimBaseUrl(requestHeaders);
|
| 32 |
|
| 33 |
if (!apiToken) {
|
| 34 |
throw new Error("Missing required headers: x-scim-api-key");
|
src/utils/getSCIMBaseUrl.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
type Headers = import("http").IncomingHttpHeaders;
|
| 2 |
+
|
| 3 |
+
export function getScimBaseUrl(headers: Headers): string {
|
| 4 |
+
let baseUrl = "";
|
| 5 |
+
|
| 6 |
+
if (process.env.SCIM_API_BASE_URL) {
|
| 7 |
+
baseUrl = process.env.SCIM_API_BASE_URL;
|
| 8 |
+
}
|
| 9 |
+
const baseUrlFromHeader = headers["x-scim-base-url"] || headers["X-SCIM-BASE-URL"];
|
| 10 |
+
if (typeof baseUrlFromHeader === "string") {
|
| 11 |
+
baseUrl = baseUrlFromHeader.trim();
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
return baseUrl;
|
| 15 |
+
}
|