2 Star 3 Fork 0

newdas/video_server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
handlers.go 5.20 KB
一键复制 编辑 原始数据 按行查看 历史
newdas 提交于 2018-08-02 00:22 +08:00 . all
package main
import (
"encoding/json"
"net/http"
"io/ioutil"
"github.com/julienschmidt/httprouter"
"video_server/api/defs"
"video_server/api/session"
"video_server/api/dbops"
"log"
"video_server/api/utils"
)
func CreateUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
// 首先从request里面读出create user相关的body
res, _:=ioutil.ReadAll(r.Body)
ubody:=&defs.UserCredential{}
if err:=json.Unmarshal(res, ubody);err!=nil{
sendErrorResponse(w, defs.ErrorRequestBodyParseFailed)
return
}
if err:=dbops.AddUserCredential(ubody.Username, ubody.Pwd); err!=nil {
sendErrorResponse(w, defs.ErrorDBError)
}
id:=session.GenerateNewSessionId(ubody.Username)
su:=&defs.SignedUp{Success: true, SessionId: id}
if resp, err:=json.Marshal(su);err!=nil {
sendErrorResponse(w, defs.ErrorInternalFaults)
return
} else {
sendNormalResponse(w, string(resp), 201)
}
}
func Login(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
res, _:=ioutil.ReadAll(r.Body)
log.Printf("%s", res)
ubody:=&defs.UserCredential{}
if err:=json.Unmarshal(res, ubody); err!=nil {
log.Printf("%s", err)
//io.WriteString(w, "wrong")
sendErrorResponse(w, defs.ErrorRequestBodyParseFailed)
return
}
uname := p.ByName("username")
log.Printf("Login url name: %s", uname)
log.Printf("Login body name: %s", ubody.Username)
if uname!=ubody.Username {
sendErrorResponse(w, defs.ErrorNotAuthUser)
return
}
log.Printf("%s", ubody.Username)
pwd, err:=dbops.GetUserCredential(ubody.Username)
log.Printf("Login pwd: %s", pwd)
log.Printf("Login body pwd: %s", ubody.Pwd)
if err!=nil || len(pwd)==0 || pwd!=ubody.Pwd {
sendErrorResponse(w, defs.ErrorNotAuthUser)
return
}
id:=session.GenerateNewSessionId(ubody.Username)
si := &defs.SignedIn{Success: true, SessionId: id}
if resp, err:=json.Marshal(si); err!= nil{
sendErrorResponse(w, defs.ErrorInternalFaults)
} else {
sendNormalResponse(w, string(resp), 200)
}
//io.WriteString(w, uname)
}
func GetUserInfo(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
log.Printf("Unauthorized user\n")
return
}
uname:=p.ByName("username")
u, err:=dbops.GetUser(uname)
if err!=nil{
log.Printf("Error in GetUserInfo: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
return
}
ui:=&defs.UserInfo{Id: u.Id}
if resp, err:=json.Marshal(ui); err!= nil {
sendErrorResponse(w, defs.ErrorInternalFaults)
} else {
sendNormalResponse(w, string(resp), 200)
}
}
func AddNewVideo(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
log.Printf("Unathorized user \n")
return
}
res, _ := ioutil.ReadAll(r.Body)
nvbody := &defs.NewVideo{}
if err := json.Unmarshal(res, nvbody); err != nil {
log.Printf("%s", err)
sendErrorResponse(w, defs.ErrorRequestBodyParseFailed)
return
}
vi, err := dbops.AddNewVideo(nvbody.AuthorId, nvbody.Name)
log.Printf("Author id : %d, name: %s \n", nvbody.AuthorId, nvbody.Name)
if err != nil {
log.Printf("Error in AddNewVideo: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
return
}
if resp, err := json.Marshal(vi); err != nil {
sendErrorResponse(w, defs.ErrorInternalFaults)
} else {
sendNormalResponse(w, string(resp), 201)
}
}
func ListAllVideos(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
return
}
uname := p.ByName("username")
vs, err := dbops.ListVideoInfo(uname, 0, utils.GetCurrentTimestampSec())
if err != nil {
log.Printf("Error in ListAllvideos: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
return
}
vsi := &defs.VideosInfo{Videos: vs}
if resp, err := json.Marshal(vsi); err != nil {
sendErrorResponse(w, defs.ErrorInternalFaults)
} else {
sendNormalResponse(w, string(resp), 200)
}
}
func DeleteVideo(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
return
}
vid := p.ByName("vid-id")
err := dbops.DeleteVideoInfo(vid)
if err != nil {
log.Printf("Error in DeletVideo: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
return
}
go utils.SendDeleteVideoRequest(vid)
sendNormalResponse(w, "", 204)
}
func PostComment(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
return
}
reqBody, _ := ioutil.ReadAll(r.Body)
cbody := &defs.NewComment{}
if err := json.Unmarshal(reqBody, cbody); err != nil {
log.Printf("%s", err)
sendErrorResponse(w, defs.ErrorRequestBodyParseFailed)
return
}
vid := p.ByName("vid-id")
if err := dbops.AddNewComments(vid, cbody.AuthorId, cbody.Content); err != nil {
log.Printf("Error in PostComment: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
} else {
sendNormalResponse(w, "ok", 201)
}
}
func ShowComments(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
if !ValidateUser(w, r) {
return
}
vid := p.ByName("vid-id")
cm, err := dbops.ListComments(vid, 0, utils.GetCurrentTimestampSec())
if err != nil {
log.Printf("Error in ShowComments: %s", err)
sendErrorResponse(w, defs.ErrorDBError)
return
}
cms := &defs.Comments{Comments: cm}
if resp, err := json.Marshal(cms); err != nil {
sendErrorResponse(w, defs.ErrorInternalFaults)
} else {
sendNormalResponse(w, string(resp), 200)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/newdas/video_server.git
git@gitee.com:newdas/video_server.git
newdas
video_server
video_server
cbae10443da8

搜索帮助