rkconnect 1.0.0.1 → 1.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -1
  3. data/lib/rkconnect.rb +8 -17
  4. metadata +2 -3
  5. data/lib/thread_pool.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce1b427fd0cc984b4cfdea1ee4235a02e3ef9b9a
4
- data.tar.gz: bdf9c065ef2c8e3215e04d6105dd14318ad125b7
3
+ metadata.gz: 2006c7c6d43d4d974f76887680c62087d6008c22
4
+ data.tar.gz: 3db2d557dc86b793f8e9d1ce97bf462a8be90075
5
5
  SHA512:
6
- metadata.gz: 0e064a938c118ad9075edbd711cb076ea0115ec0e0454b538e8e35de8757c6dbc9b7f16266698173177ff71f81ad52f49c3c830c589ee2f1e37c2ba8a31f203a
7
- data.tar.gz: 533e06e99b8fa5a0bc947a9edaf54b881d910f7bfe584f8de42ffa03de4caed51793ebce96812a427ccc752f8cef7674b3d68edc58a0d4305705cfc01b95fb3d
6
+ metadata.gz: 806376738c1483111b92e7e264b9af9a23a4366eeb3ea401b166eab0ba02b9db0645e2812ad12fda0c763ba34721af50cb615d436f02e17ada7450009792eac7
7
+ data.tar.gz: 51443113daa96b68ed6a021f38bee16e0f27d1f7ce809fe2830190a1374e0986cf9d24ccffe8df17c3075ef7bdbb5314801abb663ec355b67a131cc725054868
data/README.md CHANGED
@@ -1 +1,16 @@
1
- # RKConnect (Roku Connect)
1
+ # RKConnect (Roku Connect)
2
+ Provides an interface to connect to a roku, send commands to the roku, and receive roku debugger messages.
3
+
4
+ ## Usage
5
+ 1. 'gem install rkconnect'
6
+ 2. rkc = RKConnect(ip_address_of_roku, &callback_block)
7
+ 3. rkc.post_key("Right") <-- Presses the right button on "roku remote"
8
+ 4. rkc.post_channel('dev') <-- Launches 'dev' application from home screen
9
+ 5. rkc.request_debug('var') <-- Returns all variables currently located on screen
10
+
11
+
12
+ ## Roku External Controller DOCS
13
+ (https://sdkdocs.roku.com/display/sdkdoc/External+Control+Guide)
14
+
15
+ ## Roku Debugger Commands
16
+ (https://sdkdocs.roku.com/display/sdkdoc/Debugging+Your+Application)
@@ -2,8 +2,6 @@ require "net/http"
2
2
  require 'net/telnet'
3
3
  require "uri"
4
4
 
5
- require_relative 'thread_pool'
6
-
7
5
  class RKConnect
8
6
  # include Observer
9
7
  DEBUGGER_PORT = '8085'
@@ -15,23 +13,20 @@ class RKConnect
15
13
  raise 'Invalid ip_address.' if ip_address.split('.').size != 4
16
14
  raise 'No callback block was passed in. Make sure a block is passed in as an argument.' if block == nil
17
15
 
18
- @model_call = false
19
-
20
16
  #Set two different ip addresses. One is just the ip address and the other 'http' is used to send commands to the roku
21
17
  @ip_address = ip_address
22
18
  @http_address = 'http://' << ip_address << ':'\
23
19
 
24
- #Single threads could be used, though using a thread pool could provide future possibilites
25
- @thread_pool = ThreadPool.new(2)
26
20
  @callback = block
27
21
 
28
- @roku_debugger = Net::Telnet::new('Host' => @ip_address, 'Port' => DEBUGGER_PORT, 'Telnetmode' => false, 'Waittime' => 1)
22
+ @roku_debugger = Net::Telnet::new('Host' => @ip_address, 'Port' => DEBUGGER_PORT, 'Telnetmode' => false, 'Waittime' => 0.5)
29
23
  end
30
24
 
31
25
  def post_key(key)
32
26
  raise 'Invalid key type. Need a string arg' if !key.is_a? String
33
27
 
34
- Net::HTTP.post_form(URI(@http_address + EXTERNAL_C_PORT + "/keypress/#{key}"), {})
28
+ Net::HTTP.post_form(URI(@http_address + EXTERNAL_C_PORT + "/keypress/#{key}"), {})
29
+ sleep 0.25
35
30
  end
36
31
 
37
32
  def post_channel(app_id)
@@ -39,6 +34,7 @@ class RKConnect
39
34
  raise 'Invalid app_id type. Need a string arg' if !app_id.is_a? String
40
35
 
41
36
  Net::HTTP.post_form(URI(@http_address + EXTERNAL_C_PORT + "/launch/#{app_id}"), {})
37
+ sleep 0.25
42
38
  end
43
39
 
44
40
  def request_channel_listing()
@@ -51,23 +47,18 @@ class RKConnect
51
47
 
52
48
  callback_string = ' '
53
49
  #Breaks the telnet connection and enters the roku debugger.
54
- ignore_exceptions{@roku_debugger.cmd("String" => "\03", "Timeout" => 1)}
50
+ ignore_exceptions{@roku_debugger.cmd("String" => "\03", "Timeout" => 0.1)}
55
51
 
56
- @thread_pool.schedule_jobs do
57
- @roku_debugger.cmd(request) do | telnet_callback |
58
- callback_string << telnet_callback
59
- end
52
+ @roku_debugger.cmd(request) do | telnet_callback |
53
+ callback_string << telnet_callback
60
54
  end
61
- #There needs to be a sleep here in order to allow the callback for callback_string to return
62
- sleep 1
63
55
 
64
56
  callback_string.sub!("BrightScript Debugger>", "")
65
57
  array = callback_string.split(/\n/)
66
58
 
67
59
  @callback.call(callback_string)
68
60
 
69
- ignore_exceptions{@roku_debugger.cmd("String" => "cont", "Timeout" => 1)}
70
- sleep 1
61
+ ignore_exceptions{@roku_debugger.cmd("String" => "cont", "Timeout" => 0.1)}
71
62
  end
72
63
 
73
64
  def close_connection
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rkconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.1
4
+ version: 1.1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaiah Soung
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An interface that connects to the roku.
14
14
  email:
@@ -18,7 +18,6 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - README.md
20
20
  - lib/rkconnect.rb
21
- - lib/thread_pool.rb
22
21
  homepage:
23
22
  licenses:
24
23
  - MIT
@@ -1,33 +0,0 @@
1
- class ThreadPool
2
- attr_reader :pool
3
-
4
- def initialize(size)
5
- @size = size
6
- @job_queue = Queue.new
7
-
8
- @pool = Array.new(@size) do |i|
9
- Thread.new do
10
- Thread.current[:id] = i
11
-
12
- catch(:exit) do
13
- loop do
14
- job, args = @job_queue.pop
15
- job.call(*args)
16
- end
17
- end
18
- end
19
- end
20
- end
21
-
22
- def schedule_jobs(*args, &block)
23
- @job_queue << [block, args]
24
- end
25
-
26
- def kill()
27
- @size.times do
28
- schedule_jobs{throw :exit}
29
- end
30
-
31
- @pool.map(&:join)
32
- end
33
- end