11import express from "express" ;
22import { debug , express as logger } from "../logger.js" ;
33import pjson from "../package.json" with { type : "json" } ;
4+ import https from "node:https" ;
5+ import { ProxyAgent } from "proxy-agent" ;
46
57const router = express . Router ( {
68 caseSensitive : true ,
@@ -24,15 +26,37 @@ router
2426 */
2527 . get ( async ( req , res , next ) => {
2628 try {
27- const response = await fetch (
28- "https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest"
29- ) ;
29+ const agent = new ProxyAgent ( ) ;
30+ const url = "https://api.github.com/repos/NginxProxyManager/nginx-proxy-manager/releases/latest" ;
3031
31- if ( ! response . ok ) {
32- throw new Error ( `GitHub API returned ${ response . status } ` ) ;
33- }
32+ const data = await new Promise ( ( resolve , reject ) => {
33+ https
34+ . get ( url , { agent } , ( response ) => {
35+ if ( response . statusCode !== 200 ) {
36+ reject ( new Error ( `GitHub API returned ${ response . statusCode } ` ) ) ;
37+ return ;
38+ }
39+
40+ response . setEncoding ( "utf8" ) ;
41+ let raw_data = "" ;
42+
43+ response . on ( "data" , ( chunk ) => {
44+ raw_data += chunk ;
45+ } ) ;
46+
47+ response . on ( "end" , ( ) => {
48+ try {
49+ resolve ( JSON . parse ( raw_data ) ) ;
50+ } catch ( err ) {
51+ reject ( err ) ;
52+ }
53+ } ) ;
54+ } )
55+ . on ( "error" , ( err ) => {
56+ reject ( err ) ;
57+ } ) ;
58+ } ) ;
3459
35- const data = await response . json ( ) ;
3660 const latestVersion = data . tag_name ;
3761
3862 const version = pjson . version . split ( "-" ) . shift ( ) . split ( "." ) ;
0 commit comments