bilibili-backup/app/service/main/feed/rpc/client/feed.go
2019-04-22 02:59:20 +00:00

124 lines
3.9 KiB
Go

package client
import (
"context"
artmdl "go-common/app/interface/openplatform/article/model"
feedmdl "go-common/app/service/main/feed/model"
"go-common/library/net/rpc"
)
const (
_appFeed = "RPC.AppFeed"
_webFeed = "RPC.WebFeed"
_archiveFeed = "RPC.ArchiveFeed"
_bangumiFeed = "RPC.BangumiFeed"
_addArc = "RPC.AddArc"
_delArc = "RPC.DelArc"
_purgeFeedCache = "RPC.PurgeFeedCache"
_fold = "RPC.Fold"
_appUnreadCount = "RPC.AppUnreadCount"
_webUnreadCount = "RPC.WebUnreadCount"
_changeArcUpper = "RPC.ChangeArcUpper"
_articleFeed = "RPC.ArticleFeed"
_articleUnreadCount = "RPC.ArticleUnreadCount"
)
const (
_appid = "community.service.feed"
)
var (
_noArg = &struct{}{}
)
// Service struct info.
type Service struct {
client *rpc.Client2
}
// New new service instance and return.
func New(c *rpc.ClientConfig) (s *Service) {
s = &Service{}
s.client = rpc.NewDiscoveryCli(_appid, c)
return
}
// AppFeed receive ArgMid contains mid and real ip, then init app feed.
func (s *Service) AppFeed(c context.Context, arg *feedmdl.ArgFeed) (res []*feedmdl.Feed, err error) {
err = s.client.Call(c, _appFeed, arg, &res)
return
}
// WebFeed receive ArgMid contains mid and real ip, then init web feed without fold.
func (s *Service) WebFeed(c context.Context, arg *feedmdl.ArgFeed) (res []*feedmdl.Feed, err error) {
err = s.client.Call(c, _webFeed, arg, &res)
return
}
// ArchiveFeed receive ArgMid contains mid and real ip
func (s *Service) ArchiveFeed(c context.Context, arg *feedmdl.ArgFeed) (res []*feedmdl.Feed, err error) {
err = s.client.Call(c, _archiveFeed, arg, &res)
return
}
// BangumiFeed receive ArgMid contains mid and real ip
func (s *Service) BangumiFeed(c context.Context, arg *feedmdl.ArgFeed) (res []*feedmdl.Feed, err error) {
err = s.client.Call(c, _bangumiFeed, arg, &res)
return
}
// ArticleFeed receive ArgMid and return article feed.
func (s *Service) ArticleFeed(c context.Context, arg *feedmdl.ArgFeed) (res []*artmdl.Meta, err error) {
err = s.client.Call(c, _articleFeed, arg, &res)
return
}
// ArticleUnreadCount return unread count of article feed.
func (s *Service) ArticleUnreadCount(c context.Context, arg *feedmdl.ArgMid) (res int, err error) {
err = s.client.Call(c, _articleUnreadCount, arg, &res)
return
}
// AddArc add archive when archive passed. purge cache.
func (s *Service) AddArc(c context.Context, arg *feedmdl.ArgArc) (err error) {
err = s.client.Call(c, _addArc, arg, &struct{}{})
return
}
// DelArc delete archive when archive not passed. purge cache.
func (s *Service) DelArc(c context.Context, arg *feedmdl.ArgAidMid) (err error) {
err = s.client.Call(c, _delArc, arg, &struct{}{})
return
}
// PurgeFeedCache purge cache when attention/unattention upper
func (s *Service) PurgeFeedCache(c context.Context, arg *feedmdl.ArgMid) (err error) {
err = s.client.Call(c, _purgeFeedCache, arg, &struct{}{})
return
}
// Fold receive ArgFold contains mid, then return upper's fold archives.
func (s *Service) Fold(c context.Context, arg *feedmdl.ArgFold) (res []*feedmdl.Feed, err error) {
err = s.client.Call(c, _fold, arg, &res)
return
}
// AppUnreadCount receive ArgUnreadCount contains mid, and withoutBangumi then return unread count.
func (s *Service) AppUnreadCount(c context.Context, arg *feedmdl.ArgUnreadCount) (res int, err error) {
err = s.client.Call(c, _appUnreadCount, arg, &res)
return
}
// WebUnreadCount receive ArgUnreadCount contains mid, then return unread count.
func (s *Service) WebUnreadCount(c context.Context, arg *feedmdl.ArgMid) (res int, err error) {
err = s.client.Call(c, _webUnreadCount, arg, &res)
return
}
// ChangeArcUpper refresh feed cache when change archive's author
func (s *Service) ChangeArcUpper(c context.Context, arg *feedmdl.ArgChangeUpper) (err error) {
err = s.client.Call(c, _changeArcUpper, arg, &struct{}{})
return
}