refactor: introduce typed resource kind
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package deezer
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Kind string
|
||||
|
||||
const (
|
||||
KindAlbum Kind = "album"
|
||||
KindPlaylist Kind = "playlist"
|
||||
KindArtist Kind = "artist"
|
||||
KindTrack Kind = "track"
|
||||
)
|
||||
|
||||
func (k Kind) pageMethod() string {
|
||||
switch k {
|
||||
case KindAlbum:
|
||||
return "Album"
|
||||
case KindPlaylist:
|
||||
return "Playlist"
|
||||
case KindArtist:
|
||||
return "Artist"
|
||||
case KindTrack:
|
||||
return "Track"
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (k Kind) idKey() string {
|
||||
switch k {
|
||||
case KindAlbum:
|
||||
return "alb_id"
|
||||
case KindPlaylist:
|
||||
return "playlist_id"
|
||||
case KindArtist:
|
||||
return "art_id"
|
||||
case KindTrack:
|
||||
return "sng_id"
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (k Kind) newResource() (Resource, error) {
|
||||
switch k {
|
||||
case KindAlbum:
|
||||
return &Album{}, nil
|
||||
case KindPlaylist:
|
||||
return &Playlist{}, nil
|
||||
case KindArtist:
|
||||
return &Artist{}, nil
|
||||
case KindTrack:
|
||||
return &Single{}, nil
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("unsupported resource type: %s", k)
|
||||
}
|
||||
Reference in New Issue
Block a user