blob: af65ce304728d29ab54a71aab0580221a725570e [file] [log] [blame]
/**
* @license Apache-2.0
*
* Copyright 2022 ocket8888
*
* Licensed 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.
*/
/**
* Represents an Origin in the context of a request body.
*/
export interface RequestOrigin {
/** @default null */
cachegroupId?: number | null;
/** @default null */
coordinateId?: number | null;
deliveryServiceId: number;
fqdn: string;
/** @default null */
ip6Address?: string | null;
/** @default null */
ipAddress?: string | null;
/** @default false */
isPrimary?: boolean | null;
name: string;
/** @default null */
port?: number | null;
protocol: "http" | "https";
/** @default null */
profileId?: number | null;
tenantID: number;
}
/**
* Represents an Origin as Traffic Ops presets in in responses to requests
* containing {@link RequestOrigin}s.
*/
export interface RequestOriginResponse {
cachegroup: string | null;
cachegroupId: number | null;
coordinate: string | null;
coordinateId: number | null;
deliveryService: string | null;
deliveryServiceId: number;
fqdn: string;
readonly id: number;
ip6Address: string | null;
ipAddress: string | null;
isPrimary: boolean | null;
readonly lastUpdated: Date;
name: string;
port: number | null;
protocol: "http" | "https";
profile: string | null;
profileId: number | null;
tenant: string | null;
/**
* Refer to
* {@link https://github.com/apache/trafficcontrol/issues/6796 #6796}
*/
tenantId: number;
}
/**
* The basic set of properties common to all Origins in responses.
*/
interface ResponseOriginBase {
deliveryService: string;
deliveryServiceId: number;
fqdn: string;
readonly id: number;
ip6Address: string | null;
ipAddress: string | null;
isPrimary: boolean;
readonly lastUpdated: Date;
name: string;
port: number | null;
protocol: "http" | "https";
tenant: string;
/**
* Refer to
* {@link https://github.com/apache/trafficcontrol/issues/6796 #6796}
*/
tenantId: number;
}
/**
* An Origin with a Cache Group - both related fields are known to be non-null.
*/
interface ResponseOriginWithCacheGroup extends ResponseOriginBase {
cachegroup: string;
cachegroupId: number;
}
/**
* An Origin without a Cache Group - both related fields are known to be null.
*/
interface ResponseOriginWithoutCacheGroup extends ResponseOriginBase {
cachegroup: null;
cachegroupId: null;
}
/**
* An Origin with a Profile - both related fields are known to be non-null.
*/
interface ResponseOriginWithProfile extends ResponseOriginBase {
profile: string;
profileId: number;
}
/**
* An Origin without a Profile - both related fields are known to be null.
*/
interface ResponseOriginWithoutProfile extends ResponseOriginBase {
profile: null;
profileId: null;
}
/**
* An Origin with a Coordinate - both related fields are known to be non-null.
*/
interface ResponseOriginWithCoordinate extends ResponseOriginBase {
coordinate: string;
coordinateId: number;
}
/**
* An Origin without a Coordinate - both related fields are known to be null.
*/
interface ResponseOriginWithoutCoordinate extends ResponseOriginBase {
coordinate: null;
coordinateId: null;
}
/**
* Represents an Origin of content as presented by Traffic Ops in (most)
* responses.
*/
export type ResponseOrigin = (ResponseOriginWithCacheGroup & ResponseOriginWithProfile & ResponseOriginWithCoordinate) |
(ResponseOriginWithCacheGroup & ResponseOriginWithoutProfile & ResponseOriginWithCoordinate) |
(ResponseOriginWithoutCacheGroup & ResponseOriginWithProfile & ResponseOriginWithCoordinate) |
(ResponseOriginWithoutCacheGroup & ResponseOriginWithoutProfile & ResponseOriginWithCoordinate) |
(ResponseOriginWithCacheGroup & ResponseOriginWithProfile & ResponseOriginWithoutCoordinate) |
(ResponseOriginWithCacheGroup & ResponseOriginWithoutProfile & ResponseOriginWithoutCoordinate) |
(ResponseOriginWithoutCacheGroup & ResponseOriginWithProfile & ResponseOriginWithoutCoordinate) |
(ResponseOriginWithoutCacheGroup & ResponseOriginWithoutProfile & ResponseOriginWithoutCoordinate);
/**
* An Origin is a source of content to be delivered by a CDN to requesting
* clients.
*/
export type Origin = ResponseOrigin | RequestOrigin | RequestOriginResponse;