thetvdb_api 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +72 -1
  3. data/lib/thetvdb_api.rb +4 -1
  4. data/lib/thetvdb_api/actor.rb +2 -2
  5. data/lib/thetvdb_api/banner.rb +2 -2
  6. data/lib/thetvdb_api/base.rb +30 -9
  7. data/lib/thetvdb_api/episode.rb +10 -10
  8. data/lib/thetvdb_api/mappers/actor.rb +17 -0
  9. data/lib/thetvdb_api/mappers/actors.rb +10 -0
  10. data/lib/thetvdb_api/mappers/banner.rb +32 -0
  11. data/lib/thetvdb_api/mappers/banners.rb +10 -0
  12. data/lib/thetvdb_api/mappers/base.rb +13 -0
  13. data/lib/thetvdb_api/mappers/episode.rb +32 -0
  14. data/lib/thetvdb_api/mappers/full_series.rb +12 -0
  15. data/lib/thetvdb_api/mappers/search_episode.rb +10 -0
  16. data/lib/thetvdb_api/mappers/search_series.rb +10 -0
  17. data/lib/thetvdb_api/mappers/search_series/series.rb +25 -0
  18. data/lib/thetvdb_api/mappers/series.rb +37 -0
  19. data/lib/thetvdb_api/mappers/update.rb +14 -0
  20. data/lib/thetvdb_api/mappers/update/banner.rb +19 -0
  21. data/lib/thetvdb_api/mappers/update/element.rb +10 -0
  22. data/lib/thetvdb_api/mappers/update/episode.rb +8 -0
  23. data/lib/thetvdb_api/mappers/update/series.rb +8 -0
  24. data/lib/thetvdb_api/response.rb +30 -0
  25. data/lib/thetvdb_api/search.rb +8 -8
  26. data/lib/thetvdb_api/series.rb +4 -4
  27. data/lib/thetvdb_api/update.rb +42 -8
  28. data/lib/thetvdb_api/version.rb +1 -1
  29. data/spec/integrations/actor_spec.rb +1 -1
  30. data/spec/integrations/banner_spec.rb +1 -1
  31. data/spec/integrations/client_spec.rb +16 -16
  32. data/spec/integrations/episode_spec.rb +4 -4
  33. data/spec/integrations/search_spec.rb +5 -5
  34. data/spec/integrations/series_spec.rb +2 -2
  35. data/spec/integrations/update_spec.rb +10 -4
  36. data/spec/spec_helper.rb +4 -0
  37. data/spec/thetvdb_api/base_spec.rb +39 -7
  38. data/spec/thetvdb_api/episode_spec.rb +4 -4
  39. data/spec/thetvdb_api/mappers/actor_spec.rb +15 -0
  40. data/spec/thetvdb_api/mappers/banner_spec.rb +31 -0
  41. data/spec/thetvdb_api/mappers/search_series/series_spec.rb +15 -0
  42. data/spec/thetvdb_api/mappers/series_spec.rb +31 -0
  43. data/spec/thetvdb_api/mappers/update/banner_spec.rb +15 -0
  44. data/spec/thetvdb_api/response_spec.rb +60 -0
  45. data/spec/thetvdb_api/search_spec.rb +13 -13
  46. data/spec/thetvdb_api/series_spec.rb +6 -6
  47. data/spec/thetvdb_api/update_spec.rb +24 -0
  48. data/thetvdb_api.gemspec +2 -1
  49. metadata +48 -5
@@ -0,0 +1,14 @@
1
+ require 'happymapper'
2
+ require 'update/banner'
3
+ require 'update/episode'
4
+ require 'update/series'
5
+
6
+ class ThetvdbApi::Mappers::Update
7
+ include HappyMapper
8
+
9
+ tag 'Data'
10
+
11
+ has_many :series, ThetvdbApi::Mappers::Update::Series, tag: 'Series'
12
+ has_many :episodes, ThetvdbApi::Mappers::Update::Episode, tag: 'Episode'
13
+ has_many :banners, ThetvdbApi::Mappers::Update::Banner, tag: 'Banner'
14
+ end
@@ -0,0 +1,19 @@
1
+ require 'happymapper'
2
+
3
+ class ThetvdbApi::Mappers::Update
4
+ class Banner
5
+ include HappyMapper
6
+
7
+ tag 'Banner'
8
+ element :type, String
9
+ element :format, String
10
+ element :series_id, String, tag: 'Series'
11
+ element :season_num, String, tag: 'SeasonNum'
12
+ element :language, String
13
+ element :path, String
14
+
15
+ def url
16
+ path ? "http://thetvdb.com/banners/#{path}" : nil
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ require 'happymapper'
2
+
3
+ class ThetvdbApi::Mappers::Update
4
+ class Element
5
+ include HappyMapper
6
+
7
+ element :id, Integer
8
+ element :timestamp, Integer, tag: 'time'
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ require 'happymapper'
2
+ require 'thetvdb_api/mappers/update/element'
3
+
4
+ class ThetvdbApi::Mappers::Update
5
+ class Episode < ThetvdbApi::Mappers::Update::Element
6
+ tag 'Episode'
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'happymapper'
2
+ require 'thetvdb_api/mappers/update/element'
3
+
4
+ class ThetvdbApi::Mappers::Update
5
+ class Series < ThetvdbApi::Mappers::Update::Element
6
+ tag 'Series'
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ class ThetvdbApi::Response
2
+ def initialize(faraday_response, mapper = nil)
3
+ @faraday_response = faraday_response
4
+ @mapper = mapper
5
+ end
6
+
7
+ def mapper
8
+ @mapper
9
+ end
10
+
11
+ def env
12
+ @faraday_response.env
13
+ end
14
+
15
+ def status
16
+ @faraday_response.status
17
+ end
18
+
19
+ def headers
20
+ @faraday_response.headers
21
+ end
22
+
23
+ def body
24
+ @body ||= @mapper ? @mapper.parse(@faraday_response.body) : @faraday_response.body
25
+ end
26
+
27
+ def inspect
28
+ "<ThetvdbApi::Response body=#{body.inspect}, mapper=#{mapper.inspect}>"
29
+ end
30
+ end
@@ -1,17 +1,17 @@
1
1
  class ThetvdbApi::Search < ThetvdbApi::Base
2
- def get_series(name, language = self.language)
3
- get('GetSeries.php').params(seriesname: name, language: language).response
2
+ def get_series(name, options = {})
3
+ get('GetSeries.php').params({ seriesname: name }.merge(options)).response
4
4
  end
5
5
 
6
- def get_series_by_imdb_id(id, language = self.language)
7
- get('GetSeriesByRemoteID.php').params(imdbid: id, language: language).response
6
+ def get_series_by_imdb_id(id, options = {})
7
+ get('GetSeriesByRemoteID.php').params({ imdbid: id }.merge(options)).response
8
8
  end
9
9
 
10
- def get_series_by_zap2it_id(id, language = self.language)
11
- get('GetSeriesByRemoteID.php').params(zap2it: id, language: language).response
10
+ def get_series_by_zap2it_id(id, options = {})
11
+ get('GetSeriesByRemoteID.php').params({ zap2it: id }.merge(options)).response
12
12
  end
13
13
 
14
- def get_episode_by_air_date(series_id, air_date, language = self.language)
15
- get('GetEpisodeByAirDate.php').params(seriesid: series_id, airdate: air_date, language: language).response
14
+ def get_episode(series_id, air_date, options = {})
15
+ get('GetEpisodeByAirDate.php').params({ seriesid: series_id, airdate: air_date }.merge(options)).response
16
16
  end
17
17
  end
@@ -1,9 +1,9 @@
1
1
  class ThetvdbApi::Series < ThetvdbApi::Base
2
- def find(series_id, language = self.language)
3
- get("#{series_uri}/{language}.xml").params(series_id: series_id, language: language).response
2
+ def find(series_id, options = {})
3
+ get("#{series_uri}/{language}.xml").params({ series_id: series_id }.merge(options)).response
4
4
  end
5
5
 
6
- def find_full(series_id, language = self.language)
7
- get("#{series_uri}/all/{language}.xml").params(series_id: series_id, language: language).response
6
+ def find_full(series_id, options = {})
7
+ get("#{series_uri}/all/{language}.xml").params({ series_id: series_id }.merge(options)).response
8
8
  end
9
9
  end
@@ -1,17 +1,51 @@
1
1
  class ThetvdbApi::Update < ThetvdbApi::Base
2
- def day
3
- get('{api_key}/updates/updates_day.xml').response
2
+ def day(options = {})
3
+ get(day_path).params(options).response
4
4
  end
5
5
 
6
- def week
7
- get('{api_key}/updates/updates_week.xml').response
6
+ def day_url
7
+ get(day_path).url
8
8
  end
9
9
 
10
- def month
11
- get('{api_key}/updates/updates_month.xml').response
10
+ def week(options = {})
11
+ get(week_path).params(options).response
12
12
  end
13
13
 
14
- def all
15
- get('{api_key}/updates/updates_all.xml').response
14
+ def week_url
15
+ get(week_path).url
16
+ end
17
+
18
+ def month(options = {})
19
+ get(month_path).params(options).response
20
+ end
21
+
22
+ def month_url
23
+ get(month_path).url
24
+ end
25
+
26
+ def all(options = {})
27
+ get(all_path).params(options).response
28
+ end
29
+
30
+ def all_url
31
+ get(all_path).url
32
+ end
33
+
34
+ private
35
+
36
+ def day_path
37
+ '{api_key}/updates/updates_day.xml'
38
+ end
39
+
40
+ def week_path
41
+ '{api_key}/updates/updates_week.xml'
42
+ end
43
+
44
+ def month_path
45
+ '{api_key}/updates/updates_month.xml'
46
+ end
47
+
48
+ def all_path
49
+ '{api_key}/updates/updates_all.xml'
16
50
  end
17
51
  end
@@ -1,3 +1,3 @@
1
1
  module ThetvdbApi
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -6,7 +6,7 @@ describe ThetvdbApi::Actor do
6
6
  describe 'real request' do
7
7
  describe '.find' do
8
8
  it 'should return response class' do
9
- model.find('70327').class.should == HTTParty::Response
9
+ model.find('70327').class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ describe ThetvdbApi::Banner do
6
6
  describe 'real request' do
7
7
  describe '.find' do
8
8
  it 'should return response class' do
9
- model.find('72449').class.should == HTTParty::Response
9
+ model.find('72449').class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
  end
@@ -7,25 +7,25 @@ describe ThetvdbApi::Client do
7
7
  describe '.search' do
8
8
  describe '.get_series' do
9
9
  it 'should return response class' do
10
- client.search.get_series('buffy').class.should == HTTParty::Response
10
+ client.search.get_series('buffy').class.should == ThetvdbApi::Response
11
11
  end
12
12
  end
13
13
 
14
14
  describe '.get_series_by_imdb_id' do
15
15
  it 'should return response class' do
16
- client.search.get_series_by_imdb_id('tt0118276').class.should == HTTParty::Response
16
+ client.search.get_series_by_imdb_id('tt0118276').class.should == ThetvdbApi::Response
17
17
  end
18
18
  end
19
19
 
20
20
  describe '.get_series_by_zap2it_id' do
21
21
  it 'should return response class' do
22
- client.search.get_series_by_zap2it_id('EP00213110').class.should == HTTParty::Response
22
+ client.search.get_series_by_zap2it_id('EP00213110').class.should == ThetvdbApi::Response
23
23
  end
24
24
  end
25
25
 
26
- describe '.get_episode_by_air_date' do
26
+ describe '.get_episode' do
27
27
  it 'should return response class' do
28
- client.search.get_episode_by_air_date('70327','1997-03-10').class.should == HTTParty::Response
28
+ client.search.get_episode('70327','1997-03-10').class.should == ThetvdbApi::Response
29
29
  end
30
30
  end
31
31
  end
@@ -33,13 +33,13 @@ describe ThetvdbApi::Client do
33
33
  describe '.series' do
34
34
  describe '.find' do
35
35
  it 'should return response class' do
36
- client.series.find('70327').class.should == HTTParty::Response
36
+ client.series.find('70327').class.should == ThetvdbApi::Response
37
37
  end
38
38
  end
39
39
 
40
40
  describe '.find_full' do
41
41
  it 'should return response class' do
42
- client.series.find_full('70327').class.should == HTTParty::Response
42
+ client.series.find_full('70327').class.should == ThetvdbApi::Response
43
43
  end
44
44
  end
45
45
  end
@@ -47,7 +47,7 @@ describe ThetvdbApi::Client do
47
47
  describe '.actor' do
48
48
  describe '.find' do
49
49
  it 'should return response class' do
50
- client.actor.find('70327').class.should == HTTParty::Response
50
+ client.actor.find('70327').class.should == ThetvdbApi::Response
51
51
  end
52
52
  end
53
53
  end
@@ -55,7 +55,7 @@ describe ThetvdbApi::Client do
55
55
  describe '.banner' do
56
56
  describe '.find' do
57
57
  it 'should return response class' do
58
- client.banner.find('70327').class.should == HTTParty::Response
58
+ client.banner.find('70327').class.should == ThetvdbApi::Response
59
59
  end
60
60
  end
61
61
  end
@@ -63,25 +63,25 @@ describe ThetvdbApi::Client do
63
63
  describe '.episode' do
64
64
  describe '.find_by_default_order' do
65
65
  it 'should return response class' do
66
- client.episode.find_by_default_order('70327', '1', '1').class.should == HTTParty::Response
66
+ client.episode.find_by_default_order('70327', '1', '1').class.should == ThetvdbApi::Response
67
67
  end
68
68
  end
69
69
 
70
70
  describe '.find_by_dvd_order' do
71
71
  it 'should return response class' do
72
- client.episode.find_by_dvd_order('70327', '1', '1').class.should == HTTParty::Response
72
+ client.episode.find_by_dvd_order('70327', '1', '1').class.should == ThetvdbApi::Response
73
73
  end
74
74
  end
75
75
 
76
76
  describe '.find_by_absolute_order' do
77
77
  it 'should return response class' do
78
- client.episode.find_by_absolute_order('70327', '1').class.should == HTTParty::Response
78
+ client.episode.find_by_absolute_order('70327', '1').class.should == ThetvdbApi::Response
79
79
  end
80
80
  end
81
81
 
82
82
  describe '.find' do
83
83
  it 'should return response class' do
84
- client.episode.find('533011').class.should == HTTParty::Response
84
+ client.episode.find('533011').class.should == ThetvdbApi::Response
85
85
  end
86
86
  end
87
87
  end
@@ -89,19 +89,19 @@ describe ThetvdbApi::Client do
89
89
  describe '.update' do
90
90
  describe '.day' do
91
91
  it 'should return response class' do
92
- client.update.day.class.should == HTTParty::Response
92
+ client.update.day.class.should == ThetvdbApi::Response
93
93
  end
94
94
  end
95
95
 
96
96
  describe '.week' do
97
97
  it 'should return response class' do
98
- client.update.week.class.should == HTTParty::Response
98
+ client.update.week.class.should == ThetvdbApi::Response
99
99
  end
100
100
  end
101
101
 
102
102
  describe '.month' do
103
103
  it 'should return response class' do
104
- client.update.month.class.should == HTTParty::Response
104
+ client.update.month.class.should == ThetvdbApi::Response
105
105
  end
106
106
  end
107
107
  end
@@ -6,25 +6,25 @@ describe ThetvdbApi::Episode do
6
6
  describe 'real request' do
7
7
  describe '.find_by_default_order' do
8
8
  it 'should return response class' do
9
- model.find_by_default_order('70327', '1', '1').class.should == HTTParty::Response
9
+ model.find_by_default_order('70327', '1', '1').class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
 
13
13
  describe '.find_by_dvd_order' do
14
14
  it 'should return response class' do
15
- model.find_by_dvd_order('70327', '1', '1').class.should == HTTParty::Response
15
+ model.find_by_dvd_order('70327', '1', '1').class.should == ThetvdbApi::Response
16
16
  end
17
17
  end
18
18
 
19
19
  describe '.find_by_absolute_order' do
20
20
  it 'should return response class' do
21
- model.find_by_absolute_order('70327', '1').class.should == HTTParty::Response
21
+ model.find_by_absolute_order('70327', '1').class.should == ThetvdbApi::Response
22
22
  end
23
23
  end
24
24
 
25
25
  describe '.find' do
26
26
  it 'should return response class' do
27
- model.find('533011').class.should == HTTParty::Response
27
+ model.find('533011').class.should == ThetvdbApi::Response
28
28
  end
29
29
  end
30
30
  end
@@ -6,25 +6,25 @@ describe ThetvdbApi::Search do
6
6
  describe 'real request' do
7
7
  describe '.get_series' do
8
8
  it 'should return response class' do
9
- model.get_series('buffy').class.should == HTTParty::Response
9
+ model.get_series('buffy').class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
 
13
13
  describe '.get_series_by_imdb_id' do
14
14
  it 'should return response class' do
15
- model.get_series_by_imdb_id('tt0118276').class.should == HTTParty::Response
15
+ model.get_series_by_imdb_id('tt0118276').class.should == ThetvdbApi::Response
16
16
  end
17
17
  end
18
18
 
19
19
  describe '.get_series_by_zap2it_id' do
20
20
  it 'should return response class' do
21
- model.get_series_by_zap2it_id('EP00213110').class.should == HTTParty::Response
21
+ model.get_series_by_zap2it_id('EP00213110').class.should == ThetvdbApi::Response
22
22
  end
23
23
  end
24
24
 
25
- describe '.get_episode_by_air_date' do
25
+ describe '.get_episode' do
26
26
  it 'should return response class' do
27
- model.get_episode_by_air_date('70327','1997-03-10').class.should == HTTParty::Response
27
+ model.get_episode('70327', '1997-03-10').class.should == ThetvdbApi::Response
28
28
  end
29
29
  end
30
30
  end
@@ -6,13 +6,13 @@ describe ThetvdbApi::Series do
6
6
  describe 'real request' do
7
7
  describe '.find' do
8
8
  it 'should return response class' do
9
- model.find('70327').class.should == HTTParty::Response
9
+ model.find('70327').class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
 
13
13
  describe '.find_full' do
14
14
  it 'should return response class' do
15
- model.find_full('70327').class.should == HTTParty::Response
15
+ model.find_full('70327').class.should == ThetvdbApi::Response
16
16
  end
17
17
  end
18
18
  end
@@ -6,20 +6,26 @@ describe ThetvdbApi::Update do
6
6
  describe 'real request' do
7
7
  describe '.day' do
8
8
  it 'should return response class' do
9
- model.day.class.should == HTTParty::Response
9
+ model.day.class.should == ThetvdbApi::Response
10
10
  end
11
11
  end
12
12
 
13
13
  describe '.week' do
14
14
  it 'should return response class' do
15
- model.week.class.should == HTTParty::Response
15
+ model.week.class.should == ThetvdbApi::Response
16
16
  end
17
17
  end
18
18
 
19
19
  describe '.month' do
20
20
  it 'should return response class' do
21
- model.month.class.should == HTTParty::Response
21
+ model.month.class.should == ThetvdbApi::Response
22
+ end
23
+ end
24
+
25
+ describe '.all' do
26
+ it 'should return response class' do
27
+ model.all.class.should == ThetvdbApi::Response
22
28
  end
23
29
  end
24
30
  end
25
- end
31
+ end