124 lines
3.9 KiB
Go
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
|
|
}
|