Class: SongstatsSDK::Resources::Entity

Inherits:
Base
  • Object
show all
Defined in:
lib/songstats_sdk/resources/entities.rb

Direct Known Subclasses

Artists, Collaborators, Labels

Instance Method Summary collapse

Constructor Details

#initialize(http_client, resource:, identifier_keys:) ⇒ Entity

Returns a new instance of Entity.



6
7
8
9
10
# File 'lib/songstats_sdk/resources/entities.rb', line 6

def initialize(http_client, resource:, identifier_keys:)
  super(http_client)
  @resource = resource
  @identifier_keys = identifier_keys
end

Instance Method Details

#activities(**params) ⇒ Object



46
47
48
# File 'lib/songstats_sdk/resources/entities.rb', line 46

def activities(**params)
  get("#{@resource}/activities", params: with_identifier(params))
end

Raises:

  • (ArgumentError)


70
71
72
73
74
75
76
# File 'lib/songstats_sdk/resources/entities.rb', line 70

def add_link_request(link:, **params)
  raise ArgumentError, "link is required" if link.to_s.empty?

  query = with_identifier(params)
  query[:link] = link
  post("#{@resource}/link_request", params: query)
end

#add_to_member_relevant_list(**params) ⇒ Object



109
110
111
# File 'lib/songstats_sdk/resources/entities.rb', line 109

def add_to_member_relevant_list(**params)
  post("#{@resource}/add_to_member_relevant_list", params: with_identifier(params))
end

#add_track_request(link: nil, spotify_track_id: nil, isrc: nil, **params) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/songstats_sdk/resources/entities.rb', line 86

def add_track_request(link: nil, spotify_track_id: nil, isrc: nil, **params)
  if [link, spotify_track_id, isrc].all? { |value| value.to_s.empty? }
    raise ArgumentError, "One of link, spotify_track_id, or isrc is required"
  end

  query = with_identifier(params)
  query[:link] = link
  query[:spotify_track_id] = spotify_track_id
  query[:isrc] = isrc
  post("#{@resource}/track_request", params: query)
end

#audience(**params) ⇒ Object



24
25
26
# File 'lib/songstats_sdk/resources/entities.rb', line 24

def audience(**params)
  get("#{@resource}/audience", params: with_identifier(params))
end

#audience_details(country_code:, **params) ⇒ Object

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
# File 'lib/songstats_sdk/resources/entities.rb', line 28

def audience_details(country_code:, **params)
  raise ArgumentError, "country_code is required" if country_code.to_s.empty?

  query = with_identifier(params)
  query[:country_code] = country_code
  get("#{@resource}/audience/details", params: query)
end

#catalog(**params) ⇒ Object



36
37
38
# File 'lib/songstats_sdk/resources/entities.rb', line 36

def catalog(**params)
  get("#{@resource}/catalog", params: with_identifier(params))
end

#historic_stats(**params) ⇒ Object



20
21
22
# File 'lib/songstats_sdk/resources/entities.rb', line 20

def historic_stats(**params)
  get("#{@resource}/historic_stats", params: with_identifier(params))
end

#info(**params) ⇒ Object



12
13
14
# File 'lib/songstats_sdk/resources/entities.rb', line 12

def info(**params)
  get("#{@resource}/info", params: with_identifier(params))
end

#remove_from_member_relevant_list(**params) ⇒ Object



113
114
115
# File 'lib/songstats_sdk/resources/entities.rb', line 113

def remove_from_member_relevant_list(**params)
  delete("#{@resource}/remove_from_member_relevant_list", params: with_identifier(params))
end

Raises:

  • (ArgumentError)


78
79
80
81
82
83
84
# File 'lib/songstats_sdk/resources/entities.rb', line 78

def remove_link_request(link:, **params)
  raise ArgumentError, "link is required" if link.to_s.empty?

  query = with_identifier(params)
  query[:link] = link
  delete("#{@resource}/link_request", params: query)
end

#remove_track_request(songstats_track_id: nil, spotify_track_id: nil, **params) ⇒ Object



98
99
100
101
102
103
104
105
106
107
# File 'lib/songstats_sdk/resources/entities.rb', line 98

def remove_track_request(songstats_track_id: nil, spotify_track_id: nil, **params)
  if [songstats_track_id, spotify_track_id].all? { |value| value.to_s.empty? }
    raise ArgumentError, "songstats_track_id or spotify_track_id is required"
  end

  query = with_identifier(params)
  query[:songstats_track_id] = songstats_track_id
  query[:spotify_track_id] = spotify_track_id
  delete("#{@resource}/track_request", params: query)
end

#search(q:, **params) ⇒ Object

Raises:

  • (ArgumentError)


40
41
42
43
44
# File 'lib/songstats_sdk/resources/entities.rb', line 40

def search(q:, **params)
  raise ArgumentError, "q is required" if q.to_s.empty?

  get("#{@resource}/search", params: params.merge(q: q))
end

#songshare(**params) ⇒ Object



50
51
52
# File 'lib/songstats_sdk/resources/entities.rb', line 50

def songshare(**params)
  get("#{@resource}/songshare", params: with_identifier(params))
end

#stats(**params) ⇒ Object



16
17
18
# File 'lib/songstats_sdk/resources/entities.rb', line 16

def stats(**params)
  get("#{@resource}/stats", params: with_identifier(params))
end

#top_commentors(**params) ⇒ Object



66
67
68
# File 'lib/songstats_sdk/resources/entities.rb', line 66

def top_commentors(**params)
  get("#{@resource}/top_commentors", params: with_identifier(params))
end

#top_curators(**params) ⇒ Object



62
63
64
# File 'lib/songstats_sdk/resources/entities.rb', line 62

def top_curators(**params)
  get("#{@resource}/top_curators", params: with_identifier(params))
end

#top_playlists(**params) ⇒ Object



58
59
60
# File 'lib/songstats_sdk/resources/entities.rb', line 58

def top_playlists(**params)
  get("#{@resource}/top_playlists", params: with_identifier(params))
end

#top_tracks(**params) ⇒ Object



54
55
56
# File 'lib/songstats_sdk/resources/entities.rb', line 54

def top_tracks(**params)
  get("#{@resource}/top_tracks", params: with_identifier(params))
end