Initial commit
This commit is contained in:
commit
02a6dabcfb
62 files changed
+15751
No files matched your search
@@ -0,0 +1,361 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// Experiments represents experiments
|
||||
type Experiments struct {
|
||||
BaseModel
|
||||
Experiments []ExperimentDetail `json:"experiments"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes Experiments from JSON
|
||||
func (e *Experiments) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
experiments := &Experiments{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["experiments"]; ok {
|
||||
var items []ExperimentDetail
|
||||
json.Unmarshal(v, &items)
|
||||
experiments.Experiments = items
|
||||
}
|
||||
if v, ok := raw["total"]; ok {
|
||||
json.Unmarshal(v, &experiments.Total)
|
||||
}
|
||||
|
||||
return experiments, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of Experiments
|
||||
func (e *Experiments) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
e := &Experiments{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, e); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, e)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// ExperimentDetail represents experiment details
|
||||
type ExperimentDetail struct {
|
||||
BaseModel
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Status string `json:"status"`
|
||||
Variant string `json:"variant"`
|
||||
StartDate string `json:"start_date"`
|
||||
EndDate string `json:"end_date"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes ExperimentDetail from JSON
|
||||
func (e *ExperimentDetail) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
detail := &ExperimentDetail{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["id"]; ok {
|
||||
json.Unmarshal(v, &detail.ID)
|
||||
}
|
||||
if v, ok := raw["name"]; ok {
|
||||
json.Unmarshal(v, &detail.Name)
|
||||
}
|
||||
if v, ok := raw["description"]; ok {
|
||||
json.Unmarshal(v, &detail.Description)
|
||||
}
|
||||
if v, ok := raw["status"]; ok {
|
||||
json.Unmarshal(v, &detail.Status)
|
||||
}
|
||||
if v, ok := raw["variant"]; ok {
|
||||
json.Unmarshal(v, &detail.Variant)
|
||||
}
|
||||
if v, ok := raw["start_date"]; ok {
|
||||
json.Unmarshal(v, &detail.StartDate)
|
||||
}
|
||||
if v, ok := raw["end_date"]; ok {
|
||||
json.Unmarshal(v, &detail.EndDate)
|
||||
}
|
||||
|
||||
return detail, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of ExperimentDetails
|
||||
func (e *ExperimentDetail) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
detail := &ExperimentDetail{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, detail); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, detail)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// Permissions represents user permissions
|
||||
type Permissions struct {
|
||||
BaseModel
|
||||
CanPlay bool `json:"can_play"`
|
||||
CanDownload bool `json:"can_download"`
|
||||
CanLike bool `json:"can_like"`
|
||||
CanCreatePlaylist bool `json:"can_create_playlist"`
|
||||
CanSubscribe bool `json:"can_subscribe"`
|
||||
CanUsePlus bool `json:"can_use_plus"`
|
||||
CanUseRadio bool `json:"can_use_radio"`
|
||||
CanUseYnison bool `json:"can_use_ynison"`
|
||||
CanUseHighQuality bool `json:"can_use_high_quality"`
|
||||
CanUseLossless bool `json:"can_use_lossless"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes Permissions from JSON
|
||||
func (p *Permissions) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
perms := &Permissions{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["can_play"]; ok {
|
||||
json.Unmarshal(v, &perms.CanPlay)
|
||||
}
|
||||
if v, ok := raw["can_download"]; ok {
|
||||
json.Unmarshal(v, &perms.CanDownload)
|
||||
}
|
||||
if v, ok := raw["can_like"]; ok {
|
||||
json.Unmarshal(v, &perms.CanLike)
|
||||
}
|
||||
if v, ok := raw["can_create_playlist"]; ok {
|
||||
json.Unmarshal(v, &perms.CanCreatePlaylist)
|
||||
}
|
||||
if v, ok := raw["can_subscribe"]; ok {
|
||||
json.Unmarshal(v, &perms.CanSubscribe)
|
||||
}
|
||||
if v, ok := raw["can_use_plus"]; ok {
|
||||
json.Unmarshal(v, &perms.CanUsePlus)
|
||||
}
|
||||
if v, ok := raw["can_use_radio"]; ok {
|
||||
json.Unmarshal(v, &perms.CanUseRadio)
|
||||
}
|
||||
if v, ok := raw["can_use_ynison"]; ok {
|
||||
json.Unmarshal(v, &perms.CanUseYnison)
|
||||
}
|
||||
if v, ok := raw["can_use_high_quality"]; ok {
|
||||
json.Unmarshal(v, &perms.CanUseHighQuality)
|
||||
}
|
||||
if v, ok := raw["can_use_lossless"]; ok {
|
||||
json.Unmarshal(v, &perms.CanUseLossless)
|
||||
}
|
||||
|
||||
return perms, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of Permissions
|
||||
func (p *Permissions) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
perms := &Permissions{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, perms); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, perms)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// PermissionAlerts represents permission alerts
|
||||
type PermissionAlerts struct {
|
||||
BaseModel
|
||||
Alerts []PermissionAlert `json:"alerts"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes PermissionAlerts from JSON
|
||||
func (p *PermissionAlerts) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
alerts := &PermissionAlerts{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["alerts"]; ok {
|
||||
var items []PermissionAlert
|
||||
json.Unmarshal(v, &items)
|
||||
alerts.Alerts = items
|
||||
}
|
||||
if v, ok := raw["total"]; ok {
|
||||
json.Unmarshal(v, &alerts.Total)
|
||||
}
|
||||
|
||||
return alerts, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of PermissionAlerts
|
||||
func (p *PermissionAlerts) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
alerts := &PermissionAlerts{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, alerts); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, alerts)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// PermissionAlert represents a permission alert
|
||||
type PermissionAlert struct {
|
||||
BaseModel
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
Title string `json:"title"`
|
||||
Description string `json:"description"`
|
||||
Action string `json:"action"`
|
||||
IsRead bool `json:"is_read"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes PermissionAlert from JSON
|
||||
func (p *PermissionAlert) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
alert := &PermissionAlert{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["id"]; ok {
|
||||
json.Unmarshal(v, &alert.ID)
|
||||
}
|
||||
if v, ok := raw["type"]; ok {
|
||||
json.Unmarshal(v, &alert.Type)
|
||||
}
|
||||
if v, ok := raw["title"]; ok {
|
||||
json.Unmarshal(v, &alert.Title)
|
||||
}
|
||||
if v, ok := raw["description"]; ok {
|
||||
json.Unmarshal(v, &alert.Description)
|
||||
}
|
||||
if v, ok := raw["action"]; ok {
|
||||
json.Unmarshal(v, &alert.Action)
|
||||
}
|
||||
if v, ok := raw["is_read"]; ok {
|
||||
json.Unmarshal(v, &alert.IsRead)
|
||||
}
|
||||
if v, ok := raw["created_at"]; ok {
|
||||
json.Unmarshal(v, &alert.CreatedAt)
|
||||
}
|
||||
|
||||
return alert, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of PermissionAlerts
|
||||
func (p *PermissionAlert) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
alert := &PermissionAlert{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, alert); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, alert)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// ContentRestrictions represents content restrictions
|
||||
type ContentRestrictions struct {
|
||||
BaseModel
|
||||
HasExplicitContent bool `json:"has_explicit_content"`
|
||||
RestrictedRegions []string `json:"restricted_regions"`
|
||||
AgeRating int `json:"age_rating"`
|
||||
BlockedTracks []string `json:"blocked_tracks"`
|
||||
BlockedAlbums []string `json:"blocked_albums"`
|
||||
BlockedArtists []string `json:"blocked_artists"`
|
||||
}
|
||||
|
||||
// DeJSON deserializes ContentRestrictions from JSON
|
||||
func (c *ContentRestrictions) DeJSON(data []byte, client ClientInterface) (Model, error) {
|
||||
var raw map[string]json.RawMessage
|
||||
if err := json.Unmarshal(data, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
restrictions := &ContentRestrictions{BaseModel: *NewBaseModel(client)}
|
||||
|
||||
if v, ok := raw["has_explicit_content"]; ok {
|
||||
json.Unmarshal(v, &restrictions.HasExplicitContent)
|
||||
}
|
||||
if v, ok := raw["restricted_regions"]; ok {
|
||||
json.Unmarshal(v, &restrictions.RestrictedRegions)
|
||||
}
|
||||
if v, ok := raw["age_rating"]; ok {
|
||||
json.Unmarshal(v, &restrictions.AgeRating)
|
||||
}
|
||||
if v, ok := raw["blocked_tracks"]; ok {
|
||||
json.Unmarshal(v, &restrictions.BlockedTracks)
|
||||
}
|
||||
if v, ok := raw["blocked_albums"]; ok {
|
||||
json.Unmarshal(v, &restrictions.BlockedAlbums)
|
||||
}
|
||||
if v, ok := raw["blocked_artists"]; ok {
|
||||
json.Unmarshal(v, &restrictions.BlockedArtists)
|
||||
}
|
||||
|
||||
return restrictions, nil
|
||||
}
|
||||
|
||||
// DeList deserializes a list of ContentRestrictions
|
||||
func (c *ContentRestrictions) DeList(data []byte, client ClientInterface) ([]Model, error) {
|
||||
var rawList []json.RawMessage
|
||||
if err := json.Unmarshal(data, &rawList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result := make([]Model, 0, len(rawList))
|
||||
for _, item := range rawList {
|
||||
restrictions := &ContentRestrictions{BaseModel: *NewBaseModel(client)}
|
||||
if err := json.Unmarshal(item, restrictions); err != nil {
|
||||
continue
|
||||
}
|
||||
result = append(result, restrictions)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in new issue
Block a user