File Coverage

blib/lib/WebService/Jamendo.pm
Criterion Covered Total %
statement 12 159 7.5
branch 0 90 0.0
condition 0 48 0.0
subroutine 4 20 20.0
pod 13 14 92.8
total 29 331 8.7


line stmt bran cond sub pod time code
1             package WebService::Jamendo;
2              
3             ################################################
4             # Jamendo
5             ################################################
6              
7 1     1   29392 use strict;
  1         3  
  1         42  
8 1     1   6 use warnings;
  1         2  
  1         30  
9 1     1   1283 use diagnostics;
  1         234448  
  1         15  
10 1     1   1460 use HTTP::Request;
  1         39597  
  1         2563  
11             require LWP::UserAgent;
12             our $VERSION = qw('0.01');
13              
14             #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15             # public
16             #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17              
18             # constructor
19             sub new{
20 0     0 1   my $class = shift;
21              
22 0           my $oUserAgent = LWP::UserAgent->new;
23 0           $oUserAgent->timeout(10);
24 0           $oUserAgent->env_proxy;
25 0           $oUserAgent->agent(qq(jamendo.pm));
26              
27 0           my $oHTTPRequest = HTTP::Request->new;
28 0           $oHTTPRequest->method(qq(GET));
29              
30 0           my $sBaseUrl = qq(http://api.jamendo.com/get2/);
31 0           my $sURLEncode =
32              
33             my $self = {'oUserAgent' => $oUserAgent,
34             'oHTTPRequest' => $oHTTPRequest,
35             'sBaseUrl' => $sBaseUrl
36             };
37              
38 0           bless $self, $class;
39 0           return $self;
40             }
41              
42             ### getSomeInfos ###
43              
44             # getArtistInfos
45             sub getArtistInfos{
46              
47 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
48 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getArtistInfos() given");
  0            
49              
50 0           my %hParams = ();
51 0           $hParams{'sFields'} = "artist_id+artist_name+artist_url+artist_image+artist_mbgid+location_country+location_state+location_city";
52 0           $hParams{'sUnit'} = "artist";
53 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
54 0           $hParams{'hArgs'} = __getParams(\%hArgs);
55              
56 0           return __getDataSet($self, \%hParams);
57             }
58              
59             # getUserInfos
60             sub getUserInfos{
61              
62 0 0   0 0   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
63 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getUserInfos() given");
  0            
64              
65 0           my %hParams = ();
66 0           $hParams{'sFields'} = "user_id+user_name+user_idstr+user_url+user_image+user_mbgid+location_country+location_state+location_city";
67 0           $hParams{'sUnit'} = "user";
68 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
69 0           $hParams{'hArgs'} = __getParams(\%hArgs);
70              
71 0           return __getDataSet($self, \%hParams);
72             }
73              
74             # getAlbumInfos
75             sub getAlbumInfos{
76              
77 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
78 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getAlbumInfos() given");
  0            
79              
80 0           my %hParams = ();
81 0           $hParams{'sFields'} = "artist_id+album_id+album_name+album_url+album_genre+album_mbgid+album_image+album_duration";
82 0           $hParams{'sUnit'} = "album";
83 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
84 0           $hParams{'hArgs'} = __getParams(\%hArgs);
85              
86 0           return __getDataSet($self, \%hParams);
87             }
88              
89             # getTrackInfos
90             sub getTrackInfos{
91              
92 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
93 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getAlbumInfos() given");
  0            
94              
95 0           my %hParams = ();
96 0           $hParams{'sFields'} = "album_id+track_id+track_name+track_filename+track_numalbum+track_duration";
97 0           $hParams{'sUnit'} = "track";
98 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
99 0           $hParams{'hArgs'} = __getParams(\%hArgs);
100              
101 0           return __getDataSet($self, \%hParams);
102             }
103              
104             ### getSomethingFrom ###
105              
106             # getAlbumTracks
107             sub getAlbumTracks{
108              
109 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
110 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getAlbumTracks() given");
  0            
111              
112 0           my %hParams = ();
113 0           $hParams{'sFields'} = "artist_id+album_id+album_name+album_url+album_genre+album_mbgid+album_image+album_duration+track_id+track_name+track_filename+track_numalbum+track_duration";
114 0           $hParams{'sUnit'} = "album";
115 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
116 0           $hParams{'hArgs'} = __getParams(\%hArgs);
117              
118 0           return __getDataSet($self, \%hParams);
119             }
120              
121             # getUserFriends
122             sub getUserFriends{
123              
124 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
125 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getUserFriends() given");
  0            
126              
127 0           my %hParams = ();
128 0           $hParams{'sFields'} = "user_id+user_name+user_idstr+user_url+user_image+user_mbgid+location_country+location_state+location_city";
129 0           $hParams{'sUnit'} = "user";
130 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
131 0           $hParams{'hArgs'} = __getParams(\%hArgs);
132 0           $hParams{'sFunction'} = "user_user2_friend";
133              
134 0           return __getDataSet($self, \%hParams);
135             }
136              
137             # getUserAlbums
138             sub getUserAlbums{
139              
140 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
141 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getUserFriends() given");
  0            
142              
143 0           my %hParams = ();
144 0           $hParams{'sFields'} = "user_id+user_idstr+artist_id+album_id+album_name+album_url+album_genre+album_mbgid+album_image+album_duration";
145 0           $hParams{'sUnit'} = "album";
146 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
147 0           $hParams{'hArgs'} = __getParams(\%hArgs);
148 0           $hParams{'sFunction'} = "album_user_starred";
149              
150 0           return __getDataSet($self, \%hParams);
151             }
152              
153             # getUserTracks
154             sub getUserTracks{
155              
156 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
157 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getUserFriends() given");
  0            
158              
159 0           my %hParams = ();
160 0           $hParams{'sFields'} = "user_id+user_idstr+album_id+track_id+track_name+track_filename+track_numalbum+track_duration";
161 0           $hParams{'sUnit'} = "track";
162 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "json");
163 0           $hParams{'hArgs'} = __getParams(\%hArgs);
164 0           $hParams{'sFunction'} = "tracks_user_starred";
165              
166 0           return __getDataSet($self, \%hParams);
167             }
168              
169             # getTrackStreamingFile
170             sub getTrackStreamingFile{
171              
172 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
173 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getTrackStreamingFile() given");
  0            
174              
175 0           my %hParams = ();
176 0           $hParams{'sFields'} = "stream";
177 0           $hParams{'sUnit'} = "track";
178 0 0         $hParams{'sFormat'} = (defined $hArgs{'format'} ? $hArgs{'format'} : "plain");
179 0           $hParams{'hArgs'} = __getParams(\%hArgs);
180 0 0         $hParams{'hArgs'}{'streamencoding'} = (defined $hParams{'hArgs'}{'streamencoding'} ? $hParams{'hArgs'}{'streamencoding'} : "ogg2");
181 0           $hParams{'sFunction'} = "redirect";
182              
183 0           return __getDataSet($self, \%hParams);
184             }
185              
186             ### getSomeSearch ###
187              
188             # getArtistSearch
189             sub getArtistSearch{
190              
191 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
192 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getArtistSearch() given");
  0            
193              
194 0           my $sReturn = getUserInfos($self, \%hArgs);
195 0           return $sReturn;
196             }
197              
198             # getAlbumSearch
199             sub getAlbumSearch{
200              
201 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
202 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getAlbumSearch() given");
  0            
203              
204 0           my $sReturn = getAlbumInfos($self, \%hArgs);
205 0           return $sReturn;
206             }
207              
208             # getTrackSearch
209             sub getTrackSearch{
210              
211 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
212 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getTrackSearch() given");
  0            
213              
214 0           my $sReturn = getTrackInfos($self, \%hArgs);
215 0           return $sReturn;
216             }
217              
218             # getUserSearch
219             sub getUserSearch{
220              
221 0 0   0 1   my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
222 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::getUserSearch() given");
  0            
223              
224 0           my $sReturn = getUserInfos($self, \%hArgs);
225 0           return $sReturn;
226             }
227              
228             #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
229             # private
230             #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
231              
232             # __getParams
233             sub __getParams{
234              
235 0 0 0 0     my %hArgs = ((defined $_[0] && keys%{$_[0]}) ? %{$_[0]} : warn "no arguments hash for jamendo::__getParams() given");
  0            
236              
237 0           my %hParams = ();
238 0           foreach my $sArg(keys%hArgs){
239 0 0 0       if(defined $hArgs{$sArg} && $sArg ne "format"){
240 0           $hParams{$sArg} = $hArgs{$sArg};
241             }
242             }
243              
244 0           return \%hParams;
245             }
246              
247             # __getDataSet
248             sub __getDataSet{
249              
250 0 0   0     my $self = (defined $_[0] ? $_[0] : warn "jamendo not constructed?");
251 0 0 0       my %hArgs = ((defined $_[1] && keys%{$_[1]}) ? %{$_[1]} : warn "no arguments hash for jamendo::__getDataSet() given");
  0            
252              
253 0 0         my $sFields = (defined $hArgs{'sFields'} ? $hArgs{'sFields'} : warn "no URL fields for jamendo::__getDataSet() given");
254 0 0         my $sUnit = (defined $hArgs{'sUnit'} ? $hArgs{'sUnit'} : warn "no URL unit for jamenod::__getDataSet() given");
255 0 0         my $sFormat = (defined $hArgs{'sFormat'} ? $hArgs{'sFormat'} : warn "no URL format for jamenod::__getDataSet() given");
256 0 0         my $sFunction = (defined $hArgs{'sFunction'} ? "/".$hArgs{'sFunction'}."/" : "");
257              
258 0           my $sArgs;
259 0 0         if(defined $hArgs{'hArgs'}){
260              
261 0           foreach my $sArg(keys%{$hArgs{'hArgs'}}){
  0            
262              
263 0           my $sParam = $sArg;
264 0           $sParam =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
  0            
265              
266 0           my $sArgument = $hArgs{'hArgs'}{$sArg};
267 0           $sArgument =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
  0            
268              
269 0           $sArgs .= "$sParam=".$sArgument."&";
270             }
271             }
272              
273 0           my $sRequestUrl = "$self->{'sBaseUrl'}$sFields/$sUnit/$sFormat$sFunction?$sArgs";
274 0           my $oRequest = $self->{'oHTTPRequest'};
275 0           $oRequest->uri($sRequestUrl);
276 0           my $oResponse = $self->{'oUserAgent'}->request($oRequest);
277 0           return $oResponse->content;
278             }
279              
280             1;
281              
282             __END__