Skip to content
This repository has been archived by the owner on Jul 22, 2020. It is now read-only.

Commit

Permalink
多处修改
Browse files Browse the repository at this point in the history
增加 pcs_ua 和 pan_ua 的设置, 替代了原先的 user-agent
优化代码结构
修改获取公网ip源
  • Loading branch information
iikira committed Oct 30, 2019
1 parent 28fec36 commit 353b83d
Show file tree
Hide file tree
Showing 18 changed files with 360 additions and 541 deletions.
40 changes: 27 additions & 13 deletions baidupcs/baidupcs.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,21 +119,20 @@ var (
Scheme: "http",
Host: "baidupcs.com",
}

netdiskUAHeader = map[string]string{
"User-Agent": NetdiskUA,
}
)

type (
// BaiduPCS 百度 PCS API 详情
BaiduPCS struct {
appID int // app_id
isHTTPS bool // 是否启用https
uid uint64 // 百度uid
client *requester.HTTPClient // http 客户端
ph *panhome.PanHome
cacheMap cachemap.CacheMap
appID int // app_id
isHTTPS bool // 是否启用https
uid uint64 // 百度uid
client *requester.HTTPClient // http 客户端
pcsUA string
panUA string
isSetPanUA bool
ph *panhome.PanHome
cacheMap cachemap.CacheMap
}

userInfoJSON struct {
Expand Down Expand Up @@ -197,6 +196,9 @@ func (pcs *BaiduPCS) lazyInit() {
if pcs.ph == nil {
pcs.ph = panhome.NewPanHome(pcs.client)
}
if !pcs.isSetPanUA {
pcs.panUA = NetdiskUA
}
}

// GetClient 获取当前的http client
Expand Down Expand Up @@ -246,9 +248,15 @@ func (pcs *BaiduPCS) SetStoken(stoken string) {
})
}

// SetUserAgent 设置 User-Agent
func (pcs *BaiduPCS) SetUserAgent(ua string) {
pcs.client.SetUserAgent(ua)
// SetPCSUserAgent 设置 PCS User-Agent
func (pcs *BaiduPCS) SetPCSUserAgent(ua string) {
pcs.pcsUA = ua
}

// SetPanUserAgent 设置 Pan User-Agent
func (pcs *BaiduPCS) SetPanUserAgent(ua string) {
pcs.panUA = ua
pcs.isSetPanUA = true
}

// SetHTTPS 是否启用https连接
Expand All @@ -264,6 +272,12 @@ func (pcs *BaiduPCS) URL() *url.URL {
}
}

func (pcs *BaiduPCS) getPanUAHeader() (header map[string]string) {
return map[string]string{
"User-Agent": pcs.panUA,
}
}

func (pcs *BaiduPCS) generatePCSURL(subPath, method string, param ...map[string]string) *url.URL {
pcsURL := pcs.URL()
pcsURL.Path = "/rest/2.0/pcs/" + subPath
Expand Down
11 changes: 3 additions & 8 deletions baidupcs/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,9 @@ func (pcs *BaiduPCS) DownloadStreamFile(path string, downloadFunc DownloadFunc)
return downloadFunc(pcsURL.String(), pcs.client.Jar)
}

// LocateDownloadWithUserAgent 获取下载链接, 可指定User-Agent
func (pcs *BaiduPCS) LocateDownloadWithUserAgent(pcspath, ua string) (info *URLInfo, pcsError pcserror.Error) {
dataReadCloser, pcsError := pcs.prepareLocateDownload(pcspath, ua)
// LocateDownloadWithUserAgent 获取下载链接
func (pcs *BaiduPCS) LocateDownload(pcspath string) (info *URLInfo, pcsError pcserror.Error) {
dataReadCloser, pcsError := pcs.PrepareLocateDownload(pcspath)
if dataReadCloser != nil {
defer dataReadCloser.Close()
}
Expand All @@ -139,11 +139,6 @@ func (pcs *BaiduPCS) LocateDownloadWithUserAgent(pcspath, ua string) (info *URLI
return &jsonData.URLInfo, nil
}

// LocateDownload 获取下载链接
func (pcs *BaiduPCS) LocateDownload(pcspath string) (info *URLInfo, pcsError pcserror.Error) {
return pcs.LocateDownloadWithUserAgent(pcspath, "")
}

// LocatePanAPIDownload 从百度网盘首页获取下载链接
func (pcs *BaiduPCS) LocatePanAPIDownload(fidList ...int64) (dlinkInfoList APIDownloadDlinkInfoList, pcsError pcserror.Error) {
dataReadCloser, pcsError := pcs.PrepareLocatePanAPIDownload(fidList...)
Expand Down
6 changes: 2 additions & 4 deletions baidupcs/extends.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ var (
)

func (pcs *BaiduPCS) getLocateDownloadLink(pcspath string) (link string, pcsError pcserror.Error) {
info, pcsError := pcs.LocateDownloadWithUserAgent(pcspath, NetdiskUA)
info, pcsError := pcs.LocateDownload(pcspath)
if pcsError != nil {
return
}
Expand Down Expand Up @@ -112,9 +112,7 @@ func (pcs *BaiduPCS) GetRapidUploadInfoByLink(link string, compareRInfo *RapidUp
errInfo.ErrType = pcserror.ErrTypeOthers

var (
header = map[string]string{
"User-Agent": NetdiskUA,
}
header = pcs.getPanUAHeader()
isSetRange = compareRInfo != nil && compareRInfo.ContentLength > SliceMD5Size // 是否设置Range
)
if isSetRange {
Expand Down
4 changes: 4 additions & 0 deletions baidupcs/netdisksign/locatedownloadsign.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,7 @@ func (s *LocateDownloadSign) Sign(uid uint64, bduss string) {
hex.Encode(sha1ResHex, randSha1.Sum(nil))
s.Rand = converter.ToString(sha1ResHex)
}

func (s *LocateDownloadSign) URLParam() string {
return "time=" + strconv.FormatInt(s.Time, 10) + "&rand=" + s.Rand + "&devuid=" + s.DevUID
}
Loading

0 comments on commit 353b83d

Please sign in to comment.