package YaDisk

import (
	"time"
)

type Error struct {
	Message     string `json:"message"`
	Description string `json:"description"`
	Error       string `json:"error"`
}

type ErrorAuth struct {
	Description string `json:"error_description"`
	Error       string `json:"error"`
}

type Disk struct {
	UnlimitedAutouploadEnabled bool `json:"unlimited_autoupload_enabled"`
	MaxFileSize                int  `json:"max_file_size"`
	TotalSpace                 int  `json:"total_space"`
	TrashSize                  int  `json:"trash_size"`
	IsPaid                     bool `json:"is_paid"`
	UsedSpace                  int  `json:"used_space"`
	SystemFolders              struct {
		Odnoklassniki string `json:"odnoklassniki"`
		Google        string `json:"google"`
		Instagram     string `json:"instagram"`
		Vkontakte     string `json:"vkontakte"`
		Mailru        string `json:"mailru"`
		Downloads     string `json:"downloads"`
		Applications  string `json:"applications"`
		Facebook      string `json:"facebook"`
		Social        string `json:"social"`
		Photostream   string `json:"photostream"`
		Screenshots   string `json:"screenshots"`
		Scans         string `json:"scans"`
	} `json:"system_folders"`
	User     User `json:"user"`
	Revision int  `json:"revision"`
}

type User struct {
	Country     string `json:"country"`
	Login       string `json:"login"`
	DisplayName string `json:"display_name"`
	Uid         string `json:"uid"`
}

type Resource struct {
	Embedded struct {
		Sort   string     `json:"sort"`
		Items  []Resource `json:"items"`
		Limit  int        `json:"limit"`
		Offset int        `json:"offset"`
		Path   string     `json:"path"`
		Total  int        `json:"total"`
	} `json:"_embedded"`
	Name string `json:"name"`
	Exif struct {
	} `json:"exif"`
	ResourceId string    `json:"resource_id"`
	Created    time.Time `json:"created"`
	Modified   time.Time `json:"modified"`
	Path       string    `json:"path"`
	CommentIds struct {
		PrivateResource string `json:"private_resource"`
		PublicResource  string `json:"public_resource"`
	} `json:"comment_ids"`
	Type     string `json:"type"`
	Revision int64  `json:"revision"`
	// FileData
	AntivirusStatus string `json:"antivirus_status"`
	Size            int64  `json:"size"`
	MimeType        string `json:"mime_type"`
	File            string `json:"file"`
	MediaType       string `json:"media_type"`
	Preview         string `json:"preview"`
	Sha256          string `json:"sha256"`
	Md5             string `json:"md5"`
}

type RespAuthCode struct {
	TokenType    string `json:"token_type"`
	ExpiresIn    int64  `json:"expires_in"`
	AccessToken  string `json:"access_token"`
	RefreshToken string `json:"refresh_token"`
}
