pixeldrain_api_client/pixelapi/file.go
2021-03-10 19:08:58 +01:00

75 lines
2.2 KiB
Go

package pixelapi
import (
"io"
"net/url"
"time"
)
// FileID is returned when a file has been sucessfully uploaded
type FileID struct {
Success bool `json:"success"`
ID string `json:"id"`
}
// FileInfo is the public file information response
type FileInfo struct {
Success bool `json:"success"`
ID string `json:"id"`
Name string `json:"name"`
Size int64 `json:"size"`
Views int64 `json:"views"`
BandwidthUsed int64 `json:"bandwidth_used"`
Downloads int64 `json:"downloads"`
DateUpload time.Time `json:"date_upload"`
DateLastView time.Time `json:"date_last_view"`
MimeType string `json:"mime_type"`
ThumbnailHREF string `json:"thumbnail_href"`
Availability string `json:"availability"`
AvailabilityMessage string `json:"availability_message"`
AvailabilityName string `json:"availability_name"`
AbuseType string `json:"abuse_type"`
AbuseReporterName string `json:"abuse_reporter_name"`
CanEdit bool `json:"can_edit"`
ShowAds bool `json:"show_ads"`
}
// FileStats contains realtime statistics for a file
type FileStats struct {
Views int64 `json:"views"`
Bandwidth int64 `json:"bandwidth"`
Downloads int64 `json:"downloads"`
}
// FileTimeSeries returns historic data for a file
type FileTimeSeries struct {
Views TimeSeries `json:"views"`
Downloads TimeSeries `json:"downloads"`
Bandwidth TimeSeries `json:"bandwidth"`
}
// TimeSeries contains data captures over a time span
type TimeSeries struct {
Timestamps []time.Time `json:"timestamps"`
Amounts []int64 `json:"amounts"`
}
// GetFile makes a file download request and returns a readcloser. Don't forget
// to close it!
func (p *PixelAPI) GetFile(id string) (io.ReadCloser, error) {
return p.getRaw("file/" + id)
}
// GetFileInfo gets the FileInfo from the pixeldrain API
func (p *PixelAPI) GetFileInfo(id string) (resp FileInfo, err error) {
return resp, p.jsonRequest("GET", "file/"+id+"/info", &resp)
}
// PostFileView adds a view to a file
func (p *PixelAPI) PostFileView(id, viewtoken string) (err error) {
return p.form("POST", "file/"+id+"/view", url.Values{"token": {viewtoken}}, nil)
}