| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| import { identity, pickBy } from 'lodash'; |
| import { request } from 'umi'; |
| |
| import { transformLabelList } from '@/helpers'; |
| |
| import { transformRouteData, transformStepData, transformUpstreamNodes } from './transform'; |
| |
| export const create = (data: RouteModule.RequestData, mode?: RouteModule.RequestMode) => |
| request(`/routes`, { |
| method: 'POST', |
| data: mode === 'RawData' ? data : transformStepData(data), |
| }); |
| |
| export const update = ( |
| rid: string, |
| data: RouteModule.RequestData, |
| mode?: RouteModule.RequestMode, |
| ) => |
| request(`/routes/${rid}`, { |
| method: 'PUT', |
| data: mode === 'RawData' ? data : transformStepData(data), |
| }); |
| |
| export const fetchItem = (rid: number) => |
| request(`/routes/${rid}`).then((data) => transformRouteData(data.data)); |
| |
| export const fetchList = ({ current = 1, pageSize = 10, ...res }) => { |
| const { labels = [], API_VERSION = [], host = "", id = "", desc = "", status} = res; |
| |
| return request<Res<ResListData<RouteModule.ResponseBody>>>('/routes', { |
| params: { |
| name: res.name, |
| uri: res.uri, |
| label: labels.concat(API_VERSION).join(','), |
| page: current, |
| page_size: pageSize, |
| status, |
| host, |
| desc, |
| id, |
| }, |
| }).then(({ data }) => { |
| return { |
| data: data.rows, |
| total: data.total_size, |
| }; |
| }); |
| }; |
| |
| export const remove = (rid: string[]) => request(`/routes/${rid}`, { method: 'DELETE' }); |
| |
| export const checkUniqueName = (name = '', exclude = '') => |
| request('/notexist/routes', { |
| params: pickBy( |
| { |
| name, |
| exclude, |
| }, |
| identity, |
| ), |
| }); |
| |
| export const fetchUpstreamItem = (sid: string) => { |
| return request(`/upstreams/${sid}`).then(({ nodes, timeout, id }) => { |
| return { |
| upstreamHostList: transformUpstreamNodes(nodes), |
| timeout, |
| upstream_id: id, |
| }; |
| }); |
| }; |
| |
| export const checkHostWithSSL = (hosts: string[]) => |
| request('/check_ssl_exists', { |
| method: 'POST', |
| data: { hosts }, |
| }); |
| |
| export const fetchLabelList = () => |
| request('/labels/route').then(({ data }) => transformLabelList(data.rows) as LabelList); |
| |
| export const updateRouteStatus = (rid: string, status: RouteModule.RouteStatus) => |
| request(`/routes/${rid}`, { |
| method: 'PATCH', |
| data: { status }, |
| }); |
| |
| export const debugRoute = (headers: any, data: RouteModule.debugRequest) => { |
| return request('/debug-request-forwarding', { |
| method: 'post', |
| data, |
| headers, |
| }); |
| }; |
| |
| export const fetchServiceList = () => |
| request('/services').then(({ data }) => ({ |
| data: data.rows, |
| total: data.total_size, |
| })); |
| |
| export const exportRoutes = (ids?: string) => { |
| return request(`/export/routes/${ids}`); |
| }; |
| |
| export const importRoutes = (formData: FormData) => { |
| return request('/import/routes', { |
| method: 'POST', |
| data: formData, |
| requestType: 'form', |
| }); |
| }; |