film_on 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/VERSION +1 -1
- data/lib/film_on/base.rb +22 -4
- data/lib/film_on/helpers/channel_helper.rb +17 -8
- data/lib/film_on/helpers/group_helper.rb +7 -0
- data/lib/film_on/models/channel.rb +2 -1
- data/lib/film_on/models/group.rb +5 -0
- data/lib/film_on/models/programme.rb +3 -0
- data/lib/film_on/services.rb +17 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6daa5c3826eabbbc14f6fbdbbd2c5b188a76725
|
4
|
+
data.tar.gz: 74858705d1db4df5dd193a8afe35a321d5f45134
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d38f63ee5436ff621c56564fc2d75a647257298e4421616489c8819470e6f0f1db07fe43133a777a7a262d30bcfc9656463c6d4f77ba1324679e99f80549046
|
7
|
+
data.tar.gz: 356205369ac03fd4fed40cd60ddb692b6e047c0933b6c2470b42f026cb4027a841d71df1df5fe7ad21b3ebd40fe2852ad11c17abb0915b5b436a49d745638aee
|
data/README.md
CHANGED
@@ -36,6 +36,7 @@ film_on = FilmOn::Base.new(app_key, app_secret)
|
|
36
36
|
film_on.channels => returns list of all channels as ruby objects
|
37
37
|
flim_on.groups => returns list of all groups as ruby objects
|
38
38
|
film_on.channel(id) => returns info for given channel as a ruby object
|
39
|
+
film_on.find_group(id) => returns the information for a given group id
|
39
40
|
|
40
41
|
## Development
|
41
42
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.11
|
data/lib/film_on/base.rb
CHANGED
@@ -12,6 +12,17 @@ module FilmOn
|
|
12
12
|
|
13
13
|
attr_reader :app_key, :app_secret, :session_key
|
14
14
|
|
15
|
+
class ApiError < StandardError; end
|
16
|
+
|
17
|
+
# FilmOn Api (http://www.filmon.com/page/api)
|
18
|
+
# initialize the wrapper with your app_key and app_secret
|
19
|
+
# for development purposes you can use "foo" and "bar"
|
20
|
+
# eg.
|
21
|
+
# film_on = FilmOn::Base.new("foo", "bar")
|
22
|
+
# film_on.channels => returns an array of channels
|
23
|
+
# film_on.groups => returns an array of channel groups
|
24
|
+
# film_on.channel(14) => returns information for channel with id 14
|
25
|
+
#
|
15
26
|
def initialize(app_key, app_secret)
|
16
27
|
@app_key = app_key
|
17
28
|
@app_secret = app_secret
|
@@ -19,6 +30,11 @@ module FilmOn
|
|
19
30
|
init_request
|
20
31
|
end
|
21
32
|
|
33
|
+
private
|
34
|
+
|
35
|
+
# Create the initial handshake to FilmOn
|
36
|
+
# and set the @session_key
|
37
|
+
#
|
22
38
|
def init_request
|
23
39
|
response = get("init")
|
24
40
|
init_hash = JSON.parse(response)
|
@@ -26,8 +42,8 @@ module FilmOn
|
|
26
42
|
self
|
27
43
|
end
|
28
44
|
|
29
|
-
|
30
|
-
|
45
|
+
# Make a POST request to the api with the given service, query and protocol
|
46
|
+
#
|
31
47
|
def post(service, query={}, protocol="http://")
|
32
48
|
query["format"] = "json"
|
33
49
|
query["session_key"] = @session_key unless service == "init"
|
@@ -36,10 +52,12 @@ module FilmOn
|
|
36
52
|
if response && response.code == 200
|
37
53
|
return response.body
|
38
54
|
else
|
39
|
-
|
55
|
+
raise ApiError
|
40
56
|
end
|
41
57
|
end
|
42
58
|
|
59
|
+
# Make a GET request to the api with the given service, query and protocol
|
60
|
+
#
|
43
61
|
def get(service, query={}, protocol="http://")
|
44
62
|
query["format"] = "json"
|
45
63
|
query["session_key"] = @session_key unless service == "init"
|
@@ -48,7 +66,7 @@ module FilmOn
|
|
48
66
|
if response && response.code == 200
|
49
67
|
return response.body
|
50
68
|
else
|
51
|
-
|
69
|
+
raise ApiError
|
52
70
|
end
|
53
71
|
end
|
54
72
|
|
@@ -2,15 +2,24 @@ module FilmOn
|
|
2
2
|
|
3
3
|
module ChannelHelper
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
# #convert_channel takes the raw JSON
|
6
|
+
# and coverts it into a nice ruby object
|
7
|
+
# normal for use after storing the JSON in
|
8
|
+
# a caching mechanism
|
9
|
+
#
|
10
|
+
def convert_channel(json)
|
11
|
+
hash = JSON.parse(json)
|
12
|
+
FilmOn::Channel.new(hash)
|
13
|
+
end
|
9
14
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
# #convert_channel takes the raw JSON
|
16
|
+
# and coverts it into a nice ruby array of
|
17
|
+
# objects
|
18
|
+
#
|
19
|
+
def convert_channels(json)
|
20
|
+
hash = JSON.parse(json)
|
21
|
+
hash.map{|ch| FilmOn::Channel.new(ch)}
|
22
|
+
end
|
14
23
|
|
15
24
|
end
|
16
25
|
end
|
@@ -1,12 +1,19 @@
|
|
1
1
|
module FilmOn
|
2
2
|
module GroupHelper
|
3
3
|
|
4
|
+
# #convert_groups takes the raw JSON
|
5
|
+
# and converts it into a nice ruby array of objects
|
6
|
+
#
|
4
7
|
def convert_groups(json)
|
5
8
|
hash = JSON.parse(json)
|
6
9
|
hash.map{|gr| FilmOn::Group.new(gr)}
|
7
10
|
end
|
8
11
|
|
12
|
+
# #find_group, a convenience method to
|
13
|
+
# find the full detail of any given group
|
14
|
+
#
|
9
15
|
def find_group(id)
|
16
|
+
id = id.to_s
|
10
17
|
groups.select{|gr| gr.id == id}.first
|
11
18
|
end
|
12
19
|
|
@@ -3,7 +3,8 @@ module FilmOn
|
|
3
3
|
# FilmOn::Channel
|
4
4
|
# Channel can have either a basic set of data or a more verbose set
|
5
5
|
# depending on whether it is called as part of a channels list or
|
6
|
-
# as in individual call
|
6
|
+
# as in individual call from #channel, takes a raw hash and converts
|
7
|
+
# it into a nice ruby object
|
7
8
|
|
8
9
|
class Channel
|
9
10
|
|
data/lib/film_on/models/group.rb
CHANGED
data/lib/film_on/services.rb
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
module FilmOn
|
2
2
|
|
3
|
+
# Services: calls to the actual services of the API
|
4
|
+
# each call is memoized to save calling the API multiple times
|
5
|
+
# except when json requested:
|
6
|
+
# pass {json: true} to get the raw JSON representation
|
7
|
+
# of the channel, normally for self storage in memcache/redis cache
|
8
|
+
#
|
3
9
|
module Services
|
4
10
|
|
11
|
+
# #channel will get the verbose details for a channel with
|
12
|
+
# the given id
|
13
|
+
#
|
5
14
|
def channel(id, opts={})
|
15
|
+
id = id.to_s
|
6
16
|
return @channel[id] if @channel[id] && !opts[:json]
|
7
17
|
json = get("channel/#{id}")
|
8
18
|
if opts[:json]
|
@@ -11,6 +21,10 @@ module FilmOn
|
|
11
21
|
@channel[id] = convert_channel(json)
|
12
22
|
end
|
13
23
|
|
24
|
+
# #channels will get the entire current list of channels for
|
25
|
+
# FilmOn, each channels has a small amount of useful data,
|
26
|
+
# refer to #channel for additional channel information.
|
27
|
+
#
|
14
28
|
def channels(opts={})
|
15
29
|
return @channels if @channels && !opts[:json]
|
16
30
|
json = get("channels")
|
@@ -20,6 +34,9 @@ module FilmOn
|
|
20
34
|
@channels = convert_channels(json)
|
21
35
|
end
|
22
36
|
|
37
|
+
# #groups will get the entire current list of groups for
|
38
|
+
# FilmOn, each group holds an array of ids of associated channels
|
39
|
+
#
|
23
40
|
def groups(opts={})
|
24
41
|
return @groups if @groups && !opts[:json]
|
25
42
|
json = get("groups")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: film_on
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Hanscombe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|