Picture upload

master
Alex 2021-08-01 12:24:17 +02:00
parent b8d956ccb3
commit 08942a6628
4 changed files with 115 additions and 20 deletions

View File

@ -11,9 +11,11 @@ import (
)
var Conn *amqp.Connection
var MailQueue amqp.Queue
var Channel *amqp.Channel
var MailQueue amqp.Queue
var PictureQueue amqp.Queue
func getConnectionString() string {
cfg := &config.Cfg.RabbitMq
@ -40,32 +42,71 @@ func Init() {
Channel = ch
log.Debug("RabbitMQ connected")
/*
mailQueue, err := ch.QueueDeclare(
"mails", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
q, err := ch.QueueDeclare(
"mails", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
if err != nil {
log.Fatalln("Failed to declare a queue", err)
}
MailQueue = mailQueue */
declareQueue(ch, "mails", &MailQueue)
declareQueue(ch, "pictures", &PictureQueue)
/*
pictureQueue, err := ch.QueueDeclare(
"picture", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
if err != nil {
log.Fatalln("Failed to declare a queue", err)
}
PictureQueue = pictureQueue */
}
func declareQueue(channel *amqp.Channel, name string, queue *amqp.Queue) {
q, err := channel.QueueDeclare(
name, // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
if err != nil {
log.Fatalln("Failed to declare a queue", err)
}
MailQueue = q
log.Debugln("declareQ", q.Name)
*queue = q
log.Infoln("queue", MailQueue)
}
func Publish(body string) {
log.Infoln("qu name", MailQueue.Name)
log.Infoln("publish", Channel, MailQueue)
func Publish(queue amqp.Queue, body string) {
log.Infoln("publish queue name", queue.Name)
err := Channel.Publish(
"", // exchange
MailQueue.Name, // routing key
false, // mandatory
false, // immediate
"", // exchange
queue.Name, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "application/json",
Body: []byte(body),
@ -85,5 +126,18 @@ func PublishMail(mail string, templateId int, languageId int, bodyData json.RawM
log.Infoln("error reqBody", err)
}
Publish(string(reqBody))
Publish(MailQueue, string(reqBody))
}
func PublishPicture(pictureMessage structs.RabbitmqPictureMessage) {
//js := structs.RabbitmqPictureMessage{Picture: picture, UserId: userId}
reqBody, err := json.MarshalIndent(&pictureMessage, "", "\t")
if err != nil {
log.Infoln("error reqBody", err)
}
Publish(PictureQueue, string(reqBody))
log.Debugln("rabbitmq publicPicture")
}

View File

@ -0,0 +1,7 @@
package structs
type RabbitmqPictureMessage struct {
Picture []byte
UserId string
Filename string
}

View File

@ -1,16 +1,21 @@
package picture
import (
"bytes"
"fmt"
"io"
"strings"
"git.umbach.dev/app-idea/rest-api/modules/config"
"git.umbach.dev/app-idea/rest-api/modules/rabbitmq"
"git.umbach.dev/app-idea/rest-api/modules/structs"
"git.umbach.dev/app-idea/rest-api/routers/api/v1/user"
"github.com/gofiber/fiber/v2"
"github.com/google/uuid"
log "github.com/sirupsen/logrus"
)
func Test(c *fiber.Ctx) error {
log.Infoln("header", string(c.Request().Header.ContentType()))
log.Infoln("formValue", c.FormValue("image"))
@ -22,6 +27,35 @@ func Test(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusInternalServerError)
}
f, err := file.Open()
if err != nil {
log.Info("err001")
return c.SendStatus(fiber.StatusInternalServerError)
}
defer f.Close()
buf := bytes.NewBuffer(nil)
if _, err := io.Copy(buf, f); err != nil {
log.Info("err002")
return c.SendStatus(fiber.StatusInternalServerError)
}
log.Infoln("bytes", len(buf.Bytes()))
user, err := user.GetUserBySessionId(c.Cookies(config.Cfg.Settings.Cookies.SessionId))
if err != nil {
log.Infoln("err004", err)
return c.SendStatus(fiber.StatusInternalServerError)
}
log.Infoln("userId", user.Id)
rabbitmq.PublishPicture(structs.RabbitmqPictureMessage{Picture: buf.Bytes(), UserId: user.Id, Filename: file.Filename})
filename := strings.Replace(uuid.New().String(), "-", "", -1)
fileExt := strings.Split(file.Filename, ".")[1]
image := fmt.Sprintf("%s.%s", filename, fileExt)

View File

@ -214,7 +214,7 @@ func userInfos(c *fiber.Ctx, userId string) error {
return c.JSON(&user)
}
func getUserBySessionId(sessionId string) (structs.User, error) {
func GetUserBySessionId(sessionId string) (structs.User, error) {
db := database.DB
user := structs.User{}
userId, err := getUserIdBySessionId(sessionId)
@ -249,7 +249,7 @@ func deleteUser(c *fiber.Ctx) error {
}
func DeleteUser(c *fiber.Ctx) error {
user, err := getUserBySessionId(c.Cookies(cfg.Settings.Cookies.SessionId))
user, err := GetUserBySessionId(c.Cookies(cfg.Settings.Cookies.SessionId))
if err != nil {
return c.SendStatus(fiber.StatusInternalServerError)