film_on 0.0.10 → 0.0.11
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.
- 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
|