package repo

import "archive/zip"

type PluginArchive struct {
	File *zip.ReadCloser
}

type PluginArchiveInfo struct {
	URL      string
	Version  string
	Checksum string
}

// PluginVersions is the JSON response from /api/plugins/$pluginID/versions
type PluginVersions struct {
	Versions []Version `json:"items"`
}

type Version struct {
	Version           string              `json:"version"`
	Arch              map[string]ArchMeta `json:"packages"`
	URL               string              `json:"url"`
	CreatedAt         string              `json:"createdAt"`
	IsCompatible      *bool               `json:"isCompatible,omitempty"`
	GrafanaDependency string              `json:"grafanaDependency"`
}

type ArchMeta struct {
	SHA256      string `json:"sha256"`
	MD5         string `json:"md5"`
	PackageName string `json:"packageName"`
	DownloadURL string `json:"downloadUrl"`
}

// PluginInfo is (a subset of) the JSON response from grafana.com/api/plugins/$pluginID
type PluginInfo struct {
	ID     int    `json:"id"`
	Status string `json:"status"`
	Slug   string `json:"slug"`
}
