File Coverage

blib/lib/WWW/TheMovieDB/Search.pm
Criterion Covered Total %
statement 18 127 14.1
branch 0 36 0.0
condition 0 77 0.0
subroutine 6 25 24.0
pod 19 19 100.0
total 43 284 15.1


line stmt bran cond sub pod time code
1             package WWW::TheMovieDB::Search;
2              
3 1     1   30580 use 5.008009;
  1         4  
  1         44  
4 1     1   7 use strict;
  1         2  
  1         35  
5 1     1   6 use warnings;
  1         7  
  1         42  
6 1     1   1172 use LWP::Simple;
  1         611441  
  1         9  
7 1     1   419 use URI::Escape;
  1         2  
  1         55  
8 1     1   1018 use Switch;
  1         68404  
  1         8  
9              
10             require Exporter;
11              
12             our @ISA = qw(Exporter);
13              
14             # Items to export into callers namespace by default. Note: do not export
15             # names by default without a very good reason. Use EXPORT_OK instead.
16             # Do not simply export all your public functions/methods/constants.
17              
18             # This allows declaration use WWW::TheMovieDB::Search ':all';
19             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
20             # will save memory.
21             our %EXPORT_TAGS = ( 'all' => [ qw(
22             Movie_getInfo
23             Movie_browse
24             Movie_getImages
25             Movie_getLatest
26             Movie_getTranslations
27             Movie_getVersion
28             Movie_imdbLookup
29             Movie_search
30             Person_getInfo
31             Person_getLatest
32             Person_getVersion
33             Person_search
34             Genres_getList
35             ) ] );
36              
37             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
38              
39             our @EXPORT = qw();
40              
41             our $VERSION = '0.04';
42              
43              
44             sub new {
45 0     0 1   my $package = shift;
46            
47 0           $package::key = '';
48 0           $package::lang = 'en';
49 0           $package::ver = '2.1';
50 0           $package::type = 'xml';
51 0           $package::uri = 'http://api.themoviedb.org';
52            
53 0 0         if ($_[0]) {
54 0           $package->key($_[0]);
55             }
56            
57 0           return bless({}, $package);
58             }
59              
60             sub lang {
61 0     0 1   my $package = shift;
62 0           $package::lang = shift;
63 0           return;
64             }
65              
66             sub ver {
67 0     0 1   my $package = shift;
68 0           $pacakge::ver = shift;
69 0           return;
70             }
71              
72             sub key {
73 0     0 1   my $package = shift;
74 0           $package::key = shift;
75 0           return;
76             }
77              
78             sub type {
79 0     0 1   my $package = shift;
80 0           $package::type = shift;
81 0           return;
82             }
83              
84             sub buildURL {
85 0     0 1   my ($package,$method) = @_;
86            
87 0           my $url = $package::uri ."/". $package::ver ."/". $method ."/". $package::lang ."/". $package::type ."/". $package::key;
88            
89 0           return $url;
90             }
91              
92             sub Movie_browse {
93 0     0 1   my ($package,%data) = @_;
94            
95            
96 0           my $url = $package->buildURL("Movie.browse");
97 0           $url .= "?";
98            
99 0 0 0       unless ((exists $data{'order'} && $data{'order'} =~ m/^(asc|desc)$/) && (exists $data{'order_by'} && $data{'order_by'} =~ m/^(rating|release|title)$/)) {
      0        
      0        
100 0           return "Missing order and/or order_by.";
101             }
102            
103 0           foreach my $key (sort keys %data) {
104 0 0         $url .= '&order='. $data{'order'} if ($key eq 'order');
105 0 0         $url .= '&order_by='. $data{'order_by'} if ($key eq 'order_by');
106            
107 0 0 0       $url .= '&certifications='. $data{'certifications'} if ($key eq 'certifications' && $data{'certifications'} ne "");
108 0 0 0       $url .= '&companies='. $data{'companies'} if ($key eq 'companies' && $data{'companies'} =~ m/(\d+,)*\d+$/);
109 0 0 0       $url .= '&countries='. $data{'countries'} if ($key eq 'countries' && $data{'countries'} ne "");
110 0 0 0       $url .= '&genres='. $data{'genres'} if ($key eq 'genres' && $data{'genres'} =~ m/(\d+,)*\d+$/);
111 0 0 0       $url .= '&genres_selector='. $data{'genres_selector'} if ($key eq 'genres_selector' && $data{'genres_selector'} =~ m/^(and|or)$/);
112 0 0 0       $url .= '&min_votes='. $data{'min_votes'} if ($key eq 'min_votes' && $data{'min_votes'} =~ m/^(\d+)$/);
113 0 0 0       $url .= '&page='. $data{'page'} if ($key eq 'page' && $data{'page'} =~ m/^\d+$/);
114 0 0 0       $url .= '&per_page='. $data{'per_page'} if ($key eq 'per_page' && $data{'per_page'} =~ m/^\d+$/);
115 0 0 0       $url .= '&query='. uri_escape($data{'query'}) if ($key eq 'query' && $data{'query'} ne "");
116 0 0 0       $url .= '&rating_max='. $data{'rating_max'} if ($key eq 'rating_max' && $data{'rating_max'} =~ m/^\d*\.{0,1}\d+$/);
117 0 0 0       $url .= '&rating_min='. $data{'rating_min'} if ($key eq 'rating_min' && $data{'rating_min'} =~ m/^\d*\.{0,1}\d+$/);
118 0 0 0       $url .= '&release_max='. $data{'release_max'} if ($key eq 'release_max' && $data{'release_max'} =~ m/^-{0,1}\d+$/);
119 0 0 0       $url .= '&release_min='. $data{'release_min'} if ($key eq 'release_min' && $data{'release_min'} =~ m/^-{0,1}\d+$/);
120 0 0 0       $url .= '&year='. $data{'year'} if ($key eq 'year' && $data{'year'} =~ m/^\d+$/);
121             }
122            
123            
124 0   0       my $content = get($url) || "";
125 0           return $content;
126             }
127              
128             sub Movie_getImages {
129 0     0 1   my ($package,$movieid) = @_;
130              
131 0           my $url = $package->buildURL("Movie.getImages");
132 0           $url .= "/". $movieid;
133 0   0       my $content = get($url) || "";
134 0           return $content;
135             }
136              
137             sub Movie_getInfo {
138 0     0 1   my ($package,$movieid) = @_;
139            
140 0           my $url = $package->buildURL("Movie.getInfo");
141 0           $url .= "/". $movieid;
142 0   0       my $content = get($url) || "";
143            
144 0           return $content;
145             }
146              
147             sub Movie_getLatest {
148 0     0 1   my $package = shift;
149            
150 0           my $url = $package->buildURL("Movie.getLatest");
151              
152 0           print $url;
153 0   0       my $content = get($url) || "";
154            
155 0           return $content;
156             }
157              
158             sub Movie_getTranslations {
159 0     0 1   my ($package,$movieid) = @_;
160            
161 0           my $url = $package->buildURL("Movie.getTranslations");
162 0           $url .= "/". $movieid;
163 0   0       my $content = get($url) || "";
164            
165 0           return $content;
166             }
167              
168             sub Movie_getVersion {
169 0     0 1   my ($package,$movieid) = @_;
170            
171 0           my $url = $package->buildURL("Movie.getVersion");
172 0           $url .= "/". $movieid;
173 0   0       my $content = get($url) || "";
174            
175 0           return $content;
176             }
177              
178             sub Movie_imdbLookup {
179 0     0 1   my ($package,$imdbid) = @_;
180            
181 0           my $url = $package->buildURL("Movie.imdbLookup");
182 0           $url .= "/". $imdbid;
183 0   0       my $content = get($url) || "";
184            
185 0           return $content;
186             }
187              
188             sub Movie_search {
189 0     0 1   my ($package,$query) = @_;
190 0           $query = uri_escape($query);
191            
192 0           my $url = $package->buildURL("Movie.search");
193 0           $url .= "/". $query;
194            
195 0   0       my $content = get($url) || "";
196            
197 0           return $content;
198             }
199              
200             sub Person_getInfo {
201 0     0 1   my ($package,$personid) = @_;
202            
203 0           my $url = $package->buildURL("Person.getInfo");
204 0           $url .= "/". $personid;
205            
206 0   0       my $content = get($url) || "";
207            
208 0           return $content;
209             }
210              
211             sub Person_getLatest {
212 0     0 1   my $package = shift;
213            
214 0           my $url = $package->buildURL("Person.getLatest");
215              
216 0           print $url;
217 0   0       my $content = get($url) || "";
218            
219 0           return $content;
220            
221             }
222              
223             sub Person_getVersion {
224 0     0 1   my ($package,$personid) = @_;
225            
226 0           my $url = $package->buildURL("Person.getInfo");
227 0           $url .= "/". $personid;
228            
229 0   0       my $content = get($url) || "";
230            
231 0           return $content;
232             }
233              
234             sub Person_search {
235 0     0 1   my ($package,$query) = @_;
236 0           $query = uri_escape($query);
237            
238 0           my $url = $package->buildURL("Person.search");
239 0           $url .= "/". $query;
240            
241 0   0       my $content = get($url) || "";
242            
243 0           return $content;
244             }
245              
246             sub Genres_getList {
247 0     0 1   my $package = shift;
248            
249 0           my $url = $package->buildURL("Genres.getList");
250            
251 0   0       my $content = get($url) || "";
252            
253 0           return $content;
254             }
255              
256              
257             1;
258             __END__