/*
Copyright (c) Edgeless Systems GmbH

SPDX-License-Identifier: AGPL-3.0-only
*/

package qemu

import (
	"context"
	"net/http"
	"net/url"
	"strings"
)

// Logger is a Cloud Logger for QEMU.
type Logger struct{}

// NewLogger creates a new Cloud Logger for QEMU.
func NewLogger() *Logger {
	return &Logger{}
}

// Disclose writes log information to QEMU's cloud log.
// This is done by sending a POST request to the QEMU's metadata endpoint.
func (l *Logger) Disclose(msg string) {
	url := &url.URL{
		Scheme: "http",
		Host:   qemuMetadataEndpoint,
		Path:   "/log",
	}

	req, _ := http.NewRequestWithContext(context.Background(), http.MethodPost, url.String(), strings.NewReader(msg))
	req.Header.Set("Content-Type", "application/json")
	resp, err := http.DefaultClient.Do(req)
	if err == nil {
		defer resp.Body.Close()
	}
}

// Close is a no-op.
func (l *Logger) Close() error {
	return nil
}