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.
- checksums.yaml +7 -0
- data/README.md +1 -6
- data/lib/brewery_control_system.rb +106 -0
- data/lib/brewery_control_system/api.rb +94 -0
- data/lib/brewery_control_system/api/3.7.0/bcs_sys.rb +158 -0
- data/lib/brewery_control_system/api/3.7.0/device_endpoint.rb +25 -0
- data/lib/brewery_control_system/api/3.7.0/endpoint.rb +48 -0
- data/lib/brewery_control_system/api/3.7.0/setpoints.rb +15 -0
- data/lib/brewery_control_system/api/3.7.0/sysname.rb +247 -0
- data/lib/brewery_control_system/api/3.7.0/temperature_probe_names_endpoint.rb +21 -0
- data/lib/brewery_control_system/api/3.7.0/temperature_probes_endpoint.rb +42 -0
- data/lib/brewery_control_system/api/3.7.0/temps.rb +15 -0
- data/lib/brewery_control_system/api/3.7.0/ultemp.rb +117 -0
- data/lib/brewery_control_system/api/device.rb +8 -0
- data/lib/brewery_control_system/api/server_version.rb +7 -0
- data/lib/brewery_control_system/api/version_check.rb +26 -0
- data/lib/brewery_control_system/http_service.rb +27 -0
- data/lib/brewery_control_system/http_service/user_agent.rb +33 -0
- data/lib/brewery_control_system/input.rb +4 -0
- data/lib/brewery_control_system/middleware.rb +5 -0
- data/lib/brewery_control_system/middleware/registration.rb +18 -0
- data/lib/brewery_control_system/output.rb +4 -0
- data/lib/brewery_control_system/temperature_probe.rb +4 -0
- data/lib/brewery_control_system/version.rb +6 -0
- data/spec/spec_helper.rb +6 -1
- metadata +48 -80
- data/lib/bcs_interrogator.rb +0 -36
- data/lib/bcs_interrogator/api.rb +0 -46
- data/lib/bcs_interrogator/api/endpoint.rb +0 -61
- data/lib/bcs_interrogator/api/response.rb +0 -38
- data/lib/bcs_interrogator/api/sysname.rb +0 -227
- data/lib/bcs_interrogator/api/ultemp.rb +0 -110
- data/lib/bcs_interrogator/entity.rb +0 -43
- data/lib/bcs_interrogator/version.rb +0 -6
- data/spec/cases/api_spec.rb +0 -33
- data/spec/cases/bcs_interrogator_spec.rb +0 -4
@@ -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,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
|
data/spec/spec_helper.rb
CHANGED
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.
|
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:
|
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
|
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
|
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: '
|
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: '
|
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: '
|
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: '
|
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
|
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
|
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/
|
120
|
-
- lib/
|
121
|
-
- lib/
|
122
|
-
- lib/
|
123
|
-
- lib/
|
124
|
-
- lib/
|
125
|
-
- lib/
|
126
|
-
- lib/
|
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:
|
121
|
+
rubygems_version: 2.0.14
|
151
122
|
signing_key:
|
152
|
-
specification_version:
|
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:
|
data/lib/bcs_interrogator.rb
DELETED
@@ -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
|
data/lib/bcs_interrogator/api.rb
DELETED
@@ -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
|