mirror of
https://github.com/SourceFellows/gobuch.git
synced 2024-10-22 13:57:13 +00:00
77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"gocloud.dev/blob"
|
||
|
_ "gocloud.dev/blob/s3blob"
|
||
|
)
|
||
|
|
||
|
var serverURL string
|
||
|
|
||
|
func readfile(c *gin.Context) {
|
||
|
ctx := c.Request.Context()
|
||
|
bucket, err := blob.OpenBucket(ctx, serverURL)
|
||
|
if err != nil {
|
||
|
c.AbortWithStatus(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
defer bucket.Close()
|
||
|
|
||
|
reader, err := bucket.NewReader(ctx, "gopher.png", nil)
|
||
|
if err != nil {
|
||
|
c.AbortWithStatus(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
defer reader.Close()
|
||
|
|
||
|
c.Header("Content-Type", "image/png")
|
||
|
io.Copy(c.Writer, reader)
|
||
|
|
||
|
}
|
||
|
|
||
|
func writefile(c *gin.Context) {
|
||
|
ctx := c.Request.Context()
|
||
|
bucket, err := blob.OpenBucket(ctx, serverURL)
|
||
|
if err != nil {
|
||
|
c.AbortWithStatus(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
defer bucket.Close()
|
||
|
|
||
|
writer, err := bucket.NewWriter(ctx, "gopher.png", nil)
|
||
|
if err != nil {
|
||
|
log.Println(err)
|
||
|
c.AbortWithStatus(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
defer writer.Close()
|
||
|
_, err = io.Copy(writer, c.Request.Body)
|
||
|
if err != nil {
|
||
|
log.Println(err)
|
||
|
c.AbortWithStatus(http.StatusInternalServerError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
c.Status(http.StatusCreated)
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
|
||
|
os.Setenv("AWS_ACCESS_KEY", "minioadmin")
|
||
|
os.Setenv("AWS_SECRET_KEY", "minioadmin")
|
||
|
|
||
|
log.Println("starting...")
|
||
|
|
||
|
serverURL = "s3://gocloud?endpoint=localhost:9000&disableSSL=true&s3ForcePathStyle=true®ion=DE"
|
||
|
|
||
|
r := gin.Default()
|
||
|
r.GET("/", readfile)
|
||
|
r.POST("/", writefile)
|
||
|
r.Run()
|
||
|
}
|