Guest User

Untitled

a guest
Aug 5th, 2020
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.81 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bytes"
  5.     "encoding/json"
  6.     _ "image/gif"
  7.     _ "image/jpeg"
  8.     "io/ioutil"
  9.     "log"
  10.     "mime/multipart"
  11.     "net/http"
  12.  
  13.     "github.com/gin-gonic/gin"
  14. )
  15.  
  16. func avatarSubmit(c *gin.Context) {
  17.     ctx := getContext(c)
  18.     if ctx.User.ID == 0 {
  19.         resp403(c)
  20.         return
  21.     }
  22.     var m message
  23.     defer func() {
  24.         simpleReply(c, m)
  25.     }()
  26.     file, multipartFileHeader, err := c.Request.FormFile("avatar")
  27.     if err != nil {
  28.         m = errorMessage{T(c, "An error occurred.")}
  29.         return
  30.     }
  31.  
  32.     body := &bytes.Buffer{}
  33.     writer := multipart.NewWriter(body)
  34.  
  35.     part, err := writer.CreateFormFile("avatar", multipartFileHeader.Filename)
  36.     avatarContent, err := ioutil.ReadAll(file)
  37.     part.Write(avatarContent)
  38.  
  39.     rt, err := writer.CreateFormField("rt")
  40.     rt.Write([]byte(ctx.Token))
  41.  
  42.     if err != nil {
  43.         log.Fatal(err)
  44.     }
  45.  
  46.     //io.Copy(rt, strings.NewReader(ctx.Token))
  47.     writer.Close()
  48.     request, err := http.NewRequest("POST", "http://127.0.0.1:5010/avatars/uploadAvatar", body)
  49.  
  50.     if err != nil {
  51.         log.Fatal(err)
  52.     }
  53.  
  54.     request.Header.Add("Content-Type", writer.FormDataContentType())
  55.     client := &http.Client{}
  56.  
  57.     response, err := client.Do(request)
  58.  
  59.     if err != nil {
  60.         log.Fatal(err)
  61.     }
  62.     defer response.Body.Close()
  63.  
  64.     content, err := ioutil.ReadAll(response.Body)
  65.  
  66.     if err != nil {
  67.         log.Fatal(err)
  68.     }
  69.  
  70.     errorRed := struct {
  71.         Wrong string `json:"error"`
  72.     }{}
  73.     _ = json.Unmarshal(content, &errorRed)
  74.  
  75.     if len(errorRed.Wrong) > 1 {
  76.         m = errorMessage{T(c, errorRed.Wrong)}
  77.         return
  78.     }
  79.  
  80.     // okay thats' not error
  81.     // now try to unmarshal in repsonse
  82.  
  83.     goodResponse := struct {
  84.         Response string `json:"response"`
  85.     }{}
  86.     err = json.Unmarshal(content, &goodResponse)
  87.  
  88.     if err != nil {
  89.         m = errorMessage{T(c, "Something happend, try again later")}
  90.         return
  91.     }
  92.  
  93.     m = successMessage{T(c, goodResponse.Response)}
  94. }
Add Comment
Please, Sign In to add comment