add /open endpoint: open files with EDITOR or xdg-open
This commit is contained in:
parent
ed0cce92f1
commit
292448c05d
22
main.go
22
main.go
|
|
@ -191,6 +191,11 @@ func writeJSON(w http.ResponseWriter, status int, v any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handler(w http.ResponseWriter, r *http.Request) {
|
func handler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path == "/open" {
|
||||||
|
handleOpen(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
fsys, err := dial()
|
fsys, err := dial()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeJSON(w, http.StatusBadGateway, map[string]string{"error": "9p connect: " + err.Error()})
|
writeJSON(w, http.StatusBadGateway, map[string]string{"error": "9p connect: " + err.Error()})
|
||||||
|
|
@ -424,6 +429,23 @@ func handleStat(w http.ResponseWriter, fsys *client.Fsys, p string) {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleOpen(w http.ResponseWriter, r *http.Request) {
|
||||||
|
p := r.URL.Query().Get("path")
|
||||||
|
if p == "" {
|
||||||
|
writeJSON(w, http.StatusBadRequest, map[string]string{"error": "missing path"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
editor := os.Getenv("EDITOR")
|
||||||
|
if editor == "" {
|
||||||
|
editor = "xdg-open"
|
||||||
|
}
|
||||||
|
if err := exec.Command(editor, p).Start(); err != nil {
|
||||||
|
writeJSON(w, http.StatusInternalServerError, map[string]string{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
writeJSON(w, http.StatusOK, map[string]string{"opened": p})
|
||||||
|
}
|
||||||
|
|
||||||
func handlePut(w http.ResponseWriter, r *http.Request, fsys *client.Fsys, p string) {
|
func handlePut(w http.ResponseWriter, r *http.Request, fsys *client.Fsys, p string) {
|
||||||
body, err := io.ReadAll(r.Body)
|
body, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue