Skip to content

Commit 2f677fb

Browse files
authored
Merge pull request #120 from Borewit/simplify-code
Simplify and clean-up code
2 parents 885481c + 3ff07a6 commit 2f677fb

File tree

2 files changed

+14
-59
lines changed

2 files changed

+14
-59
lines changed

lib/http-client.ts

+14-38
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,13 @@
11
import * as initDebug from 'debug';
22
import * as _fetch from 'node-fetch';
3-
import { IContentRangeType, IHeadRequestInfo, IRangeRequestResponse } from '@tokenizer/range'; // Add 'fetch' API for node.js
4-
import { IHttpClient } from './types';
3+
import { IContentRangeType, IHeadRequestInfo, IRangeRequestResponse, IRangeRequestClient, parseContentRange } from '@tokenizer/range'; // Add 'fetch' API for node.js
54

65
const debug = initDebug('streaming-http-token-reader:http-client');
76

8-
export function parseContentRange(contentRange: string): IContentRangeType {
9-
debug(`_parseContentRang response: contentRange=${contentRange}`);
10-
11-
if (contentRange) {
12-
const parsedContentRange = contentRange.match(
13-
/bytes (\d+)-(\d+)\/(?:(\d+)|\*)/i
14-
);
15-
if (!parsedContentRange) {
16-
throw new Error('FIXME: Unknown Content-Range syntax: ' + contentRange);
17-
}
18-
19-
return {
20-
firstBytePosition: parseInt(parsedContentRange[1], 10),
21-
lastBytePosition: parseInt(parsedContentRange[2], 10),
22-
instanceLength: parsedContentRange[3] ? parseInt(parsedContentRange[3], 10) : null
23-
};
24-
} else {
25-
return null;
26-
}
27-
}
28-
297
/**
308
* Simple HTTP-client, which both works in node.js and browser
319
*/
32-
export class HttpClient implements IHttpClient {
10+
export class HttpClient implements IRangeRequestClient {
3311

3412
private static getContentLength(headers: _fetch.Headers): number {
3513
const contentLength = headers.get('Content-Length');
@@ -57,14 +35,13 @@ export class HttpClient implements IHttpClient {
5735
constructor(private url: string) {
5836
}
5937

60-
public getHeadInfo(): Promise<IHeadRequestInfo> {
61-
return _fetch(this.url, {method: 'HEAD'}).then(resp => {
62-
this.resolvedUrl = resp.url;
63-
return HttpClient.makeResponse(resp);
64-
});
38+
public async getHeadInfo(): Promise<IHeadRequestInfo> {
39+
const response = await _fetch(this.url, {method: 'HEAD'});
40+
this.resolvedUrl = response.url;
41+
return HttpClient.makeResponse(response);
6542
}
6643

67-
public getResponse(method: string, range?: [number, number]): Promise<IRangeRequestResponse> {
44+
public async getResponse(method: string, range?: [number, number]): Promise<IRangeRequestResponse> {
6845
if (range) {
6946
debug(`_getResponse ${method} ${range[0]}..${range[1]}`);
7047
} else {
@@ -74,14 +51,13 @@ export class HttpClient implements IHttpClient {
7451
const headers = new _fetch.Headers();
7552
headers.set('Range', 'bytes=' + range[0] + '-' + range[1]);
7653

77-
return _fetch(this.resolvedUrl || this.url, {method, headers}).then(response => {
78-
if (response.ok) {
79-
this.resolvedUrl = response.url;
80-
return HttpClient.makeResponse(response);
81-
} else {
82-
throw new Error(`Unexpected HTTP response status=${response.status}`);
83-
}
84-
});
54+
const response = await _fetch(this.resolvedUrl || this.url, {method, headers});
55+
if (response.ok) {
56+
this.resolvedUrl = response.url;
57+
return HttpClient.makeResponse(response);
58+
} else {
59+
throw new Error(`Unexpected HTTP response status=${response.status}`);
60+
}
8561
}
8662

8763
}

lib/types.ts

-21
This file was deleted.

0 commit comments

Comments
 (0)