Skip to content

Commit

Permalink
export function 'isRedirectStatusCode' (#2810)
Browse files Browse the repository at this point in the history
  • Loading branch information
miherlosev authored Nov 3, 2022
1 parent c53b9fd commit 81aaee5
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 3 deletions.
3 changes: 2 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import RequestHookEventProvider from './request-pipeline/request-hooks/events/ev
import { RequestInfo, ResponseInfo } from './request-pipeline/request-hooks/events/info';
import BaseRequestHookEventFactory from './request-pipeline/request-hooks/events/factory/base';
import BaseRequestPipelineContext from './request-pipeline/context/base';

import isRedirectStatusCode from './utils/is-redirect-status-code';

export default {
Proxy,
Expand Down Expand Up @@ -61,4 +61,5 @@ export default {
acceptCrossOrigin,
getAssetPath,
ResponseInfo,
isRedirectStatusCode,
};
4 changes: 2 additions & 2 deletions src/request-pipeline/context/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import RequestHookEventProvider from '../request-hooks/events/event-provider';
import { PassThrough } from 'stream';
import promisifyStream from '../../utils/promisify-stream';
import { toReadableStream } from '../../utils/buffer';
import isRedirectStatusCode from '../../utils/is-redirect-status-code';

export interface DestInfo {
url: string;
Expand Down Expand Up @@ -93,7 +94,6 @@ interface Socket extends net.Socket {

export type DestinationResponse = IncomingMessage | FileStream | IncomingMessageLike | Http2Response;

const REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308];
const CANNOT_BE_USED_WITH_WEB_SOCKET_ERR_MSG = 'The function cannot be used with a WebSocket request.';

export default class RequestPipelineContext extends BaseRequestPipelineContext {
Expand Down Expand Up @@ -302,7 +302,7 @@ export default class RequestPipelineContext extends BaseRequestPipelineContext {

const isRedirect = this.destRes.headers[BUILTIN_HEADERS.location] &&
this.destRes.statusCode &&
REDIRECT_STATUS_CODES.includes(this.destRes.statusCode) ||
isRedirectStatusCode(this.destRes.statusCode) ||
false;
const requireAssetsProcessing = (isCSS || isScript || isManifest) && this.destRes.statusCode !== 204;
const isNotModified = this.req.method === 'GET' && this.destRes.statusCode === 304 &&
Expand Down
5 changes: 5 additions & 0 deletions src/utils/is-redirect-status-code.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308];

export default function (code: number): boolean {
return REDIRECT_STATUS_CODES.includes(code);
}
3 changes: 3 additions & 0 deletions ts-defs/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,9 @@ declare module 'testcafe-hammerhead' {
/** Calculates the asset path depending on the run mode (production or development) **/
function getAssetPath(originPath: string, developmentMode: boolean): string;

/** Return whether the HTTP status code is a redirect status code **/
function isRedirectStatusCode (code: number): boolean;

/** **/
export class IncomingMessageLike {
/** The headers of the instance **/
Expand Down

0 comments on commit 81aaee5

Please sign in to comment.