Add https request error handling
This commit is contained in:
parent
342c977606
commit
b29a9121f2
@ -1,13 +1,12 @@
|
||||
import { video_info } from "."
|
||||
import { LiveStreaming, Stream } from "./classes/LiveStream"
|
||||
import { request } from "./utils/request"
|
||||
|
||||
export enum StreamType{
|
||||
Arbitrary = 'arbitrary',
|
||||
Raw = 'raw',
|
||||
OggOpus = 'ogg/opus',
|
||||
WebmOpus = 'webm/opus',
|
||||
Opus = 'opus',
|
||||
Raw = 'raw',
|
||||
OggOpus = 'ogg/opus',
|
||||
WebmOpus = 'webm/opus',
|
||||
Opus = 'opus',
|
||||
}
|
||||
|
||||
interface InfoData{
|
||||
|
||||
@ -10,17 +10,18 @@ interface RequestOpts extends RequestOptions{
|
||||
async function https_getter(req_url : string, options : RequestOpts = {}): Promise<IncomingMessage>{
|
||||
return new Promise((resolve, reject) => {
|
||||
let s = new URL(req_url)
|
||||
if(!options.method) options.method = "GET"
|
||||
options.method ??= "GET"
|
||||
let req_options : RequestOptions = {
|
||||
host : s.hostname,
|
||||
path : s.pathname + s.search,
|
||||
headers : (options.headers) ? options.headers : {},
|
||||
headers : options.headers ?? {},
|
||||
method : options.method
|
||||
}
|
||||
|
||||
let req = https.request(req_options, (response) => {
|
||||
resolve(response)
|
||||
})
|
||||
req.on('error', reject)
|
||||
if(options.method === "POST") req.write(options.body)
|
||||
req.end()
|
||||
})
|
||||
@ -28,27 +29,36 @@ async function https_getter(req_url : string, options : RequestOpts = {}): Promi
|
||||
|
||||
export async function request(url : string, options? : RequestOpts): Promise<string>{
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let data = ''
|
||||
let res = await https_getter(url, options)
|
||||
if(Number(res.statusCode) >= 300 && Number(res.statusCode) < 400){
|
||||
res = await https_getter(res.headers.location as string , options)
|
||||
try{
|
||||
let data = ''
|
||||
let res = await https_getter(url, options)
|
||||
if(Number(res.statusCode) >= 300 && Number(res.statusCode) < 400){
|
||||
res = await https_getter(res.headers.location as string , options)
|
||||
}
|
||||
else if(Number(res.statusCode) > 400){
|
||||
reject(`Got ${res.statusCode} from the request`)
|
||||
}
|
||||
res.setEncoding('utf-8')
|
||||
res.on('data', (c) => data+=c)
|
||||
res.on('end', () => resolve(data))
|
||||
}
|
||||
else if(Number(res.statusCode) > 400){
|
||||
reject(`Got ${res.statusCode} from the request`)
|
||||
catch(err) {
|
||||
reject(err)
|
||||
}
|
||||
res.setEncoding('utf-8')
|
||||
res.on('data', (c) => data+=c)
|
||||
res.on('end', () => resolve(data))
|
||||
})
|
||||
}
|
||||
|
||||
export async function request_stream(url : string, options? : RequestOpts): Promise<IncomingMessage>{
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let data = ''
|
||||
let res = await https_getter(url, options)
|
||||
if(Number(res.statusCode) >= 300 && Number(res.statusCode) < 400){
|
||||
res = await https_getter(res.headers.location as string, options)
|
||||
try{
|
||||
let res = await https_getter(url, options)
|
||||
if(Number(res.statusCode) >= 300 && Number(res.statusCode) < 400){
|
||||
res = await https_getter(res.headers.location as string, options)
|
||||
}
|
||||
resolve(res)
|
||||
}
|
||||
catch(err){
|
||||
reject(err)
|
||||
}
|
||||
resolve(res)
|
||||
})
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user