49 lines
907 B
Go
49 lines
907 B
Go
package rss
|
|
|
|
import (
|
|
"context"
|
|
"rss-to-feishu-next/internal/config"
|
|
"rss-to-feishu-next/internal/net"
|
|
)
|
|
|
|
type Client struct {
|
|
netClient *net.Client
|
|
}
|
|
|
|
func NewClient(client *net.Client) *Client {
|
|
return &Client{netClient: client}
|
|
}
|
|
|
|
func (c *Client) FetchRss(ctx context.Context, name, url string) (*Message, error) {
|
|
resp, err := c.netClient.Get(ctx, url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Message{
|
|
Name: name,
|
|
Url: url,
|
|
Content: resp,
|
|
}, nil
|
|
}
|
|
|
|
func (c *Client) FetchAllRss(ctx context.Context) ([]*Message, error) {
|
|
cfg, err := config.LoadConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var messages []*Message
|
|
subscribes := cfg.Subscribes
|
|
|
|
for i := 0; i < len(cfg.Subscribes); i++ {
|
|
message, err := c.FetchRss(ctx, subscribes[i].Name, subscribes[i].Url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
messages = append(messages, message)
|
|
}
|
|
|
|
return messages, nil
|
|
}
|