245 lines
7.1 KiB
Go
245 lines
7.1 KiB
Go
package utils
|
||
|
||
import (
|
||
"errors"
|
||
"go-account-register/config"
|
||
"log"
|
||
|
||
"github.com/go-resty/resty/v2"
|
||
)
|
||
|
||
type BitBrowserRequest struct {
|
||
client *resty.Client
|
||
}
|
||
|
||
func NewBitBrowserRequest() *BitBrowserRequest {
|
||
appConfig, _ := config.LoadConfig()
|
||
client := resty.New()
|
||
client.SetBaseURL(appConfig.BitBrowser.ApiUrl)
|
||
|
||
// 响应拦截器 (类似 axios 拦截器)
|
||
client.OnAfterResponse(func(c *resty.Client, resp *resty.Response) error {
|
||
if resp.StatusCode() != 200 {
|
||
log.Println("请求失败,检查网络")
|
||
return errors.New("request failed")
|
||
}
|
||
return nil
|
||
})
|
||
|
||
return &BitBrowserRequest{client: client}
|
||
}
|
||
|
||
// Request 发送通用请求
|
||
func (h *BitBrowserRequest) Request(method, url string, data interface{}) (*resty.Response, error) {
|
||
resp, err := h.client.R().
|
||
SetHeader("Content-Type", "application/json").
|
||
SetBody(data).
|
||
Execute(method, url)
|
||
|
||
if err != nil {
|
||
log.Println("请求失败了:", err)
|
||
return nil, err
|
||
}
|
||
return resp, nil
|
||
}
|
||
|
||
/**
|
||
* @description 打开浏览器并返回wspoint
|
||
* @returns {Promise<Object>} Promise<any>
|
||
* @param {Object} data
|
||
* @param {String} data.id 窗口id
|
||
* @param {Array} data.args 启动附加参数,数组类型,比如 ["--headless"]
|
||
* @param {Boolean} data.loadExtensions 是否加载扩展
|
||
* @param {Boolean} data.extractIp 是否尝试提取IP
|
||
*/
|
||
func (h *BitBrowserRequest) OpenBrowser(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/open", data)
|
||
}
|
||
|
||
/**
|
||
* @description 关闭浏览器
|
||
* @param {String} id
|
||
* @returns {Promise}
|
||
*/
|
||
func (h *BitBrowserRequest) CloseBrowser(id string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/close", map[string]interface{}{"id": id})
|
||
}
|
||
|
||
/**
|
||
* @description 创建浏览器
|
||
* @param {Object} data
|
||
* @returns {Promise}
|
||
*/
|
||
func (h *BitBrowserRequest) CreateBrowser(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/update", data)
|
||
}
|
||
|
||
/**
|
||
* @description 修改browser信息,只修改传入的配置
|
||
* @param {Object} data 参考创建配置项
|
||
* @returns {Promise}
|
||
*/
|
||
func (h *BitBrowserRequest) UpdatePartial(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/update/partial", data)
|
||
}
|
||
|
||
/**
|
||
* @description 批量删除浏览器
|
||
* @param {array} ids
|
||
*/
|
||
func (h *BitBrowserRequest) DeleteBatchBrowser(ids []string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/delete/ids", map[string]interface{}{"ids": ids})
|
||
}
|
||
|
||
/**
|
||
* @description 删除浏览器
|
||
* @param {String} id
|
||
* @returns {Promise}
|
||
*/
|
||
func (h *BitBrowserRequest) DeleteBrowser(id string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/delete", map[string]interface{}{"id": id})
|
||
}
|
||
|
||
/**
|
||
* @description 获取浏览器详情
|
||
* @param {String} id
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) GetBrowserDetail(id string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/detail", map[string]interface{}{"id": id})
|
||
}
|
||
|
||
/**
|
||
* @description 获取浏览器列表
|
||
* @param {Object} data
|
||
* @param {Number} data.page // 必传
|
||
* @param {Number} data.pageSize // 必传
|
||
* @param {String} data.groupId // 分组ID,非必传
|
||
* @param {String} data.name // 窗口名称,用于模糊查询,非必传
|
||
* @param {String} data.sortProperties // 排序参数,默认序号,seq,非必传
|
||
* @param {String} data.sortDirection // 排序顺序参数,默认desc,可传asc,非必传
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) GetBrowserList(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/list", data)
|
||
}
|
||
|
||
/**
|
||
* @description 获取浏览器列表(简洁)
|
||
*/
|
||
func (h *BitBrowserRequest) GetBrowserConciseList(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/list/concise", data)
|
||
}
|
||
|
||
/**
|
||
* @description 分组list
|
||
* @param {Number} page 从0开始
|
||
* @param {Number} pageSize 例如10
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) GetGroupList(page, pageSize int) (*resty.Response, error) {
|
||
return h.Request("POST", "/group/list", map[string]interface{}{"page": page, "pageSize": pageSize})
|
||
}
|
||
|
||
/**
|
||
* @description 添加分组
|
||
* @param {String} groupName
|
||
* @param {Number} sortNum
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) AddGroup(groupName string, sortNum int) (*resty.Response, error) {
|
||
return h.Request("POST", "/group/add", map[string]interface{}{"groupName": groupName, "sortNum": sortNum})
|
||
}
|
||
|
||
/**
|
||
* @description 修改分组
|
||
* @param {String} id
|
||
* @param {String} groupName
|
||
* @param {Number} sortNum
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) EditGroup(id, groupName string, sortNum int) (*resty.Response, error) {
|
||
return h.Request("POST", "/group/edit", map[string]interface{}{"id": id, "groupName": groupName, "sortNum": sortNum})
|
||
}
|
||
|
||
/**
|
||
* @description 删除分组
|
||
* @param {String} id
|
||
* @returns {Promise}
|
||
* */
|
||
func (h *BitBrowserRequest) DeleteGroup(id string) (*resty.Response, error) {
|
||
return h.Request("POST", "/group/delete", map[string]interface{}{"id": id})
|
||
}
|
||
|
||
/**
|
||
* @description 分组详情
|
||
* @param {String} id
|
||
* */
|
||
func (h *BitBrowserRequest) GetGroupDetail(id string) (*resty.Response, error) {
|
||
return h.Request("POST", "/group/detail", map[string]interface{}{"id": id})
|
||
}
|
||
|
||
/**
|
||
* @description 获取指定窗口的pids
|
||
* @param {Array} ids
|
||
* @returns
|
||
*/
|
||
func (h *BitBrowserRequest) GetPids(ids []string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/pids", map[string]interface{}{"ids": ids})
|
||
}
|
||
|
||
/**
|
||
* @description 获取活着窗口的pids
|
||
* @param {Array} ids
|
||
* @returns
|
||
*/
|
||
func (h *BitBrowserRequest) GetAlivePids(ids []string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/pids/alive", map[string]interface{}{"ids": ids})
|
||
}
|
||
|
||
/**
|
||
* @description 获取所有活着窗口的pids
|
||
* @returns
|
||
*/
|
||
func (h *BitBrowserRequest) GetAliveBrowsersPids() (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/pids/all", nil)
|
||
}
|
||
|
||
/**
|
||
* @description 批量修改窗口备注
|
||
* @param {String} remark
|
||
* @param {Array} browserIds
|
||
* @returns
|
||
*/
|
||
func (h *BitBrowserRequest) UpdateBrowserRemark(remark string, browserIds []string) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/remark/update", map[string]interface{}{"remark": remark, "browserIds": browserIds})
|
||
}
|
||
|
||
/**
|
||
* @description 批量修改窗口分组
|
||
* @param {Object} data
|
||
* @param {Number} data.groupId
|
||
* @param {Array} data.browserIds
|
||
*/
|
||
func (h *BitBrowserRequest) BatchUpdateBrowserGroup(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/group/update", data)
|
||
}
|
||
|
||
/**
|
||
* @description 通过序号批量关闭浏览器
|
||
*
|
||
*/
|
||
func (h *BitBrowserRequest) CloseBrowsersBySeqs(seqs []int) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/close/byseqs", map[string]interface{}{"seqs": seqs})
|
||
}
|
||
|
||
/**
|
||
* @description 批量修改代理
|
||
* @param {Object} data
|
||
* @param {Number} data.proxyMethod //代理类型,2自定义代理,3提取IP
|
||
* @param {String} data.proxyType // 自定义代理类型
|
||
*/
|
||
func (h *BitBrowserRequest) BatchUpdateProxy(data map[string]interface{}) (*resty.Response, error) {
|
||
return h.Request("POST", "/browser/proxy/update", data)
|
||
}
|