package main

import (
	"fmt"
	"os"

	"github.com/UpCloudLtd/upcloud-go-api/upcloud"
	"github.com/UpCloudLtd/upcloud-go-api/upcloud/request"
	"github.com/UpCloudLtd/upcloud-go-api/upcloud/service"
)

func infoTagsFromId(s *service.Service, id string) (upcloud.TagServerSlice,error) {
	var upTags upcloud.TagServerSlice
	if id == ""  {
		fmt.Fprintf(os.Stderr, "Resouce not found to get tags\n")
    return upTags,nil
	}
	info, err := s.GetServerDetails(&request.GetServerDetailsRequest{
		UUID: id,
	})
	for _, tag := range info.Tags {
		upTags = append(upTags, tag)
	}
	return upTags, err
}
func addTagsToId(s *service.Service, id string, tags []string) error {
	if id == "" || len(tags) == 0 {
		fmt.Fprintf(os.Stderr, "Resouce not found to add tags to (%s)\n",id)
    return nil
	}
	var upTags upcloud.TagServerSlice
	for i := 0; i < len(tags); i++ {
		upTags = append(upTags,tags[i])
	}
	_, err := s.TagServer(&request.TagServerRequest{
		UUID: id,
		Tags: upTags,
	})
	if err != nil {
		fmt.Fprintf(os.Stderr, "Unable to tag server %s: %#v", id, err)
		return err
	}
	return nil
}
func deleteTagsFromId(s *service.Service, id string, tags []string) error {
	if id == "" || len(tags) == 0 {
		fmt.Fprintf(os.Stderr, "Resouce not found to get tags (%s)\n",id)
    return nil
	}
	_, err := s.UntagServer(&request.UntagServerRequest{
		UUID: id,
		Tags: tags,
	})
	// fmt.Printf("Delete Tag form server: %#v\n", msg)
	return err
}