Picture upload
parent
b8d956ccb3
commit
08942a6628
|
@ -11,9 +11,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var Conn *amqp.Connection
|
var Conn *amqp.Connection
|
||||||
var MailQueue amqp.Queue
|
|
||||||
var Channel *amqp.Channel
|
var Channel *amqp.Channel
|
||||||
|
|
||||||
|
var MailQueue amqp.Queue
|
||||||
|
var PictureQueue amqp.Queue
|
||||||
|
|
||||||
func getConnectionString() string {
|
func getConnectionString() string {
|
||||||
cfg := &config.Cfg.RabbitMq
|
cfg := &config.Cfg.RabbitMq
|
||||||
|
|
||||||
|
@ -40,8 +42,8 @@ func Init() {
|
||||||
Channel = ch
|
Channel = ch
|
||||||
|
|
||||||
log.Debug("RabbitMQ connected")
|
log.Debug("RabbitMQ connected")
|
||||||
|
/*
|
||||||
q, err := ch.QueueDeclare(
|
mailQueue, err := ch.QueueDeclare(
|
||||||
"mails", // name
|
"mails", // name
|
||||||
false, // durable
|
false, // durable
|
||||||
false, // delete when unused
|
false, // delete when unused
|
||||||
|
@ -54,16 +56,55 @@ func Init() {
|
||||||
log.Fatalln("Failed to declare a queue", err)
|
log.Fatalln("Failed to declare a queue", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
MailQueue = q
|
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 Publish(body string) {
|
func declareQueue(channel *amqp.Channel, name string, queue *amqp.Queue) {
|
||||||
log.Infoln("qu name", MailQueue.Name)
|
q, err := channel.QueueDeclare(
|
||||||
log.Infoln("publish", Channel, MailQueue)
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Debugln("declareQ", q.Name)
|
||||||
|
|
||||||
|
*queue = q
|
||||||
|
|
||||||
|
log.Infoln("queue", MailQueue)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Publish(queue amqp.Queue, body string) {
|
||||||
|
log.Infoln("publish queue name", queue.Name)
|
||||||
|
|
||||||
err := Channel.Publish(
|
err := Channel.Publish(
|
||||||
"", // exchange
|
"", // exchange
|
||||||
MailQueue.Name, // routing key
|
queue.Name, // routing key
|
||||||
false, // mandatory
|
false, // mandatory
|
||||||
false, // immediate
|
false, // immediate
|
||||||
amqp.Publishing{
|
amqp.Publishing{
|
||||||
|
@ -85,5 +126,18 @@ func PublishMail(mail string, templateId int, languageId int, bodyData json.RawM
|
||||||
log.Infoln("error reqBody", err)
|
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
|
package picture
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"strings"
|
"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/gofiber/fiber/v2"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test(c *fiber.Ctx) error {
|
func Test(c *fiber.Ctx) error {
|
||||||
|
|
||||||
log.Infoln("header", string(c.Request().Header.ContentType()))
|
log.Infoln("header", string(c.Request().Header.ContentType()))
|
||||||
|
|
||||||
log.Infoln("formValue", c.FormValue("image"))
|
log.Infoln("formValue", c.FormValue("image"))
|
||||||
|
@ -22,6 +27,35 @@ func Test(c *fiber.Ctx) error {
|
||||||
return c.SendStatus(fiber.StatusInternalServerError)
|
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)
|
filename := strings.Replace(uuid.New().String(), "-", "", -1)
|
||||||
fileExt := strings.Split(file.Filename, ".")[1]
|
fileExt := strings.Split(file.Filename, ".")[1]
|
||||||
image := fmt.Sprintf("%s.%s", filename, fileExt)
|
image := fmt.Sprintf("%s.%s", filename, fileExt)
|
||||||
|
|
|
@ -214,7 +214,7 @@ func userInfos(c *fiber.Ctx, userId string) error {
|
||||||
return c.JSON(&user)
|
return c.JSON(&user)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserBySessionId(sessionId string) (structs.User, error) {
|
func GetUserBySessionId(sessionId string) (structs.User, error) {
|
||||||
db := database.DB
|
db := database.DB
|
||||||
user := structs.User{}
|
user := structs.User{}
|
||||||
userId, err := getUserIdBySessionId(sessionId)
|
userId, err := getUserIdBySessionId(sessionId)
|
||||||
|
@ -249,7 +249,7 @@ func deleteUser(c *fiber.Ctx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
if err != nil {
|
||||||
return c.SendStatus(fiber.StatusInternalServerError)
|
return c.SendStatus(fiber.StatusInternalServerError)
|
||||||
|
|
Loading…
Reference in New Issue