From 054f5103e6447ba84046436c7fe6d760316a7305 Mon Sep 17 00:00:00 2001 From: Nicolas Duhamel Date: Sun, 24 Apr 2016 19:27:50 +0200 Subject: [PATCH] First main --- main.go | 47 +++++++++++++++++++++++++++++++++++++++++++++ movies/handlers.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++ movies/movies.go | 8 ++++++++ 3 files changed, 103 insertions(+) create mode 100644 main.go create mode 100644 movies/handlers.go diff --git a/main.go b/main.go new file mode 100644 index 0000000..eb9f497 --- /dev/null +++ b/main.go @@ -0,0 +1,47 @@ +package main + +import ( + "os" + + "gitlab.quimbo.fr/odwrtw/canape-sql/auth" + "gitlab.quimbo.fr/odwrtw/canape-sql/movies" + "gitlab.quimbo.fr/odwrtw/canape-sql/users" + "gitlab.quimbo.fr/odwrtw/canape-sql/web" + + "github.com/Sirupsen/logrus" + "github.com/codegangsta/negroni" + "github.com/gorilla/mux" + "github.com/jmoiron/sqlx" + _ "github.com/lib/pq" +) + +type UserBackend struct { + Database *sqlx.DB +} + +func (b *UserBackend) Get(username string) (auth.User, error) { + return users.Get(b.Database, username) +} + +func main() { + log := logrus.NewEntry(logrus.New()) + + pgdsn := "postgres://test:test@127.0.0.1:5432/test?sslmode=disable" + db, err := sqlx.Connect("postgres", pgdsn) + if err != nil { + log.Error(err) + os.Exit(1) + } + uBackend := &UserBackend{db} + authorizer := auth.New(uBackend, "peeper", "cookieName", "cookieKey", 10) + + env := web.NewEnv(db, authorizer, log, "/templates") + + router := mux.NewRouter() + + router.Handle("/", env.Handler(movies.PolochonMovies)) + + n := negroni.Classic() + n.UseHandler(router) + n.Run(":3000") +} diff --git a/movies/handlers.go b/movies/handlers.go new file mode 100644 index 0000000..c0c3697 --- /dev/null +++ b/movies/handlers.go @@ -0,0 +1,48 @@ +package movies + +import ( + "net/http" + + "github.com/odwrtw/polochon/lib" + "github.com/odwrtw/polochon/modules/tmdb" + + "gitlab.quimbo.fr/odwrtw/canape-sql/web" + "gitlab.quimbo.fr/odwrtw/papi" +) + +func PolochonMovies(env *web.Env, w http.ResponseWriter, r *http.Request) error { + + //TODO use user params + URL := "http://polochon.quimbo.fr" + token := "ShaeGieheiPhue8ohM5t" + + client, err := papi.New(URL, token) + if err != nil { + return err + } + pmovies, err := client.MoviesByID() + if err != nil { + return err + } + movies := []*Movie{} + + //TODO use configurable detailer + detailer, err := tmdb.New(&tmdb.Params{"57be344f84917b3f32c68a678f1482eb"}) + if err != nil { + return err + } + + for _, pm := range pmovies { + m := New(pm.ImdbID) + m.Detailers = []polochon.Detailer{detailer} + err := m.GetDetails(env.Database, env.Log) + if err != nil { + env.Log.Error(err) + } + movies = append(movies, m) + } + + env.Log.Info(movies) + + return nil +} diff --git a/movies/movies.go b/movies/movies.go index 1802abd..3b97216 100644 --- a/movies/movies.go +++ b/movies/movies.go @@ -45,6 +45,14 @@ type Movie struct { polochon.Movie } +func New(imdbID string) *Movie { + return &Movie{ + Movie: polochon.Movie{ + ImdbID: imdbID, + }, + } +} + // Get returns show details in database from id or imdbid or an error func (m *Movie) Get(db *sqlx.DB) error { var err error