Initial test
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 1m2s
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 1m2s
This commit is contained in:
parent
7d52492e30
commit
971e77229a
4
go.mod
4
go.mod
@ -2,7 +2,9 @@ module gitea.bruyant.xyz/alexandre/ipfs-node-pin
|
|||||||
|
|
||||||
go 1.21.5
|
go 1.21.5
|
||||||
|
|
||||||
|
require github.com/sethvargo/go-githubactions v1.1.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/google/go-cmp v0.5.9 // indirect
|
||||||
github.com/sethvargo/go-envconfig v0.9.0 // indirect
|
github.com/sethvargo/go-envconfig v0.9.0 // indirect
|
||||||
github.com/sethvargo/go-githubactions v1.1.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
2
go.sum
2
go.sum
@ -1,3 +1,5 @@
|
|||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/sethvargo/go-envconfig v0.9.0 h1:Q6FQ6hVEeTECULvkJZakq3dZMeBQ3JUpcKMfPQbKMDE=
|
github.com/sethvargo/go-envconfig v0.9.0 h1:Q6FQ6hVEeTECULvkJZakq3dZMeBQ3JUpcKMfPQbKMDE=
|
||||||
github.com/sethvargo/go-envconfig v0.9.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
|
github.com/sethvargo/go-envconfig v0.9.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
|
||||||
github.com/sethvargo/go-githubactions v1.1.0 h1:mg03w+b+/s5SMS298/2G6tHv8P0w0VhUFaqL1THIqzY=
|
github.com/sethvargo/go-githubactions v1.1.0 h1:mg03w+b+/s5SMS298/2G6tHv8P0w0VhUFaqL1THIqzY=
|
||||||
|
121
main.go
121
main.go
@ -1,12 +1,121 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/sethvargo/go-githubactions"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/fs"
|
||||||
|
"mime/multipart"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/sethvargo/go-githubactions"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
type AddResponse struct {
|
||||||
path := githubactions.GetInput("path_to_add")
|
Bytes int64
|
||||||
if path == "" {
|
Hash string
|
||||||
githubactions.Fatalf("Missing: path_to_add")
|
Name string
|
||||||
}
|
Size string
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Check inputs
|
||||||
|
path := githubactions.GetInput("path_to_add")
|
||||||
|
if path == "" {
|
||||||
|
githubactions.Fatalf("Missing: path_to_add")
|
||||||
|
}
|
||||||
|
|
||||||
|
ipfsHost := githubactions.GetInput("ipfs_host")
|
||||||
|
if ipfsHost == "" {
|
||||||
|
githubactions.Fatalf("Missing: ipfs_host")
|
||||||
|
}
|
||||||
|
|
||||||
|
ipfsPort := githubactions.GetInput("ipfs_port")
|
||||||
|
if ipfsPort == "" {
|
||||||
|
githubactions.Fatalf("Missing: ipfs_port")
|
||||||
|
}
|
||||||
|
|
||||||
|
token := githubactions.GetInput("ipfs_token")
|
||||||
|
if token == "" {
|
||||||
|
githubactions.Fatalf("Missing: ipfs_token")
|
||||||
|
}
|
||||||
|
|
||||||
|
targetPath, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
githubactions.Fatalf("Unable to access path_to_add: %v", err.Error())
|
||||||
|
}
|
||||||
|
defer targetPath.Close()
|
||||||
|
|
||||||
|
targetPathInfo, err := targetPath.Stat()
|
||||||
|
if err != nil {
|
||||||
|
githubactions.Fatalf("Unable to access to access path_to_add info: %v", fmt.Errorf("%w", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
if !targetPathInfo.IsDir() {
|
||||||
|
githubactions.Fatalf("%v is not a directory", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
body, writer := io.Pipe()
|
||||||
|
|
||||||
|
// TODO: URL
|
||||||
|
req, err := http.NewRequest(http.MethodPost, "ipfs.narwhal-frog.ts.net", body)
|
||||||
|
if err != nil {
|
||||||
|
githubactions.Fatalf("Unable to create request: %v", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
defer writer.Close()
|
||||||
|
|
||||||
|
mwriter := multipart.NewWriter(writer)
|
||||||
|
req.Header.Add("Content-Type", mwriter.FormDataContentType())
|
||||||
|
|
||||||
|
err = filepath.Walk(path, func(innerPath string, info fs.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
relativeParh := strings.TrimPrefix(innerPath, path)
|
||||||
|
w, err := mwriter.CreateFormFile("file", relativeParh)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
in, err := os.Open(innerPath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer in.Close()
|
||||||
|
|
||||||
|
if written, err := io.Copy(w, in); err != nil {
|
||||||
|
return fmt.Errorf("error copying %s (%d bytes written): %v", path, written, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := mwriter.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
githubactions.Fatalf("Unable to create request body : %v", fmt.Errorf("%w", err))
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
res, err := client.Do(req)
|
||||||
|
|
||||||
|
resBody, err := io.ReadAll(res.Body)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
var ipfsAddResponse AddResponse
|
||||||
|
json.Unmarshal(resBody, &ipfsAddResponse)
|
||||||
|
|
||||||
|
fmt.Println(ipfsAddResponse.Hash)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user