summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/labstack/echo/cookbook/twitter/handler
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/labstack/echo/cookbook/twitter/handler')
-rw-r--r--vendor/github.com/labstack/echo/cookbook/twitter/handler/handler.go14
-rw-r--r--vendor/github.com/labstack/echo/cookbook/twitter/handler/post.go73
-rw-r--r--vendor/github.com/labstack/echo/cookbook/twitter/handler/user.go97
3 files changed, 0 insertions, 184 deletions
diff --git a/vendor/github.com/labstack/echo/cookbook/twitter/handler/handler.go b/vendor/github.com/labstack/echo/cookbook/twitter/handler/handler.go
deleted file mode 100644
index 263c5e21..00000000
--- a/vendor/github.com/labstack/echo/cookbook/twitter/handler/handler.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package handler
-
-import mgo "gopkg.in/mgo.v2"
-
-type (
- Handler struct {
- DB *mgo.Session
- }
-)
-
-const (
- // Key (Should come from somewhere else).
- Key = "secret"
-)
diff --git a/vendor/github.com/labstack/echo/cookbook/twitter/handler/post.go b/vendor/github.com/labstack/echo/cookbook/twitter/handler/post.go
deleted file mode 100644
index b1428a30..00000000
--- a/vendor/github.com/labstack/echo/cookbook/twitter/handler/post.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package handler
-
-import (
- "net/http"
- "strconv"
-
- "github.com/labstack/echo"
- "github.com/labstack/echo/cookbook/twitter/model"
- mgo "gopkg.in/mgo.v2"
- "gopkg.in/mgo.v2/bson"
-)
-
-func (h *Handler) CreatePost(c echo.Context) (err error) {
- u := &model.User{
- ID: bson.ObjectIdHex(userIDFromToken(c)),
- }
- p := &model.Post{
- ID: bson.NewObjectId(),
- From: u.ID.Hex(),
- }
- if err = c.Bind(p); err != nil {
- return
- }
-
- // Validation
- if p.To == "" || p.Message == "" {
- return &echo.HTTPError{Code: http.StatusBadRequest, Message: "invalid to or message fields"}
- }
-
- // Find user from database
- db := h.DB.Clone()
- defer db.Close()
- if err = db.DB("twitter").C("users").FindId(u.ID).One(u); err != nil {
- if err == mgo.ErrNotFound {
- return echo.ErrNotFound
- }
- return
- }
-
- // Save post in database
- if err = db.DB("twitter").C("posts").Insert(p); err != nil {
- return
- }
- return c.JSON(http.StatusCreated, p)
-}
-
-func (h *Handler) FetchPost(c echo.Context) (err error) {
- userID := userIDFromToken(c)
- page, _ := strconv.Atoi(c.QueryParam("page"))
- limit, _ := strconv.Atoi(c.QueryParam("limit"))
-
- // Defaults
- if page == 0 {
- page = 1
- }
- if limit == 0 {
- limit = 100
- }
-
- // Retrieve posts from database
- posts := []*model.Post{}
- db := h.DB.Clone()
- if err = db.DB("twitter").C("posts").
- Find(bson.M{"to": userID}).
- Skip((page - 1) * limit).
- Limit(limit).
- All(&posts); err != nil {
- return
- }
- defer db.Close()
-
- return c.JSON(http.StatusOK, posts)
-}
diff --git a/vendor/github.com/labstack/echo/cookbook/twitter/handler/user.go b/vendor/github.com/labstack/echo/cookbook/twitter/handler/user.go
deleted file mode 100644
index a34d2f4e..00000000
--- a/vendor/github.com/labstack/echo/cookbook/twitter/handler/user.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package handler
-
-import (
- "net/http"
- "time"
-
- jwt "github.com/dgrijalva/jwt-go"
- "github.com/labstack/echo"
- "github.com/labstack/echo/cookbook/twitter/model"
- mgo "gopkg.in/mgo.v2"
- "gopkg.in/mgo.v2/bson"
-)
-
-func (h *Handler) Signup(c echo.Context) (err error) {
- // Bind
- u := &model.User{ID: bson.NewObjectId()}
- if err = c.Bind(u); err != nil {
- return
- }
-
- // Validate
- if u.Email == "" || u.Password == "" {
- return &echo.HTTPError{Code: http.StatusBadRequest, Message: "invalid email or password"}
- }
-
- // Save user
- db := h.DB.Clone()
- defer db.Close()
- if err = db.DB("twitter").C("users").Insert(u); err != nil {
- return
- }
-
- return c.JSON(http.StatusCreated, u)
-}
-
-func (h *Handler) Login(c echo.Context) (err error) {
- // Bind
- u := new(model.User)
- if err = c.Bind(u); err != nil {
- return
- }
-
- // Find user
- db := h.DB.Clone()
- defer db.Close()
- if err = db.DB("twitter").C("users").
- Find(bson.M{"email": u.Email, "password": u.Password}).One(u); err != nil {
- if err == mgo.ErrNotFound {
- return &echo.HTTPError{Code: http.StatusUnauthorized, Message: "invalid email or password"}
- }
- return
- }
-
- //-----
- // JWT
- //-----
-
- // Create token
- token := jwt.New(jwt.SigningMethodHS256)
-
- // Set claims
- claims := token.Claims.(jwt.MapClaims)
- claims["id"] = u.ID
- claims["exp"] = time.Now().Add(time.Hour * 72).Unix()
-
- // Generate encoded token and send it as response
- u.Token, err = token.SignedString([]byte(Key))
- if err != nil {
- return err
- }
-
- u.Password = "" // Don't send password
- return c.JSON(http.StatusOK, u)
-}
-
-func (h *Handler) Follow(c echo.Context) (err error) {
- userID := userIDFromToken(c)
- id := c.Param("id")
-
- // Add a follower to user
- db := h.DB.Clone()
- defer db.Close()
- if err = db.DB("twitter").C("users").
- UpdateId(bson.ObjectIdHex(id), bson.M{"$addToSet": bson.M{"followers": userID}}); err != nil {
- if err == mgo.ErrNotFound {
- return echo.ErrNotFound
- }
- }
-
- return
-}
-
-func userIDFromToken(c echo.Context) string {
- user := c.Get("user").(*jwt.Token)
- claims := user.Claims.(jwt.MapClaims)
- return claims["id"].(string)
-}