Skip to content

Commit

Permalink
add config auth location
Browse files Browse the repository at this point in the history
  • Loading branch information
lloydzhou committed Sep 3, 2024
1 parent 3ec67f9 commit 2b317f6
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 14 deletions.
1 change: 1 addition & 0 deletions app/components/plugin.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
max-height: 240px;
overflow-y: auto;
white-space: pre-wrap;
min-width: 300px;
}
}

24 changes: 24 additions & 0 deletions app/components/plugin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,30 @@ export function PluginPage() {
<option value="custom">{Locale.Plugin.Auth.Custom}</option>
</select>
</ListItem>
{["bearer", "basic", "custom"].includes(
editingPlugin.authType as string,
) && (
<ListItem title={Locale.Plugin.Auth.Location}>
<select
value={editingPlugin?.authLocation}
onChange={(e) => {
pluginStore.updatePlugin(editingPlugin.id, (plugin) => {
plugin.authLocation = e.target.value;
});
}}
>
<option value="header">
{Locale.Plugin.Auth.LocationHeader}
</option>
<option value="query">
{Locale.Plugin.Auth.LocationQuery}
</option>
<option value="body">
{Locale.Plugin.Auth.LocationBody}
</option>
</select>
</ListItem>
)}
{editingPlugin.authType == "custom" && (
<ListItem title={Locale.Plugin.Auth.CustomHeader}>
<input
Expand Down
6 changes: 5 additions & 1 deletion app/locales/cn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -551,10 +551,14 @@ const cn = {
Basic: "Basic",
Bearer: "Bearer",
Custom: "自定义",
CustomHeader: "自定义头",
CustomHeader: "自定义参数名称",
Token: "Token",
Proxy: "使用代理",
ProxyDescription: "使用代理解决 CORS 错误",
Location: "位置",
LocationHeader: "Header",
LocationQuery: "Query",
LocationBody: "Body",
},
EditModal: {
Title: (readonly: boolean) => `编辑插件 ${readonly ? "(只读)" : ""}`,
Expand Down
6 changes: 5 additions & 1 deletion app/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -559,10 +559,14 @@ const en: LocaleType = {
Basic: "Basic",
Bearer: "Bearer",
Custom: "Custom",
CustomHeader: "Custom Header",
CustomHeader: "Parameter Name",
Token: "Token",
Proxy: "Using Proxy",
ProxyDescription: "Using proxies to solve CORS error",
Location: "Location",
LocationHeader: "Header",
LocationQuery: "Query",
LocationBody: "Body",
},
EditModal: {
Title: (readonly: boolean) =>
Expand Down
32 changes: 20 additions & 12 deletions app/store/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export type Plugin = {
content: string;
builtin: boolean;
authType?: string;
authLocation?: string;
authHeader?: string;
authToken?: string;
usingProxy?: boolean;
Expand Down Expand Up @@ -50,16 +51,17 @@ export const FunctionToolService = {
const definition = yaml.load(plugin.content) as any;
const serverURL = definition?.servers?.[0]?.url;
const baseURL = !!plugin?.usingProxy ? "/api/proxy" : serverURL;
const headers: Record<string, string | undefined> = {
"X-Base-URL": !!plugin?.usingProxy ? serverURL : undefined,
};
if (plugin?.authLocation == "header") {
headers[headerName] = tokenValue;
}
const api = new OpenAPIClientAxios({
definition: yaml.load(plugin.content) as any,
axiosConfigDefaults: {
baseURL,
headers: {
// 'Cache-Control': 'no-cache',
// 'Content-Type': 'application/json', // TODO
[headerName]: tokenValue,
"X-Base-URL": !!plugin?.usingProxy ? serverURL : undefined,
},
headers,
},
});
try {
Expand Down Expand Up @@ -111,20 +113,26 @@ export const FunctionToolService = {
funcs: operations.reduce((s, o) => {
// @ts-ignore
s[o.operationId] = function (args) {
const argument = [];
const parameters: Record<string, any> = {};
if (o.parameters instanceof Array) {
o.parameters.forEach((p) => {
// @ts-ignore
argument.push(args[p?.name]);
parameters[p?.name] = args[p?.name];
// @ts-ignore
delete args[p?.name];
});
} else {
argument.push(null);
}
argument.push(args);
if (plugin?.authLocation == "query") {
parameters[headerName] = tokenValue;
} else if (plugin?.authLocation == "body") {
args[headerName] = tokenValue;
}
// @ts-ignore
return api.client[o.operationId].apply(null, argument);
return api.client[o.operationId](
parameters,
args,
api.axiosConfigDefaults,
);
};
return s;
}, {}),
Expand Down

0 comments on commit 2b317f6

Please sign in to comment.