1
0
mirror of https://github.com/fumiama/imoto.git synced 2026-06-07 19:00:23 +08:00
Files
imoto/test/main.go
源文雨 afcdf158c3 v0.1.0
2023-11-17 01:46:29 +09:00

92 lines
2.0 KiB
Go

package main
import (
"bytes"
"crypto/md5"
"encoding/hex"
"io"
"net/http"
"os"
"github.com/fumiama/imoto"
)
func main() {
data, err := os.ReadFile("test.jpeg")
if err != nil {
panic(err)
}
m := md5.Sum(data)
p, _ := imoto.SplitMD5(m)
req, err := http.NewRequest("PUT", "http://127.0.0.1:8000/"+hex.EncodeToString(m[:]), bytes.NewReader(data))
if err != nil {
panic(err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
msg, _ := io.ReadAll(resp.Body)
panic("PUT error: " + imoto.BytesToString(msg))
}
req, err = http.NewRequest("HEAD", "http://127.0.0.1:8000/"+imoto.Uint64String(p), nil)
if err != nil {
panic(err)
}
resp, err = http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
if resp.StatusCode != http.StatusOK {
msg, _ := io.ReadAll(resp.Body)
panic("HEAD error: " + imoto.BytesToString(msg))
}
req, err = http.NewRequest("GET", "http://127.0.0.1:8000/"+imoto.Uint64String(p), nil)
if err != nil {
panic(err)
}
resp, err = http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
msg, _ := io.ReadAll(resp.Body)
panic("HEAD error: " + imoto.BytesToString(msg))
}
h := md5.New()
_, err = io.Copy(h, resp.Body)
if err != nil {
panic(err)
}
var m2 [md5.Size]byte
h.Sum(m2[:0])
if m2 != m {
panic("GET error: expected " + hex.EncodeToString(m[:]) + " but got " + hex.EncodeToString(m2[:]))
}
req, err = http.NewRequest("DELETE", "http://127.0.0.1:8000/"+hex.EncodeToString(m[:]), nil)
if err != nil {
panic(err)
}
resp, err = http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
msg, _ := io.ReadAll(resp.Body)
panic("HEAD error: " + imoto.BytesToString(msg))
}
h = md5.New()
_, err = io.Copy(h, resp.Body)
if err != nil {
panic(err)
}
h.Sum(m2[:0])
if m2 != m {
panic("DELETE error: expected " + hex.EncodeToString(m[:]) + " but got " + hex.EncodeToString(m2[:]))
}
}