github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/imageserver/httpd/listDirectories.go (about)

     1  package httpd
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  	"net/http"
     7  
     8  	"github.com/Cloud-Foundations/Dominator/lib/html"
     9  	"github.com/Cloud-Foundations/Dominator/lib/image"
    10  )
    11  
    12  func (s state) listDirectoriesHandler(w http.ResponseWriter,
    13  	req *http.Request) {
    14  	writer := bufio.NewWriter(w)
    15  	defer writer.Flush()
    16  	directories := s.imageDataBase.ListDirectories()
    17  	image.SortDirectories(directories)
    18  	if req.URL.RawQuery == "output=text" {
    19  		for _, directory := range directories {
    20  			fmt.Fprintln(writer, directory.Name)
    21  		}
    22  		return
    23  	}
    24  	fmt.Fprintln(writer, "<title>imageserver directories</title>")
    25  	fmt.Fprintln(writer, `<style>
    26                            table, th, td {
    27                            border-collapse: collapse;
    28                            }
    29                            </style>`)
    30  	fmt.Fprintln(writer, "<body>")
    31  	fmt.Fprintln(writer, "<h3>")
    32  	fmt.Fprintln(writer, `<table border="1" style="width:100%">`)
    33  	tw, _ := html.NewTableWriter(writer, true, "Name", "Owner Group")
    34  	for _, directory := range directories {
    35  		tw.WriteRow("", "", directory.Name, directory.Metadata.OwnerGroup)
    36  	}
    37  	fmt.Fprintln(writer, "</table>")
    38  	fmt.Fprintln(writer, "</body>")
    39  }