simplified appends

This commit is contained in:
2023-03-25 17:36:21 +01:00
parent d028fb2db1
commit 3964ffc7cb
4 changed files with 50 additions and 37 deletions

View File

@@ -66,12 +66,17 @@ func WriteTable(w io.Writer, headers []string, data [][]string) {
fmt.Fprintln(w, tableString.String())
}
// output like psql \x
func WriteExtended(w io.Writer, uploads *common.Uploads) {
/* Print output like psql \x
Prints all Uploads and Forms which exist in common.Response,
however, we expect only one kind of them to be actually filled, so
the function can be used for forms and uploads.
*/
func WriteExtended(w io.Writer, response *common.Response) {
format := fmt.Sprintf("%%%ds: %%s\n", Maxwidth)
// we shall only have 1 element, however, if we ever support more, here we go
for _, entry := range uploads.Entries {
for _, entry := range response.Uploads {
expire := prepareExpire(entry.Expire, entry.Uploaded)
fmt.Fprintf(w, format, "Id", entry.Id)
fmt.Fprintf(w, format, "Expire", expire)
@@ -81,37 +86,39 @@ func WriteExtended(w io.Writer, uploads *common.Uploads) {
fmt.Fprintf(w, format, "Url", entry.Url)
fmt.Fprintln(w)
}
// FIXME: add response.Forms loop here
}
// extract an common.Uploads{} struct from json response
func GetUploadsFromResponse(resp *req.Response) (*common.Uploads, error) {
uploads := common.Uploads{}
func GetResponse(resp *req.Response) (*common.Response, error) {
response := common.Response{}
if err := json.Unmarshal([]byte(resp.String()), &uploads); err != nil {
if err := json.Unmarshal([]byte(resp.String()), &response); err != nil {
return nil, errors.New("Could not unmarshall JSON response: " + err.Error())
}
if !uploads.Success {
return nil, errors.New(uploads.Message)
if !response.Success {
return nil, errors.New(response.Message)
}
return &uploads, nil
return &response, nil
}
// turn the Uploads{} struct into a table and print it
func RespondTable(w io.Writer, resp *req.Response) error {
uploads, err := GetUploadsFromResponse(resp)
func UploadsRespondTable(w io.Writer, resp *req.Response) error {
response, err := GetResponse(resp)
if err != nil {
return err
}
if uploads.Message != "" {
fmt.Fprintln(w, uploads.Message)
if response.Message != "" {
fmt.Fprintln(w, response.Message)
}
// tablewriter
data := [][]string{}
for _, entry := range uploads.Entries {
for _, entry := range response.Uploads {
data = append(data, []string{
entry.Id, entry.Expire, entry.Context, entry.Uploaded.Format("2006-01-02 15:04:05"),
})
@@ -124,16 +131,16 @@ func RespondTable(w io.Writer, resp *req.Response) error {
// turn the Uploads{} struct into xtnd output and print it
func RespondExtended(w io.Writer, resp *req.Response) error {
uploads, err := GetUploadsFromResponse(resp)
response, err := GetResponse(resp)
if err != nil {
return err
}
if uploads.Message != "" {
fmt.Fprintln(w, uploads.Message)
if response.Message != "" {
fmt.Fprintln(w, response.Message)
}
WriteExtended(w, uploads)
WriteExtended(w, response)
return nil
}