add api/list/tag/tag_name_here
This commit is contained in:
@@ -22,15 +22,24 @@ type Server struct {
|
||||
getFeedHandler func(string, int) (string, error)
|
||||
getFeedItemHandler func(string) (string, error)
|
||||
getFeedTagHandler func(string) (string, error)
|
||||
getListTagHandler func(string, int) (string, error)
|
||||
}
|
||||
|
||||
func New(addr string, newFeedHandler func(string, string, string, []string, time.Duration), getFeedHandler func(string, int) (string, error), getFeedItemHandler func(string) (string, error), getFeedTagHandler func(string) (string, error)) (*Server, error) {
|
||||
func New(
|
||||
addr string,
|
||||
newFeedHandler func(string, string, string, []string, time.Duration),
|
||||
getFeedHandler func(string, int) (string, error),
|
||||
getFeedItemHandler func(string) (string, error),
|
||||
getFeedTagHandler func(string) (string, error),
|
||||
getListTagHandler func(string, int) (string, error),
|
||||
) (*Server, error) {
|
||||
return &Server{
|
||||
addr: addr,
|
||||
newFeedHandler: newFeedHandler,
|
||||
getFeedHandler: getFeedHandler,
|
||||
getFeedItemHandler: getFeedItemHandler,
|
||||
getFeedTagHandler: getFeedTagHandler,
|
||||
getListTagHandler: getListTagHandler,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -81,6 +90,8 @@ func (s *Server) api(w http.ResponseWriter, r *http.Request) {
|
||||
switch advance(r) {
|
||||
case "feed":
|
||||
s.feed(w, r)
|
||||
case "list":
|
||||
s.list(w, r)
|
||||
default:
|
||||
s.notFound(w, r)
|
||||
}
|
||||
@@ -198,6 +209,24 @@ func (s *Server) getFeed(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintln(w, feedBody)
|
||||
}
|
||||
|
||||
func (s *Server) list(w http.ResponseWriter, r *http.Request) {
|
||||
switch advance(r) {
|
||||
case "tag":
|
||||
s.listTag(w, r)
|
||||
default:
|
||||
s.notFound(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) listTag(w http.ResponseWriter, r *http.Request) {
|
||||
tag := advance(r)
|
||||
out, err := s.getListTagHandler(tag, -1)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Fprintln(w, out)
|
||||
}
|
||||
|
||||
func validURL(loc string) bool {
|
||||
_, err := url.ParseRequestURI(loc)
|
||||
return err == nil
|
||||
|
||||
@@ -19,7 +19,7 @@ func Test_Server(t *testing.T) {
|
||||
testPort = strings.Split(server.Listener.Addr().String(), ":")[1]
|
||||
|
||||
var err error
|
||||
s, err := New(testPort, func(string, string, string, []string, time.Duration) {}, func(string, int) (string, error) { return "", nil }, func(string) (string, error) { return "", nil }, func(string) (string, error) { return "", nil })
|
||||
s, err := New(testPort, func(string, string, string, []string, time.Duration) {}, func(string, int) (string, error) { return "", nil }, func(string) (string, error) { return "", nil }, func(string) (string, error) { return "", nil }, func(string, int) (string, error) { return "", nil })
|
||||
if err != nil {
|
||||
t.Errorf("failed to create server: %v", err)
|
||||
}
|
||||
@@ -58,6 +58,12 @@ func Test_Server(t *testing.T) {
|
||||
if err := checkStatus("GET", "api/feed/tag/b", http.StatusOK); err != nil {
|
||||
t.Errorf(err.Error())
|
||||
}
|
||||
if err := checkStatus("GET", "api/feed/tag/b", http.StatusOK); err != nil {
|
||||
t.Errorf(err.Error())
|
||||
}
|
||||
if err := checkStatus("GET", "api/list/tag/b", http.StatusOK); err != nil {
|
||||
t.Errorf(err.Error())
|
||||
}
|
||||
syscall.Kill(syscall.Getpid(), syscall.SIGINT)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user