thetvdb_api 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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