package apiserver import ( "encoding/json" "fmt" "gitea.fedy95.com/dev/news-aggregator-back/internal/app/store" "github.com/gorilla/mux" "github.com/mmcdole/gofeed" "github.com/sirupsen/logrus" "io/ioutil" "net/http" "time" ) type APIServer struct { logger *logrus.Logger router *mux.Router store *store.Store } func New() *APIServer { return &APIServer{ logger: logrus.New(), router: mux.NewRouter(), } } func (srv *APIServer) Start() error { if err := srv.configureLogger(); err != nil { return err } srv.configureRouter() srv.logger.Info("starting apiserver") return http.ListenAndServe(":7070", srv.router) //TODO mv to env } func (srv *APIServer) configureLogger() error { level, err := logrus.ParseLevel("debug") //TODO mv to env if err != nil { return err } srv.logger.SetLevel(level) return nil } func (srv *APIServer) configureRouter() { srv.router.HandleFunc("/test", srv.handlerTest()) } func (srv *APIServer) handlerTest() http.HandlerFunc { return func(writer http.ResponseWriter, request *http.Request) { var rssSources [5]string rssSources[0] = "https://www.opennet.ru/opennews/opennews_all_utf.rss" rssSources[1] = "http://feeds.rucast.net/radio-t" rssSources[2] = "http://habr.ru/rss/hubs/all" rssSources[3] = "https://servernews.ru/news/rss" rssSources[4] = "https://servernews.ru/rss" writer.Header().Set("Content-Type", "text/html; charset=utf-8") currentTime := time.Now() for _, rssElement := range rssSources { fp := gofeed.NewParser() feed, _ := fp.ParseURL(rssElement) file, _ := json.MarshalIndent(feed, "", " ") var filename string filename = fmt.Sprintf("data/%s_%s", currentTime.Format("2006.01.02 15:04:05"), feed.Title) srv.logger.Info(fmt.Sprintf("write filename %s", filename)) ioutil.WriteFile(filename, file, 0644) fmt.Fprintf(writer, "

%s

\n") } } } //func (srv *APIServer) configureStore() error { // st := store.New(srv.config.Store) // if err = st.Open(); err != nil { // return err // } // // srv.store = st // // return nil //}