Picture upload
parent
b8d956ccb3
commit
08942a6628
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package structs
|
||||
|
||||
type RabbitmqPictureMessage struct {
|
||||
Picture []byte
|
||||
UserId string
|
||||
Filename string
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue