You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.9 KiB
123 lines
3.9 KiB
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 |
|
}
|
|
|