Files
speedrun/pkg/portal/file.go

67 lines
1.6 KiB
Go

package portal
import (
"context"
"os"
"github.com/apex/log"
"github.com/dpogorzelski/speedrun/proto/portal"
)
func (s *Server) FileRead(ctx context.Context, file *portal.FileReadRequest) (*portal.FileReadResponse, error) {
fields := log.Fields{
"context": "file",
"command": "read",
"name": file.GetPath(),
}
log := log.WithFields(fields)
log.Debug("Received file read request")
content, err := os.ReadFile(file.GetPath())
if err != nil {
log.Error(err.Error())
return nil, err
}
return &portal.FileReadResponse{State: portal.State_UNKNOWN, Content: string(content)}, nil
}
func (s *Server) FileCp(ctx context.Context, file *portal.FileCpRequest) (*portal.FileCpResponse, error) {
fields := log.Fields{
"context": "file",
"command": "cp",
"name": file.GetDst(),
}
log := log.WithFields(fields)
log.Debug("Received file cp request")
if file.GetRemoteSrc() && file.GetRemoteDst() {
content, err := os.ReadFile(file.GetSrc())
if err != nil {
log.Error(err.Error())
return nil, err
}
err = os.WriteFile(file.GetDst(), content, 0644)
if err != nil {
log.Error(err.Error())
return nil, err
}
} else if file.GetRemoteDst() {
err := os.WriteFile(file.GetDst(), file.GetContent(), 0644)
if err != nil {
log.Error(err.Error())
return nil, err
}
} else if file.GetRemoteSrc() {
content, err := os.ReadFile(file.GetSrc())
if err != nil {
log.Error(err.Error())
return nil, err
}
return &portal.FileCpResponse{State: portal.State_UNKNOWN, Content: content}, nil
}
return &portal.FileCpResponse{State: portal.State_UNKNOWN}, nil
}