tmsapi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +86 -0
  3. data/.project +17 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +11 -0
  6. data/Gemfile +4 -0
  7. data/Gemfile.lock +94 -0
  8. data/Rakefile +14 -0
  9. data/Readme.md +62 -0
  10. data/lib/tmsapi/api.rb +61 -0
  11. data/lib/tmsapi/middleware/custom_logger.rb +70 -0
  12. data/lib/tmsapi/model/airing.rb +24 -0
  13. data/lib/tmsapi/model/award.rb +14 -0
  14. data/lib/tmsapi/model/base.rb +9 -0
  15. data/lib/tmsapi/model/caption.rb +8 -0
  16. data/lib/tmsapi/model/episode.rb +11 -0
  17. data/lib/tmsapi/model/event.rb +10 -0
  18. data/lib/tmsapi/model/image.rb +16 -0
  19. data/lib/tmsapi/model/lineup.rb +12 -0
  20. data/lib/tmsapi/model/movie.rb +16 -0
  21. data/lib/tmsapi/model/person.rb +12 -0
  22. data/lib/tmsapi/model/program.rb +36 -0
  23. data/lib/tmsapi/model/quality_rating.rb +8 -0
  24. data/lib/tmsapi/model/rating.rb +8 -0
  25. data/lib/tmsapi/model/recommendation.rb +9 -0
  26. data/lib/tmsapi/model/showtime.rb +13 -0
  27. data/lib/tmsapi/model/sport_event.rb +11 -0
  28. data/lib/tmsapi/model/station.rb +19 -0
  29. data/lib/tmsapi/model/station_airings.rb +14 -0
  30. data/lib/tmsapi/model/team.rb +9 -0
  31. data/lib/tmsapi/model/theatre.rb +8 -0
  32. data/lib/tmsapi/model.rb +26 -0
  33. data/lib/tmsapi/resource/base.rb +20 -0
  34. data/lib/tmsapi/resource/lineups.rb +58 -0
  35. data/lib/tmsapi/resource/movies.rb +21 -0
  36. data/lib/tmsapi/resource/movies_theatres.rb +37 -0
  37. data/lib/tmsapi/resource/movies_tv.rb +41 -0
  38. data/lib/tmsapi/resource/programs.rb +103 -0
  39. data/lib/tmsapi/resource/series.rb +45 -0
  40. data/lib/tmsapi/resource/sports.rb +35 -0
  41. data/lib/tmsapi/resource/stations.rb +47 -0
  42. data/lib/tmsapi/resource.rb +13 -0
  43. data/lib/tmsapi/version.rb +3 -0
  44. data/lib/tmsapi.rb +10 -0
  45. data/spec/api_spec.rb +354 -0
  46. data/spec/factories.rb +56 -0
  47. data/spec/model/program_spec.rb +33 -0
  48. data/spec/spec_helper.rb +45 -0
  49. data/spec/support/vcr.rb +20 -0
  50. data/spec/tms_api_spec.rb +7 -0
  51. data/spec/vcr/cassettes/TMSAPI_API/_lineups/_airings/should_tell_me_whats_airing.yml +37649 -0
  52. data/spec/vcr/cassettes/TMSAPI_API/_lineups/_channels/should_list_some_channels.yml +2623 -0
  53. data/spec/vcr/cassettes/TMSAPI_API/_lineups/_details/should_tell_me_about_the_lineup.yml +67 -0
  54. data/spec/vcr/cassettes/TMSAPI_API/_lineups/_find/should_find_local_lineups.yml +103 -0
  55. data/spec/vcr/cassettes/TMSAPI_API/_lineups/_stations/should_list_some_channels.yml +2623 -0
  56. data/spec/vcr/cassettes/TMSAPI_API/_movies/_theatres/_showings/should_get_movie_showings.yml +460 -0
  57. data/spec/vcr/cassettes/TMSAPI_API/_movies/_tv/_airings/should_tell_me_what_movies_are_on_tv.yml +6722 -0
  58. data/spec/vcr/cassettes/TMSAPI_API/_movies/_tv/_versions/should_tell_me_about_that_movie.yml +1366 -0
  59. data/spec/vcr/cassettes/TMSAPI_API/_programs/_advance_planner/should_list_holiday_events.yml +1951 -0
  60. data/spec/vcr/cassettes/TMSAPI_API/_programs/_airings/should_find_airings.yml +85 -0
  61. data/spec/vcr/cassettes/TMSAPI_API/_programs/_details/should_be_filled_with_program_information.yml +117 -0
  62. data/spec/vcr/cassettes/TMSAPI_API/_programs/_genres/should_return_all_genres.yml +131 -0
  63. data/spec/vcr/cassettes/TMSAPI_API/_programs/_images/should_return_images.yml +225 -0
  64. data/spec/vcr/cassettes/TMSAPI_API/_programs/_new_past_week/should_have_programs.yml +2238 -0
  65. data/spec/vcr/cassettes/TMSAPI_API/_programs/_new_shows/should_find_new_shows.yml +1105 -0
  66. data/spec/vcr/cassettes/TMSAPI_API/_programs/_search/should_find_4_programs.yml +152 -0
  67. data/spec/vcr/cassettes/TMSAPI_API/_series/_airings/should_list_airings.yml +341 -0
  68. data/spec/vcr/cassettes/TMSAPI_API/_series/_details/should_find_the_series.yml +272 -0
  69. data/spec/vcr/cassettes/TMSAPI_API/_series/_episodes/should_return_episodes.yml +3492 -0
  70. data/spec/vcr/cassettes/TMSAPI_API/_stations/_airings/should_list_airings.yml +123 -0
  71. data/spec/vcr/cassettes/TMSAPI_API/_stations/_details/should_get_station_details.yml +67 -0
  72. data/tmsapi.gemspec +42 -0
  73. metadata +296 -0
@@ -0,0 +1,19 @@
1
+ require 'tmsapi/model/image'
2
+
3
+ module TMSAPI
4
+ module Model
5
+ class Station < Base
6
+ attribute :stationId, Integer
7
+ attribute :name, String
8
+ attribute :call_sign, String
9
+ attribute :type, String
10
+ attribute :bcastLangs, Array[String]
11
+ attribute :edLags, Array[String]
12
+ attribute :channel, Integer
13
+ attribute :affiliate_call_sign, String
14
+ attribute :affiliate_id, Integer
15
+ attribute :preferred_image, TMSAPI::Model::Image
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ require 'tmsapi/model/image'
2
+ require 'tmsapi/model/airing'
3
+
4
+ module TMSAPI
5
+ module Model
6
+ class Station_Airings < Base
7
+ attribute :channel, Integer
8
+ attribute :call_sign, String
9
+ attribute :station_id, Integer
10
+ attribute :preferred_image, TMSAPI::Model::Image
11
+ attribute :airings, Array[TMSAPI::Model::Airing]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module TMSAPI
2
+ module Model
3
+ class Team < Base
4
+ attribute :name, String
5
+ attribute :team_brand_id, Integer
6
+ attribute :is_home, Boolean
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ module TMSAPI
2
+ module Model
3
+ class Theatre < Base
4
+ attribute :id, Integer
5
+ attribute :name, String
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,26 @@
1
+ require 'tmsapi/model/base'
2
+ require 'tmsapi/model/caption'
3
+ require 'tmsapi/model/airing'
4
+ require 'tmsapi/model/award'
5
+ require 'tmsapi/model/image'
6
+ require 'tmsapi/model/person'
7
+ require 'tmsapi/model/program'
8
+ require 'tmsapi/model/rating'
9
+ require 'tmsapi/model/recommendation'
10
+ require 'tmsapi/model/station'
11
+ require 'tmsapi/model/event'
12
+ require 'tmsapi/model/lineup'
13
+ require 'tmsapi/model/station_airings'
14
+ require 'tmsapi/model/episode'
15
+ require 'tmsapi/model/quality_rating'
16
+ require 'tmsapi/model/theatre'
17
+ require 'tmsapi/model/showtime'
18
+ require 'tmsapi/model/movie'
19
+ require 'tmsapi/model/sport_event'
20
+ require 'tmsapi/model/team'
21
+
22
+ module TMSAPI
23
+ module Model
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ module TMSAPI
2
+ module Resource
3
+ class Base
4
+ def initialize(connection, version, options = {})
5
+ @connection = connection
6
+ @version = version
7
+ end
8
+
9
+ def get(path, options={})
10
+ @connection.get(full_path(path), options).body
11
+ end
12
+
13
+ private
14
+
15
+ def full_path(path)
16
+ "#{@version}/#{path}"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,58 @@
1
+ require 'tmsapi/model/lineup'
2
+
3
+ module TMSAPI
4
+ module Resource
5
+ class Lineups < Base
6
+
7
+ def initialize(connection, options = {})
8
+ super(connection, "v1")
9
+ end
10
+
11
+ def find(params)
12
+ get(base_path,params).each do |lineup|
13
+ TMSAPI::Model::Lineup.new lineup
14
+ end
15
+ end
16
+
17
+ def details(lineup_id)
18
+ TMSAPI::Model::Lineup.new get(details_path(lineup_id))
19
+ end
20
+
21
+ def channels(lineup_id, params = nil)
22
+ get(channels_path(lineup_id),params).each do |station|
23
+ TMSAPI::Model::Station.new station
24
+ end
25
+ end
26
+
27
+ def stations(lineup_id, params = nil)
28
+ channels(lineup_id,params)
29
+ end
30
+
31
+ def airings(lineup_id, params = nil)
32
+ params = { :startDateTime => Time.now.strftime("%Y-%m-%dT%H:%MZ") } unless params
33
+ get(airings_path(lineup_id),params).each do |station|
34
+ TMSAPI::Model::Station_Airings.new station
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def details_path(lineup_id)
41
+ "#{base_path}/#{lineup_id}"
42
+ end
43
+
44
+ def channels_path(lineup_id)
45
+ "#{details_path(lineup_id)}/channels"
46
+ end
47
+
48
+ def airings_path(lineup_id)
49
+ "#{details_path(lineup_id)}/grid"
50
+ end
51
+
52
+ def base_path
53
+ "lineups"
54
+ end
55
+
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,21 @@
1
+ require 'tmsapi/resource/movies_tv'
2
+ require 'tmsapi/resource/movies_theatres'
3
+
4
+ module TMSAPI
5
+ module Resource
6
+ class Movies
7
+ def initialize(connection)
8
+ @connection = connection
9
+ end
10
+
11
+ def tv
12
+ TMSAPI::Resource::Movie::TV.new @connection
13
+ end
14
+
15
+ def theatres
16
+ TMSAPI::Resource::Movie::Theatres.new @connection
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,37 @@
1
+ require 'tmsapi/resource/base'
2
+ require 'date'
3
+
4
+ module TMSAPI
5
+ module Resource
6
+ module Movie
7
+ class Theatres < TMSAPI::Resource::Base
8
+
9
+ def initialize(connection, options = {})
10
+ super(connection, "v1")
11
+ end
12
+
13
+ def showings(params)
14
+ params[:startDate] = Date.today unless params[:startDate]
15
+ get(showings_path, params).each do |movie|
16
+ TMSAPI::Model::Movie.new movie
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def showings_path
23
+ "#{alt_path}/showings"
24
+ end
25
+
26
+ def base_path
27
+ "theatres"
28
+ end
29
+
30
+ def alt_path
31
+ "movies"
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,41 @@
1
+ module TMSAPI
2
+ module Resource
3
+ module Movie
4
+ class TV < TMSAPI::Resource::Base
5
+
6
+ def initialize(connection, options = {})
7
+ super(connection, "v1")
8
+ end
9
+
10
+ def versions(root_id, params = nil)
11
+ get(versions_path(root_id),params).each do |movie|
12
+ TMSAPI::Model::Movie.new movie
13
+ end
14
+ end
15
+
16
+ def airings(params)
17
+ params[:startDateTime] = Time.now.strftime("%Y-%m-%dT%H:%MZ") unless params[:startDateTime]
18
+
19
+ get(airings_path, params).each do |airing|
20
+ TMSAPI::Model::Airing.new airing
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def airings_path
27
+ "#{base_path}/airings"
28
+ end
29
+
30
+ def versions_path(root_id)
31
+ "#{base_path}/#{root_id}/versions"
32
+ end
33
+
34
+ def base_path
35
+ "movies"
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,103 @@
1
+ require 'tmsapi/model/program'
2
+ require 'tmsapi/model/airing'
3
+ require 'tmsapi/model/event'
4
+ require 'date'
5
+
6
+ module TMSAPI
7
+ module Resource
8
+ class Programs < Base
9
+
10
+ def initialize(connection, options = {})
11
+ super(connection, "v1")
12
+ end
13
+
14
+ def search(params)
15
+ get(search_path, params).hits.map do |root|
16
+ TMSAPI::Model::Program.new root.program
17
+ end
18
+ end
19
+
20
+ def details(tms_id, params = nil)
21
+ TMSAPI::Model::Program.new get(details_path(tms_id), params)
22
+ end
23
+
24
+ def airings(tms_id, params = nil)
25
+ get(airings_path(tms_id), params).map do |airing|
26
+ TMSAPI::Model::Airing.new airing
27
+ end
28
+ end
29
+
30
+ def new_shows(params)
31
+ params[:startDateTime] = Time.now.strftime("%Y-%m-%dT%H:%MZ") unless params[:startDateTime]
32
+
33
+ get(new_shows_path,params).each do |new_program|
34
+ TMSAPI::Model::Airing.new new_program
35
+ end
36
+ end
37
+
38
+ def new_past_week(params = nil)
39
+ params = {:startDate => (Date.today - 7).to_s} unless params
40
+ get(new_past_week_path,params).each do |new_program|
41
+ TMSAPI::Model::Program.new new_program
42
+ end
43
+ end
44
+
45
+ def advance_planner(params = nil)
46
+ params = {:startDate => (Date.today + 1).to_s} unless params
47
+
48
+ get(advance_planner_path,params).each do |event|
49
+ TMSAPI::Model::Event.new event
50
+ end
51
+ end
52
+
53
+ def images(resource_id, params = nil)
54
+ get(images_path(resource_id), params).each do |image|
55
+ TMSAPI::Model::Image.new image
56
+ end
57
+ end
58
+
59
+ def genres
60
+ get(genres_path)
61
+ end
62
+
63
+ private
64
+
65
+ def search_path
66
+ "#{base_path}/search"
67
+ end
68
+
69
+ def details_path(tms_id)
70
+ "#{base_path}/#{tms_id}"
71
+ end
72
+
73
+ def airings_path(tms_id)
74
+ "#{details_path(tms_id)}/airings"
75
+ end
76
+
77
+ def new_shows_path
78
+ "#{base_path}/newShowAirings"
79
+ end
80
+
81
+ def new_past_week_path
82
+ "#{base_path}/newShowsLastWeek"
83
+ end
84
+
85
+ def advance_planner_path
86
+ "#{base_path}/advancePlanner"
87
+ end
88
+
89
+ def images_path(resource_id)
90
+ "#{base_path}/#{resource_id}/images"
91
+ end
92
+
93
+ def genres_path
94
+ "#{base_path}/genres"
95
+ end
96
+
97
+ def base_path
98
+ "programs"
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,45 @@
1
+ module TMSAPI
2
+ module Resource
3
+ class Series < Base
4
+
5
+ def initialize(connection, options = {})
6
+ super(connection, "v1")
7
+ end
8
+
9
+ def details(series_id, params = nil)
10
+ TMSAPI::Model::Program.new get(details_path(series_id), params)
11
+ end
12
+
13
+ def airings(series_id, params)
14
+ get(airings_path(series_id),params).each do |airing|
15
+ TMSAPI::Model::Airing.new airing
16
+ end
17
+ end
18
+
19
+ def episodes(series_id, params = nil)
20
+ get(episodes_path(series_id), params).each do |episode|
21
+ TMSAPI::Model::Episode.new episode
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def details_path(series_id)
28
+ "#{base_path}/#{series_id}"
29
+ end
30
+
31
+ def airings_path(series_id)
32
+ "#{details_path(series_id)}/airings"
33
+ end
34
+
35
+ def episodes_path(series_id)
36
+ "#{details_path(series_id)}/episodes"
37
+ end
38
+
39
+ def base_path
40
+ "series"
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ require 'tmsapi/model/program'
2
+
3
+ module TMSAPI
4
+ module Resource
5
+ class Sports < Base
6
+
7
+ def initialize(connection, options = {})
8
+ super(connection, "v1")
9
+ end
10
+
11
+ def event_airings(sports_id, params)
12
+ params[:startDateTime] = Time.now.strftime("%Y-%m-%dT%H:%MZ") unless params[:startDateTime]
13
+
14
+ get(event_airings_path(sports_id),params).each do |event|
15
+ TMSAPI::Model::SportEvent.new event
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def details_path(sports_id)
22
+ "#{base_path}/#{sports_id}"
23
+ end
24
+
25
+ def event_airings_path(sports_id)
26
+ "#{details_path(sports_id)}/events"
27
+ end
28
+
29
+ def base_path
30
+ "sports"
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,47 @@
1
+ require 'tmsapi/model/station'
2
+
3
+ module TMSAPI
4
+ module Resource
5
+ class Stations < Base
6
+
7
+ def initialize(connection, options = {})
8
+ super(connection, "v1")
9
+ end
10
+
11
+ def details(stationId, lineupId = nil)
12
+ if lineupId then
13
+ params = {:lineupId => lineupId}
14
+ else
15
+ params = nil
16
+ end
17
+
18
+ get(details_path(stationId),params).each do |station|
19
+ TMSAPI::Model::Station.new station
20
+ end
21
+ end
22
+
23
+ def airings(stationId, params)
24
+ params = { :startDateTime => Time.now.strftime("%Y-%m-%dT%H:%MZ")} unless params
25
+
26
+ get(airings_path(stationId),params).each do |airing|
27
+ TMSAPI::Model::Airing.new airing
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def details_path(stationId)
34
+ "#{base_path}/#{stationId}"
35
+ end
36
+
37
+ def airings_path(stationId)
38
+ "#{details_path(stationId)}/airings"
39
+ end
40
+
41
+ def base_path
42
+ "stations"
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,13 @@
1
+ require 'tmsapi/resource/base'
2
+ require 'tmsapi/resource/programs'
3
+ require 'tmsapi/resource/stations'
4
+ require 'tmsapi/resource/lineups'
5
+ require 'tmsapi/resource/series'
6
+ require 'tmsapi/resource/movies'
7
+ require 'tmsapi/resource/sports'
8
+
9
+ module TMSAPI
10
+ module Resource
11
+
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module TMSAPI
2
+ VERSION = '0.0.1'
3
+ end
data/lib/tmsapi.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+
4
+ require 'tmsapi/version'
5
+ require 'tmsapi/api'
6
+ require 'tmsapi/model'
7
+ require 'tmsapi/resource'
8
+
9
+ module TMSAPI
10
+ end