eyeq_metadata 1.0.0 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -0
  3. data/lib/eyeq_metadata.rb +52 -3
  4. metadata +13 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f801b5c424d6f085858aadf460c3d5ca43d001a
4
- data.tar.gz: 8d2fe0f0fdfa6ab27faf891831dff80e1eeb928c
3
+ metadata.gz: 180de951519cc968bdd1082755e959ac76ced6c4
4
+ data.tar.gz: a8e1ea5bd9008400be28b9c3710353f3e8c3d1ef
5
5
  SHA512:
6
- metadata.gz: cac3cd3b1dd923852bd1815f9f4c7b150598aae3914e6d803c20acea3a8cc1da80c69302511393184972a8ad82b063fd6f6e26c15fddaf38da0e6aee2b056ba7
7
- data.tar.gz: 284b6507154563354581dc941dfd4d1841fd03feee6e3464b7fcc53a2338210348dd1ae23144e7d205ecde6c5885ae482e9000a200443de2ca8fa52ac85cb109
6
+ metadata.gz: 2a37ec859d3e6e54bdb215c1c983670f1bb76ad1cdec38f7f23986fe86bf3a7c83c06c53bcdefc8f5d448e040d14fe530dd5053194acfb805915e3d5839129f5
7
+ data.tar.gz: 86a8b1ba431d91125488c88b8df86be11b1a769ac2f55d63f8f88b7f32a48287bae279da909aeeba1c2594fc06560bfebde24e1dbb53b39bf810a2325a73b3ad
data/README.md CHANGED
@@ -0,0 +1,22 @@
1
+ #eyeq_metadata
2
+
3
+ ##Installation
4
+ ```
5
+ gem install eyeq_metadata
6
+ ```
7
+
8
+ ##Usage
9
+ ```ruby
10
+ require 'eyeq_metadata'
11
+
12
+ eyeq = EyeQ.new(clientid, clientid_tag)
13
+ response.request("query_type: 'tvchannel_fetch', gnid: '123-456-789")
14
+ #returns a Nokogiri::XML object that contains the response from eyeq
15
+ ```
16
+
17
+ ##Navigating Nokogiri::XML objects
18
+ [Nokogiri Docs](http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html)
19
+ ```ruby
20
+ response.css('RESPONSES')
21
+ #returns RESPONSES from Nokogiri::XML
22
+ ```
data/lib/eyeq_metadata.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rest-client'
2
1
  require 'nokogiri'
2
+ require 'httpi'
3
3
 
4
4
  class EyeQ
5
5
  attr_reader :eyeq_url, :eyeq_userid, :eyeq_clientid
@@ -7,9 +7,11 @@ class EyeQ
7
7
  def initialize(clientid, clientid_tag)
8
8
  @eyeq_url = "https://c#{clientid}.ipg.web.cddbp.net/webapi/xml/1.0/"
9
9
  @eyeq_clientid = "#{clientid}-#{clientid_tag}"
10
+ HTTPI.log = false
10
11
 
11
12
  register_query = "<QUERIES><QUERY CMD='REGISTER'><CLIENT>#{@eyeq_clientid}</CLIENT></QUERY></QUERIES>"
12
- response = RestClient.post(@eyeq_url, register_query, content_type: 'text/xml')
13
+ response = HTTPI.post(construct_request(register_query))
14
+
13
15
  response_xml = Nokogiri::XML(response.body)
14
16
 
15
17
  raise 'Invalid clientid or clientid_tag. Query returned an ERROR.' if response_xml.css('RESPONSE').attr('STATUS').text == 'ERROR'
@@ -18,12 +20,18 @@ class EyeQ
18
20
 
19
21
  def request(options)
20
22
  query = construct_query(options)
21
- response = RestClient.post(@eyeq_url, query, content_type: 'text/xml')
23
+ response = HTTPI.post(construct_request(query))
22
24
  Nokogiri::XML(response.body)
23
25
  end
24
26
 
25
27
  private
26
28
 
29
+ def construct_request(query)
30
+ request = HTTPI::Request.new(url: @eyeq_url, body: query)
31
+ request.headers['Content-Type'] = 'text/xml'
32
+ request
33
+ end
34
+
27
35
  def construct_query(options)
28
36
  query = '<QUERIES>'
29
37
  query += options[:lang].nil? ? lang : lang(options[:lang])
@@ -50,8 +58,16 @@ class EyeQ
50
58
  when 'tvprogram_fetch'
51
59
  throw new Error(':gnid option required') if options[:gnid].nil?
52
60
  query_type = tvprogram_fetch(options[:gnid])
61
+ when 'tvgrid_search'
62
+ throw new Error(':program_title option required') if options[:program_title].nil?
63
+ throw new Error(':tvchannel_gnid option required') if options[:tvchannel_gnid].nil?
64
+ query_type = tvgrid_search(options)
65
+ when 'tvgrid_lookup'
66
+ throw new Error(':tvchannel_gnid option required') if options[:tvchannel_gnid].nil?
67
+ query_type = tvgrid_lookup(options)
53
68
  end
54
69
 
70
+ puts query_type
55
71
  query_type
56
72
  end
57
73
 
@@ -86,4 +102,37 @@ class EyeQ
86
102
  def tvprogram_fetch(gnid)
87
103
  "<QUERY CMD='TVPROGRAM_FETCH'><GN_ID>#{gnid}</GN_ID></QUERY>"
88
104
  end
105
+
106
+ def tvgrid_search(options)
107
+ program_title = options[:program_title]
108
+ tvchannel_gnid = options[:tvchannel_gnid]
109
+
110
+ query = "<QUERY CMD='TVGRID_SEARCH'><TEXT TYPE='TVPROGRAM_TITLE'>#{program_title}</TEXT><TVCHANNEL>"
111
+ return query << "<GN_ID>#{tvchannel_gnid}</GN_ID></TVCHANNEL>#{insert_date_time(options)}</QUERY>" unless tvchannel_gnid.is_a? Array
112
+
113
+ tvchannel_gnid.each do |gnid|
114
+ query << "<GN_ID>#{gnid}</GN_ID>"
115
+ end
116
+ query << "</TVCHANNEL>#{insert_date_time(options)}</QUERY>"
117
+ end
118
+
119
+ def tvgrid_lookup(options)
120
+ tvchannel_gnid = options[:tvchannel_gnid]
121
+
122
+ query = "<QUERY CMD='TVGRID_LOOKUP'><TVCHANNEL>"
123
+ return query << "<GN_ID>#{tvchannel_gnid}</GN_ID></TVCHANNEL>#{insert_date_time(options)}</QUERY>" unless tvchannel_gnid.is_a? Array
124
+
125
+ tvchannel_gnid.each do |gnid|
126
+ query << "<GN_ID>#{gnid}</GN_ID>"
127
+ end
128
+ query << "</TVCHANNEL>#{insert_date_time(options)}</QUERY>"
129
+ end
130
+
131
+ def insert_date_time(options)
132
+ date_start = options[:date_start] unless options[:date_start].nil?
133
+ date_end = options[:date_end] unless options[:date_end].nil?
134
+
135
+ date = "<DATE TYPE='START'>#{date_start}</DATE>" unless options[:date_start].nil?
136
+ date << "<DATE TYPE='END'>#{date_end}</DATE>" unless options[:date_end].nil?
137
+ end
89
138
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyeq_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaiah Soung
@@ -11,59 +11,59 @@ cert_chain: []
11
11
  date: 2016-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
14
+ name: httpi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: 2.4.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0
26
+ version: 2.4.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.41.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.41.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.5.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.5.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: webmock
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.1.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.1.0
69
69
  description: Request Gracenote EyeQ metadata using the eyeq api
@@ -86,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 2.0.0
89
+ version: '0'
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - ">="