bcs-interrogator 0.0.2 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -6
  3. data/lib/brewery_control_system.rb +106 -0
  4. data/lib/brewery_control_system/api.rb +94 -0
  5. data/lib/brewery_control_system/api/3.7.0/bcs_sys.rb +158 -0
  6. data/lib/brewery_control_system/api/3.7.0/device_endpoint.rb +25 -0
  7. data/lib/brewery_control_system/api/3.7.0/endpoint.rb +48 -0
  8. data/lib/brewery_control_system/api/3.7.0/setpoints.rb +15 -0
  9. data/lib/brewery_control_system/api/3.7.0/sysname.rb +247 -0
  10. data/lib/brewery_control_system/api/3.7.0/temperature_probe_names_endpoint.rb +21 -0
  11. data/lib/brewery_control_system/api/3.7.0/temperature_probes_endpoint.rb +42 -0
  12. data/lib/brewery_control_system/api/3.7.0/temps.rb +15 -0
  13. data/lib/brewery_control_system/api/3.7.0/ultemp.rb +117 -0
  14. data/lib/brewery_control_system/api/device.rb +8 -0
  15. data/lib/brewery_control_system/api/server_version.rb +7 -0
  16. data/lib/brewery_control_system/api/version_check.rb +26 -0
  17. data/lib/brewery_control_system/http_service.rb +27 -0
  18. data/lib/brewery_control_system/http_service/user_agent.rb +33 -0
  19. data/lib/brewery_control_system/input.rb +4 -0
  20. data/lib/brewery_control_system/middleware.rb +5 -0
  21. data/lib/brewery_control_system/middleware/registration.rb +18 -0
  22. data/lib/brewery_control_system/output.rb +4 -0
  23. data/lib/brewery_control_system/temperature_probe.rb +4 -0
  24. data/lib/brewery_control_system/version.rb +6 -0
  25. data/spec/spec_helper.rb +6 -1
  26. metadata +48 -80
  27. data/lib/bcs_interrogator.rb +0 -36
  28. data/lib/bcs_interrogator/api.rb +0 -46
  29. data/lib/bcs_interrogator/api/endpoint.rb +0 -61
  30. data/lib/bcs_interrogator/api/response.rb +0 -38
  31. data/lib/bcs_interrogator/api/sysname.rb +0 -227
  32. data/lib/bcs_interrogator/api/ultemp.rb +0 -110
  33. data/lib/bcs_interrogator/entity.rb +0 -43
  34. data/lib/bcs_interrogator/version.rb +0 -6
  35. data/spec/cases/api_spec.rb +0 -33
  36. data/spec/cases/bcs_interrogator_spec.rb +0 -4
@@ -0,0 +1,8 @@
1
+ class NRB::BreweryControlSystem::API
2
+ class Device < Struct.new(:name, :type, :version, :build)
3
+ # build string
4
+ # name string
5
+ # type string
6
+ # version string
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ class NRB::BreweryControlSystem::API
2
+ module ServerVersion
3
+ def server_version(headers)
4
+ @server_version ||= headers["server"].sub(/^BCS\s+\/?(.+)\s+\(http:\/\/www\.embeddedcc\.com\)$/, '\1')
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,26 @@
1
+ class NRB::BreweryControlSystem::API
2
+ class VersionCheck < Faraday::Response::Middleware
3
+
4
+ extend NRB::BreweryControlSystem::Middleware::Registration
5
+ include NRB::BreweryControlSystem::API::ServerVersion
6
+
7
+ attr_reader :required_version
8
+
9
+ def initialize(app=nil,version=nil)
10
+ raise ArgumentError.new("Must supply an api version to compare against") if version.nil?
11
+ super app
12
+ @required_version = version
13
+ end
14
+
15
+
16
+ def on_complete(env)
17
+ remote_version = server_version env[:response_headers]
18
+ if remote_version != required_version
19
+ warn "BCS Firmware version (#{remote_version}) does not match API version (#{required_version})."
20
+ end
21
+ end
22
+
23
+ register_middleware
24
+
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require 'faraday-http-cache'
2
+ class NRB::BreweryControlSystem
3
+ class HTTPService
4
+
5
+ autoload :UserAgent, 'brewery_control_system/http_service/user_agent'
6
+
7
+ class << self
8
+
9
+ attr_writer :default_adapter
10
+
11
+ def default_adapter; @default_adapter ||= Faraday.default_adapter; end
12
+
13
+
14
+ def default_service(cache_store: nil, options: nil, url: nil, &block)
15
+ Faraday.new url, options do |b|
16
+ b.use :http_cache, store: cache_store
17
+ # b.response :raise_error
18
+ yield b if block_given?
19
+ b.use UserAgent
20
+ b.adapter default_adapter
21
+ end
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,33 @@
1
+ module NRB; class BreweryControlSystem
2
+ class HTTPService::UserAgent
3
+
4
+ NAME = 'BCS Interrogator'.freeze
5
+ URL = 'https://github.com/NewRepublicBrewing/BCS-Interrogator'.freeze
6
+
7
+
8
+ def agent
9
+ @agent ||= "#{name} #{version} (#{url})".freeze
10
+ end
11
+
12
+
13
+ def call(env)
14
+ env[:request_headers]["User-Agent"] = agent
15
+ @app.call(env).on_complete { }
16
+ end
17
+
18
+
19
+ def initialize(app)
20
+ @app = app
21
+ end
22
+
23
+
24
+ def name; NAME; end
25
+
26
+
27
+ def url; URL; end
28
+
29
+
30
+ def version; NRB::BreweryControlSystem.version; end
31
+
32
+ end
33
+ end; end
@@ -0,0 +1,4 @@
1
+ class NRB::BreweryControlSystem
2
+ class Input < Struct.new(:id, :name, :state)
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ class NRB::BreweryControlSystem
2
+ module Middleware
3
+ autoload :Registration, 'brewery_control_system/middleware/registration'
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ module NRB::BreweryControlSystem::Middleware
2
+ module Registration
3
+
4
+ def register_middleware(*args)
5
+ if Faraday::Response.respond_to? :register_middleware
6
+ if args.empty?
7
+ Faraday::Response.register_middleware self => self
8
+ else
9
+ Faraday::Response.register_middleware *args
10
+ end
11
+ else
12
+ warn "Can't register #{self.class.name} as middleware"
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ class NRB::BreweryControlSystem
2
+ class Input < Struct.new(:id, :name, :state)
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ class NRB::BreweryControlSystem
2
+ class TemperatureProbe < Struct.new(:name, :temp, :setpoint, :resistance, :enabled, :coefficients)
3
+ end
4
+ end
@@ -0,0 +1,6 @@
1
+ module NRB
2
+ class BreweryControlSystem
3
+ VERSION = '0.0.6'.freeze
4
+ def self.version; VERSION; end
5
+ end
6
+ end
@@ -1,2 +1,7 @@
1
1
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
- require 'bcs_interrogator'
2
+ require 'brewery_control_system'
3
+
4
+ RSpec.configure do |config|
5
+ config.order = :random
6
+ end
7
+
metadata CHANGED
@@ -1,112 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcs-interrogator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dean Brundage
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-29 00:00:00.000000000 Z
11
+ date: 2014-10-31 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: faraday
14
+ name: faraday-http-cache
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '0.0'
19
+ version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
- version: '0.0'
30
- - !ruby/object:Gem::Dependency
31
- name: NRB_http_service
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: '0.0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '0.0'
26
+ version: '0'
46
27
  - !ruby/object:Gem::Dependency
47
28
  name: guard-rspec
48
29
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
30
  requirements:
51
- - - ~>
31
+ - - '>='
52
32
  - !ruby/object:Gem::Version
53
- version: '2.0'
33
+ version: '0'
54
34
  type: :development
55
35
  prerelease: false
56
36
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
37
  requirements:
59
- - - ~>
38
+ - - '>='
60
39
  - !ruby/object:Gem::Version
61
- version: '2.0'
40
+ version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: rake
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
- - - ~>
45
+ - - '>='
68
46
  - !ruby/object:Gem::Version
69
- version: '10.0'
47
+ version: '0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
- - - ~>
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
- version: '10.0'
54
+ version: '0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: rspec
80
57
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ~>
84
- - !ruby/object:Gem::Version
85
- version: '2.0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: '2.0'
94
- - !ruby/object:Gem::Dependency
95
- name: rb-inotify
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
58
  requirements:
99
- - - ~>
59
+ - - '>='
100
60
  - !ruby/object:Gem::Version
101
- version: '0.0'
61
+ version: '0'
102
62
  type: :development
103
63
  prerelease: false
104
64
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
65
  requirements:
107
- - - ~>
66
+ - - '>='
108
67
  - !ruby/object:Gem::Version
109
- version: '0.0'
68
+ version: '0'
110
69
  description: Embedded Control Concepts Brewery Control System interrogator
111
70
  email:
112
71
  - dean@newrepublicbrewing.com
@@ -116,43 +75,52 @@ extra_rdoc_files: []
116
75
  files:
117
76
  - LICENSE
118
77
  - README.md
119
- - lib/bcs_interrogator.rb
120
- - lib/bcs_interrogator/api.rb
121
- - lib/bcs_interrogator/api/endpoint.rb
122
- - lib/bcs_interrogator/api/response.rb
123
- - lib/bcs_interrogator/api/sysname.rb
124
- - lib/bcs_interrogator/api/ultemp.rb
125
- - lib/bcs_interrogator/entity.rb
126
- - lib/bcs_interrogator/version.rb
78
+ - lib/brewery_control_system.rb
79
+ - lib/brewery_control_system/api.rb
80
+ - lib/brewery_control_system/api/3.7.0/bcs_sys.rb
81
+ - lib/brewery_control_system/api/3.7.0/device_endpoint.rb
82
+ - lib/brewery_control_system/api/3.7.0/endpoint.rb
83
+ - lib/brewery_control_system/api/3.7.0/setpoints.rb
84
+ - lib/brewery_control_system/api/3.7.0/sysname.rb
85
+ - lib/brewery_control_system/api/3.7.0/temperature_probe_names_endpoint.rb
86
+ - lib/brewery_control_system/api/3.7.0/temperature_probes_endpoint.rb
87
+ - lib/brewery_control_system/api/3.7.0/temps.rb
88
+ - lib/brewery_control_system/api/3.7.0/ultemp.rb
89
+ - lib/brewery_control_system/api/device.rb
90
+ - lib/brewery_control_system/api/server_version.rb
91
+ - lib/brewery_control_system/api/version_check.rb
92
+ - lib/brewery_control_system/http_service.rb
93
+ - lib/brewery_control_system/http_service/user_agent.rb
94
+ - lib/brewery_control_system/input.rb
95
+ - lib/brewery_control_system/middleware.rb
96
+ - lib/brewery_control_system/middleware/registration.rb
97
+ - lib/brewery_control_system/output.rb
98
+ - lib/brewery_control_system/temperature_probe.rb
99
+ - lib/brewery_control_system/version.rb
127
100
  - spec/spec_helper.rb
128
- - spec/cases/api_spec.rb
129
- - spec/cases/bcs_interrogator_spec.rb
130
101
  homepage: https://github.com/NewRepublicBrewing/BCS-Interrogator
131
- licenses: []
102
+ licenses:
103
+ - GPL-3
104
+ metadata: {}
132
105
  post_install_message:
133
106
  rdoc_options: []
134
107
  require_paths:
135
108
  - lib
136
109
  required_ruby_version: !ruby/object:Gem::Requirement
137
- none: false
138
110
  requirements:
139
- - - ! '>='
111
+ - - '>='
140
112
  - !ruby/object:Gem::Version
141
113
  version: '0'
142
114
  required_rubygems_version: !ruby/object:Gem::Requirement
143
- none: false
144
115
  requirements:
145
- - - ! '>='
116
+ - - '>='
146
117
  - !ruby/object:Gem::Version
147
118
  version: '0'
148
119
  requirements: []
149
120
  rubyforge_project: bcs-interrogator
150
- rubygems_version: 1.8.24
121
+ rubygems_version: 2.0.14
151
122
  signing_key:
152
- specification_version: 3
123
+ specification_version: 4
153
124
  summary: A gem to intorrogate EEC Brewery Control Systems
154
125
  test_files:
155
126
  - spec/spec_helper.rb
156
- - spec/cases/api_spec.rb
157
- - spec/cases/bcs_interrogator_spec.rb
158
- has_rdoc:
@@ -1,36 +0,0 @@
1
- gem 'NRB_http_service'
2
-
3
- module NRB
4
-
5
- autoload :HTTPService, 'NRB_http_service'
6
-
7
- class BCSInterrogator
8
-
9
- autoload :API, 'bcs_interrogator/api'
10
- autoload :Entity, 'bcs_interrogator/entity'
11
-
12
- attr_reader :api, :last_update
13
-
14
- def initialize(args={})
15
- @api = API.new base_url: args[:base_url]
16
- end
17
-
18
- def input_names; api.sysname.input_names; end
19
- def inputs; api.ultemp.outputs; end
20
- def output_names; api.sysname.output_names; end
21
- def outputs; api.ultemp.outputs; end
22
- def temp_probe_names; api.sysname.temp_probe_names; end
23
- def temps; api.ultemp.temps; end
24
- def setpoints; api.ultemp.setpoints; end
25
-
26
- def update(args={})
27
- api.ultemp.api_call
28
- if args[:deep]
29
- api.sysname.api_call
30
- end
31
- @last_update = Time.now
32
- true
33
- end
34
-
35
- end
36
- end
@@ -1,46 +0,0 @@
1
- module NRB
2
- class BCSInterrogator
3
- class API
4
-
5
- autoload :Endpoint, 'bcs_interrogator/api/endpoint'
6
- autoload :Response, 'bcs_interrogator/api/response'
7
- autoload :Sysname, 'bcs_interrogator/api/sysname'
8
- autoload :Ultemp, 'bcs_interrogator/api/ultemp'
9
-
10
- API_VERSION = 'BCS 3.7.0' # Use NRB::BCSInterrogator::API.api_version instead
11
-
12
- def self.api_version; API_VERSION; end
13
-
14
-
15
- attr_reader :http_service, :base_url
16
-
17
- def api_call(args,connection_opts={})
18
- args[:response_class] ||= NRB::BCSInterrogator::API::Response
19
- response = @http_service.new(args,connection_opts).make_request
20
- if response.server_version &&
21
- response.server_version != self.class.api_version
22
- warn "Firmware version (#{response.server_version}) does not match API version (#{self.class.api_version})."
23
- end
24
- response
25
- end
26
-
27
-
28
- def initialize(args={})
29
- @base_url = args.delete(:base_url)
30
- raise ArgumentError.new("Please supply a :base_url") unless @base_url
31
- @http_service = args.delete(:http_service) || NRB::HTTPService
32
- end
33
-
34
-
35
- def sysname; @sysname ||= Sysname.new api: self; end
36
- def ultemp; @ultemp ||= Ultemp.new api: self; end
37
-
38
- private
39
-
40
- def endpoint_base
41
- @base_url
42
- end
43
-
44
- end
45
- end
46
- end