Skip to content

Commit

Permalink
fix to pass test
Browse files Browse the repository at this point in the history
  • Loading branch information
p1ass committed Mar 30, 2021
1 parent 9d38328 commit 7f0814b
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 39 deletions.
41 changes: 27 additions & 14 deletions rss_crawler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"log"
"net/http"
"time"
"fmt"

"github.com/p1ass/feeds"
"github.com/pkg/errors"
Expand Down Expand Up @@ -48,26 +47,17 @@ func (crawler *rssCrawler) Crawl() ([]*Item, error) {
}

func convertRssItemToItem(i *feeds.RssItem) (*Item, error) {
layouts := []string{time.RFC1123Z, time.RFC1123}
var t time.Time
var err error
for _, layout := range layouts {
t, err = time.Parse(layout, i.PubDate)
if err == nil {
break
}
t,err := parseTime(i.PubDate)
if err != nil{
return nil, errors.Wrap(err, "parse pub date")
}
if err != nil {
return nil, errors.Wrap(err, "Parse Error")
}
fmt.Println(t.String())

item := &Item{
Title: i.Title,
Link: &Link{Href: i.Link},
Description: i.Description,
ID: i.Guid,
Created: &t,
Created: t,
}

if i.Author != "" {
Expand All @@ -87,3 +77,26 @@ func convertRssItemToItem(i *feeds.RssItem) (*Item, error) {

return item, nil
}

func parseTime(datetime string) (*time.Time, error) {
t, err := time.Parse(time.RFC1123, datetime)
if err == nil {
return &t, nil
}

t, err = time.Parse(time.RFC1123Z, datetime)
if err != nil {
return nil, errors.Wrap(err, "Parse Error")
}

loc, err := time.LoadLocation(t.Location().String())
if err != nil {
return nil, errors.Wrap(err, "Parse Error")
}

if t, err = time.ParseInLocation(time.RFC1123Z, datetime, loc); err == nil {
return &t, nil
}

return nil, errors.Wrap(err, "Parse Error")
}
50 changes: 25 additions & 25 deletions rss_crawler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"testing"
"time"

"github.com/p1ass/feeder"
"github.com/google/go-cmp/cmp"
"github.com/p1ass/feeder"
)

func TestRSSFetch(t *testing.T) {
Expand All @@ -25,8 +25,9 @@ func TestRSSFetch(t *testing.T) {
server := feeder.NewMockServer(response)
defer server.Close()

publishedString := "2019-01-01T00:00:00+09:00"
published, _ := time.Parse(time.RFC3339, publishedString)
publishedString := "Tue, 01 Jan 2019 00:00:00 +0900"
published, _ := time.Parse(time.RFC1123Z, publishedString)
published = published.UTC()
expected := []*feeder.Item{{
Title: "title RFC1123Z",
Link: &feeder.Link{
Expand All @@ -48,27 +49,27 @@ func TestRSSFetch(t *testing.T) {
},
Content: "",
},
{
Title: "title RFC1123",
Link: &feeder.Link{
Href: "http://example.com",
Rel: "",
},
Source: nil,
Author: &feeder.Author{
Name: "name",
},
Description: "summary_content",
ID: "id",
Updated: nil,
Created: &published,
Enclosure: &feeder.Enclosure{
URL: "http://example.com/image.png",
Type: "image/png",
Length: "0",
},
Content: "",
}}
{
Title: "title RFC1123",
Link: &feeder.Link{
Href: "http://example.com",
Rel: "",
},
Source: nil,
Author: &feeder.Author{
Name: "name",
},
Description: "summary_content",
ID: "id",
Updated: nil,
Created: &published,
Enclosure: &feeder.Enclosure{
URL: "http://example.com/image.png",
Type: "image/png",
Length: "0",
},
Content: "",
}}

crawler := feeder.NewRSSCrawler(server.URL + "/rss")
got, err := crawler.Crawl()
Expand All @@ -80,6 +81,5 @@ func TestRSSFetch(t *testing.T) {
diff := cmp.Diff(expected, got)
t.Log(diff)
t.Error("Failed to convert AtomEntry to Item.")

}
}

0 comments on commit 7f0814b

Please sign in to comment.