mind_meld 0.0.7 → 0.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eedacaa489004554eb8d553b66ed02cf4807b377
4
- data.tar.gz: 49bca865105358950a6cb014a118155d22e0b81b
3
+ metadata.gz: e7b9ee29cd21ea6c2e0ff1b017839b960b1d9af8
4
+ data.tar.gz: c82d8435c583863afd8a3f8b90235f77c928e82a
5
5
  SHA512:
6
- metadata.gz: 3d42f562380068ab37c51cdaae30a94772d311e2779c3042dbab4d51a1d34599d7438079c762074e94e2ce6dd9fb07ac33601535eac77f76b94257d3b129c051
7
- data.tar.gz: cd4908a1aa7d63254c9b6fb3c3a4578818dcc8c26ab42286465b4fd7ca234d6e84b164348167a34d4f56723f070f93c0d3943bfa2cd686360e3ce4f2c47d89f0
6
+ metadata.gz: 999d3e342c8b79f74993fc1ad308781ae780fddd8d1fab752ac59fc5f7280ac4e92027b5b6b79bd718b7afef2143bd5c5dae2a4331bcbb525133a76e2212a58f
7
+ data.tar.gz: ced83fc98284262ee4c24f03302d2754246046a97b8ba11f1575ea390688adeb7e4188c02f85388ef1067a60e54cd38a93ef72b8b3046900f3c817bd7b132f82
data/bin/mind_meld ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path(
5
+ '../../Gemfile',
6
+ Pathname.new(__FILE__).realpath
7
+ )
8
+
9
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
10
+ require 'mind_meld'
11
+
12
+ url = ENV['HIVEMIND_URL'] || 'http://localhost:3000'
13
+ pem = ENV['HIVEMIND_PEM'] || nil
14
+ ca_file = ENV['HIVEMIND_CAFILE'] || nil
15
+ verify_mode = ENV['HIVEMIND_VERIFY_MODE'] || nil
16
+
17
+ mm = MindMeld.new(
18
+ url: url,
19
+ pem: pem,
20
+ ca_file: ca_file,
21
+ verify_mode: verify_mode
22
+ )
23
+
24
+ devs = mm.devices
25
+
26
+ devs.each do |dev|
27
+ puts "#{dev['id']}) #{dev['name']}"
28
+ end
@@ -0,0 +1,50 @@
1
+ require 'json'
2
+ require 'net/http'
3
+ require 'active_support/core_ext/object/to_query'
4
+ require 'mind_meld'
5
+
6
+ class MindMeld::Device < MindMeld
7
+ def initialize options
8
+ super
9
+
10
+ @device = options[:device]
11
+ # To trigger registration (is this needed?)
12
+ device_details
13
+ end
14
+
15
+ def id
16
+ device_details['id']
17
+ end
18
+
19
+ def name
20
+ device_details['name']
21
+ end
22
+
23
+ def register options
24
+ request :post, 'devices/register', { device: options }
25
+ end
26
+
27
+ def poll *dev_ids
28
+ args = {
29
+ poll: dev_ids.length > 0 ? { id: self.id, devices: dev_ids } : { id: self.id }
30
+ }
31
+ response = request :put, 'devices/poll', args
32
+ if dev_ids.length == 0
33
+ @device_details = response
34
+ end
35
+ response
36
+ end
37
+
38
+ def create_action options
39
+ response = request :put, 'devices/action', { device_action: { device_id: self.id }.merge(options) }
40
+ response
41
+ end
42
+
43
+ def device_details(refresh = false)
44
+ if refresh or not @device_details or @device_details.has_key? :error
45
+ @device_details = register(@device)
46
+ else
47
+ @device_details
48
+ end
49
+ end
50
+ end
@@ -1,6 +1,6 @@
1
- require 'mind_meld'
1
+ require 'mind_meld/device'
2
2
 
3
- class MindMeld::Hive < MindMeld
3
+ class MindMeld::Hive < MindMeld::Device
4
4
  def initialize options
5
5
  options[:device][:device_type] = 'Hive'
6
6
  super options
@@ -0,0 +1,18 @@
1
+ require 'mind_meld/device'
2
+
3
+ class MindMeld::Tv < MindMeld::Device
4
+ def initialize options
5
+ options[:device][:device_type] ||= 'Tv'
6
+ super options
7
+ end
8
+
9
+ def set_application application
10
+ request :put, 'plugin/tv/set_application',
11
+ {
12
+ device: {
13
+ id: device_details['id'],
14
+ application: application
15
+ }
16
+ }
17
+ end
18
+ end
data/lib/mind_meld.rb CHANGED
@@ -7,7 +7,7 @@ class MindMeld
7
7
  if options[:url]
8
8
  uri = URI.parse(options[:url])
9
9
  @http = Net::HTTP.new(uri.host, uri.port)
10
- if options.key?(:pem)
10
+ if options.key?(:pem) and options[:pem]
11
11
  pem = File.read(options[:pem])
12
12
  @http.use_ssl = true if uri.scheme == 'https'
13
13
  @http.cert = OpenSSL::X509::Certificate.new(pem)
@@ -15,55 +15,22 @@ class MindMeld
15
15
  @http.ca_file = options[:ca_file] if options.key?(:ca_file)
16
16
  @http.verify_mode = options[:verify_mode] if options.key?(:verify_mode)
17
17
  end
18
-
19
- @device = options[:device]
20
-
21
- # To trigger registration (is this needed?)
22
- device_details
23
18
  end
24
19
  end
25
20
 
26
- def id
27
- device_details['id']
28
- end
29
-
30
- def name
31
- device_details['name']
32
- end
33
-
34
- def register options
35
- request :post, 'devices/register', { device: options }
36
- end
37
-
38
- def poll *dev_ids
39
- args = {
40
- poll: dev_ids.length > 0 ? { id: self.id, devices: dev_ids } : { id: self.id }
41
- }
42
- response = request :put, 'devices/poll', args
43
- if dev_ids.length == 0
44
- @device_details = response
45
- end
46
- response
47
- end
48
-
49
- def create_action options
50
- response = request :put, 'devices/action', { device_action: { device_id: self.id }.merge(options) }
51
- response
52
- end
53
-
54
- def device_details(refresh = false)
55
- if refresh or not @device_details or @device_details.has_key? :error
56
- @device_details = register(@device)
57
- else
58
- @device_details
59
- end
21
+ def devices
22
+ request :get, 'devices'
60
23
  end
61
24
 
62
25
  private
63
26
  def request type, call, params = {}
64
27
  if @http
65
28
  begin
66
- JSON.parse(@http.send("request_#{type}", "/api/#{call}.json", params.to_query).body)
29
+ JSON.parse(@http.send(
30
+ "request_#{type}",
31
+ "/api/#{call}.json",
32
+ type == :get ? params : params.to_query
33
+ ).body)
67
34
  rescue => e
68
35
  { error: e.message }
69
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mind_meld
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Haig
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-23 00:00:00.000000000 Z
11
+ date: 2016-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -55,14 +55,17 @@ dependencies:
55
55
  description: API for Hive Mind
56
56
  email:
57
57
  - joe.haig@bbc.co.uk
58
- executables: []
58
+ executables:
59
+ - mind_meld
59
60
  extensions: []
60
61
  extra_rdoc_files: []
61
62
  files:
62
63
  - README.md
64
+ - bin/mind_meld
63
65
  - lib/mind_meld.rb
64
66
  - lib/mind_meld/device.rb
65
67
  - lib/mind_meld/hive.rb
68
+ - lib/mind_meld/tv.rb
66
69
  homepage: https://github.org/bbc/mind_meld
67
70
  licenses:
68
71
  - MIT