Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a0f12749
authored
Dec 09, 2025
by
Calcium-Ion
Committed by
GitHub
Dec 09, 2025
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2398 from seefs001/fix/video-proxy
fix: Use channel proxy settings for task query scenarios
parents
36d0fd6f
920e0050
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
97 additions
and
32 deletions
+97
-32
controller/task.go
+2
-1
controller/task_video.go
+2
-1
controller/video_proxy.go
+16
-3
controller/video_proxy_gemini.go
+2
-1
relay/channel/adapter.go
+1
-1
relay/channel/task/ali/adaptor.go
+6
-2
relay/channel/task/doubao/adaptor.go
+6
-2
relay/channel/task/gemini/adaptor.go
+6
-2
relay/channel/task/hailuo/adaptor.go
+6
-2
relay/channel/task/jimeng/adaptor.go
+6
-2
relay/channel/task/kling/adaptor.go
+6
-2
relay/channel/task/sora/adaptor.go
+6
-2
relay/channel/task/suno/adaptor.go
+4
-4
relay/channel/task/vertex/adaptor.go
+12
-4
relay/channel/task/vidu/adaptor.go
+6
-2
relay/relay_task.go
+2
-1
service/http_client.go
+8
-0
No files found.
controller/task.go
View file @
a0f12749
...
...
@@ -116,9 +116,10 @@ func updateSunoTaskAll(ctx context.Context, channelId int, taskIds []string, tas
if
adaptor
==
nil
{
return
errors
.
New
(
"adaptor not found"
)
}
proxy
:=
channel
.
GetSetting
()
.
Proxy
resp
,
err
:=
adaptor
.
FetchTask
(
*
channel
.
BaseURL
,
channel
.
Key
,
map
[
string
]
any
{
"ids"
:
taskIds
,
})
}
,
proxy
)
if
err
!=
nil
{
common
.
SysLog
(
fmt
.
Sprintf
(
"Get Task Do req error: %v"
,
err
))
return
err
...
...
controller/task_video.go
View file @
a0f12749
...
...
@@ -67,6 +67,7 @@ func updateVideoSingleTask(ctx context.Context, adaptor channel.TaskAdaptor, cha
if
channel
.
GetBaseURL
()
!=
""
{
baseURL
=
channel
.
GetBaseURL
()
}
proxy
:=
channel
.
GetSetting
()
.
Proxy
task
:=
taskM
[
taskId
]
if
task
==
nil
{
...
...
@@ -76,7 +77,7 @@ func updateVideoSingleTask(ctx context.Context, adaptor channel.TaskAdaptor, cha
resp
,
err
:=
adaptor
.
FetchTask
(
baseURL
,
channel
.
Key
,
map
[
string
]
any
{
"task_id"
:
taskId
,
"action"
:
task
.
Action
,
})
}
,
proxy
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"fetchTask failed for task %s: %w"
,
taskId
,
err
)
}
...
...
controller/video_proxy.go
View file @
a0f12749
package
controller
import
(
"context"
"fmt"
"io"
"net/http"
...
...
@@ -10,6 +11,7 @@ import (
"github.com/QuantumNous/new-api/constant"
"github.com/QuantumNous/new-api/logger"
"github.com/QuantumNous/new-api/model"
"github.com/QuantumNous/new-api/service"
"github.com/gin-gonic/gin"
)
...
...
@@ -75,11 +77,22 @@ func VideoProxy(c *gin.Context) {
}
var
videoURL
string
client
:=
&
http
.
Client
{
Timeout
:
60
*
time
.
Second
,
proxy
:=
channel
.
GetSetting
()
.
Proxy
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
logger
.
LogError
(
c
.
Request
.
Context
(),
fmt
.
Sprintf
(
"Failed to create proxy client for task %s: %s"
,
taskID
,
err
.
Error
()))
c
.
JSON
(
http
.
StatusInternalServerError
,
gin
.
H
{
"error"
:
gin
.
H
{
"message"
:
"Failed to create proxy client"
,
"type"
:
"server_error"
,
},
})
return
}
req
,
err
:=
http
.
NewRequestWithContext
(
c
.
Request
.
Context
(),
http
.
MethodGet
,
""
,
nil
)
ctx
,
cancel
:=
context
.
WithTimeout
(
c
.
Request
.
Context
(),
60
*
time
.
Second
)
defer
cancel
()
req
,
err
:=
http
.
NewRequestWithContext
(
ctx
,
http
.
MethodGet
,
""
,
nil
)
if
err
!=
nil
{
logger
.
LogError
(
c
.
Request
.
Context
(),
fmt
.
Sprintf
(
"Failed to create request: %s"
,
err
.
Error
()))
c
.
JSON
(
http
.
StatusInternalServerError
,
gin
.
H
{
...
...
controller/video_proxy_gemini.go
View file @
a0f12749
...
...
@@ -35,10 +35,11 @@ func getGeminiVideoURL(channel *model.Channel, task *model.Task, apiKey string)
return
""
,
fmt
.
Errorf
(
"api key not available for task"
)
}
proxy
:=
channel
.
GetSetting
()
.
Proxy
resp
,
err
:=
adaptor
.
FetchTask
(
baseURL
,
apiKey
,
map
[
string
]
any
{
"task_id"
:
task
.
TaskID
,
"action"
:
task
.
Action
,
})
}
,
proxy
)
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"fetch task failed: %w"
,
err
)
}
...
...
relay/channel/adapter.go
View file @
a0f12749
...
...
@@ -47,7 +47,7 @@ type TaskAdaptor interface {
GetChannelName
()
string
// FetchTask
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
ParseTaskResult
(
respBody
[]
byte
)
(
*
relaycommon
.
TaskInfo
,
error
)
}
...
...
relay/channel/task/ali/adaptor.go
View file @
a0f12749
...
...
@@ -393,7 +393,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
}
// FetchTask 查询任务状态
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -408,7 +408,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/doubao/adaptor.go
View file @
a0f12749
...
...
@@ -146,7 +146,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -163,7 +163,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/gemini/adaptor.go
View file @
a0f12749
...
...
@@ -200,7 +200,7 @@ func (a *TaskAdaptor) GetChannelName() string {
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -223,7 +223,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Accept"
,
"application/json"
)
req
.
Header
.
Set
(
"x-goog-api-key"
,
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
ParseTaskResult
(
respBody
[]
byte
)
(
*
relaycommon
.
TaskInfo
,
error
)
{
...
...
relay/channel/task/hailuo/adaptor.go
View file @
a0f12749
...
...
@@ -110,7 +110,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
return
hResp
.
TaskID
,
responseBody
,
nil
}
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -126,7 +126,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Accept"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/jimeng/adaptor.go
View file @
a0f12749
...
...
@@ -210,7 +210,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -251,7 +251,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
return
nil
,
errors
.
Wrap
(
err
,
"sign request failed"
)
}
}
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/kling/adaptor.go
View file @
a0f12749
...
...
@@ -199,7 +199,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -228,7 +228,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
token
)
req
.
Header
.
Set
(
"User-Agent"
,
"kling-sdk/1.0"
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/sora/adaptor.go
View file @
a0f12749
...
...
@@ -125,7 +125,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, _ *relayco
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -140,7 +140,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/channel/task/suno/adaptor.go
View file @
a0f12749
...
...
@@ -132,7 +132,7 @@ func (a *TaskAdaptor) GetChannelName() string {
return
ChannelName
}
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
requestUrl
:=
fmt
.
Sprintf
(
"%s/suno/fetch"
,
baseUrl
)
byteBody
,
err
:=
json
.
Marshal
(
body
)
if
err
!=
nil
{
...
...
@@ -153,11 +153,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
=
req
.
WithContext
(
ctx
)
req
.
Header
.
Set
(
"Content-Type"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
key
)
resp
,
err
:=
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
err
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
resp
,
nil
return
client
.
Do
(
req
)
}
func
actionValidate
(
c
*
gin
.
Context
,
sunoRequest
*
dto
.
SunoSubmitReq
,
action
string
)
(
err
error
)
{
...
...
relay/channel/task/vertex/adaptor.go
View file @
a0f12749
...
...
@@ -120,7 +120,11 @@ func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Request, info
return
fmt
.
Errorf
(
"failed to decode credentials: %w"
,
err
)
}
token
,
err
:=
vertexcore
.
AcquireAccessToken
(
*
adc
,
""
)
proxy
:=
""
if
info
!=
nil
{
proxy
=
info
.
ChannelSetting
.
Proxy
}
token
,
err
:=
vertexcore
.
AcquireAccessToken
(
*
adc
,
proxy
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to acquire access token: %w"
,
err
)
}
...
...
@@ -216,7 +220,7 @@ func (a *TaskAdaptor) GetModelList() []string { return []string{"veo-3.0-generat
func
(
a
*
TaskAdaptor
)
GetChannelName
()
string
{
return
"vertex"
}
// FetchTask fetch task status
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -249,7 +253,7 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
if
err
:=
json
.
Unmarshal
([]
byte
(
key
),
adc
);
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to decode credentials: %w"
,
err
)
}
token
,
err
:=
vertexcore
.
AcquireAccessToken
(
*
adc
,
""
)
token
,
err
:=
vertexcore
.
AcquireAccessToken
(
*
adc
,
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to acquire access token: %w"
,
err
)
}
...
...
@@ -261,7 +265,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Accept"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
"Bearer "
+
token
)
req
.
Header
.
Set
(
"x-goog-user-project"
,
adc
.
ProjectID
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
ParseTaskResult
(
respBody
[]
byte
)
(
*
relaycommon
.
TaskInfo
,
error
)
{
...
...
relay/channel/task/vidu/adaptor.go
View file @
a0f12749
...
...
@@ -188,7 +188,7 @@ func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, info *rela
return
vResp
.
TaskId
,
responseBody
,
nil
}
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
)
(
*
http
.
Response
,
error
)
{
func
(
a
*
TaskAdaptor
)
FetchTask
(
baseUrl
,
key
string
,
body
map
[
string
]
any
,
proxy
string
)
(
*
http
.
Response
,
error
)
{
taskID
,
ok
:=
body
[
"task_id"
]
.
(
string
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"invalid task_id"
)
...
...
@@ -204,7 +204,11 @@ func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]any) (*http
req
.
Header
.
Set
(
"Accept"
,
"application/json"
)
req
.
Header
.
Set
(
"Authorization"
,
"Token "
+
key
)
return
service
.
GetHttpClient
()
.
Do
(
req
)
client
,
err
:=
service
.
GetHttpClientWithProxy
(
proxy
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"new proxy http client failed: %w"
,
err
)
}
return
client
.
Do
(
req
)
}
func
(
a
*
TaskAdaptor
)
GetModelList
()
[]
string
{
...
...
relay/relay_task.go
View file @
a0f12749
...
...
@@ -326,6 +326,7 @@ func videoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, taskResp *d
if
channelModel
.
GetBaseURL
()
!=
""
{
baseURL
=
channelModel
.
GetBaseURL
()
}
proxy
:=
channelModel
.
GetSetting
()
.
Proxy
adaptor
:=
GetTaskAdaptor
(
constant
.
TaskPlatform
(
strconv
.
Itoa
(
channelModel
.
Type
)))
if
adaptor
==
nil
{
return
...
...
@@ -333,7 +334,7 @@ func videoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, taskResp *d
resp
,
err2
:=
adaptor
.
FetchTask
(
baseURL
,
channelModel
.
Key
,
map
[
string
]
any
{
"task_id"
:
originTask
.
TaskID
,
"action"
:
originTask
.
Action
,
})
}
,
proxy
)
if
err2
!=
nil
||
resp
==
nil
{
return
}
...
...
service/http_client.go
View file @
a0f12749
...
...
@@ -58,6 +58,14 @@ func GetHttpClient() *http.Client {
return
httpClient
}
// GetHttpClientWithProxy returns the default client or a proxy-enabled one when proxyURL is provided.
func
GetHttpClientWithProxy
(
proxyURL
string
)
(
*
http
.
Client
,
error
)
{
if
proxyURL
==
""
{
return
GetHttpClient
(),
nil
}
return
NewProxyHttpClient
(
proxyURL
)
}
// ResetProxyClientCache 清空代理客户端缓存,确保下次使用时重新初始化
func
ResetProxyClientCache
()
{
proxyClientLock
.
Lock
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment