cassia-ruby 1.0.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 +7 -0
- data/.circleci/config.yml +50 -0
- data/.env.sample +3 -0
- data/.gitignore +12 -0
- data/.ruby-version +1 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +79 -0
- data/LICENSE.txt +21 -0
- data/README.md +377 -0
- data/Rakefile +2 -0
- data/bin/console +17 -0
- data/bin/setup +8 -0
- data/cassia-ruby.gemspec +38 -0
- data/lib/cassia/access_controller.rb +111 -0
- data/lib/cassia/api.rb +39 -0
- data/lib/cassia/characteristic.rb +14 -0
- data/lib/cassia/configuration.rb +9 -0
- data/lib/cassia/default_logger.rb +11 -0
- data/lib/cassia/device.rb +14 -0
- data/lib/cassia/requests/close_ap_state.rb +31 -0
- data/lib/cassia/requests/close_connection_state.rb +38 -0
- data/lib/cassia/requests/close_notify.rb +38 -0
- data/lib/cassia/requests/close_scan.rb +38 -0
- data/lib/cassia/requests/combined_sse.rb +27 -0
- data/lib/cassia/requests/connect_device.rb +38 -0
- data/lib/cassia/requests/connect_local.rb +44 -0
- data/lib/cassia/requests/disconnect_device.rb +36 -0
- data/lib/cassia/requests/disconnect_local.rb +33 -0
- data/lib/cassia/requests/discover_all_char.rb +33 -0
- data/lib/cassia/requests/discover_all_services.rb +33 -0
- data/lib/cassia/requests/discover_all_services_and_chars.rb +33 -0
- data/lib/cassia/requests/discover_char_of_service.rb +34 -0
- data/lib/cassia/requests/discover_descriptor_of_char.rb +34 -0
- data/lib/cassia/requests/get_all_routers_status.rb +33 -0
- data/lib/cassia/requests/get_connected_devices_router.rb +34 -0
- data/lib/cassia/requests/get_token.rb +34 -0
- data/lib/cassia/requests/open_ap_state.rb +31 -0
- data/lib/cassia/requests/open_connection_state.rb +38 -0
- data/lib/cassia/requests/open_notify.rb +38 -0
- data/lib/cassia/requests/open_scan.rb +50 -0
- data/lib/cassia/requests/switch_autoselect.rb +37 -0
- data/lib/cassia/requests/write_char_by_handle.rb +35 -0
- data/lib/cassia/response_handlers/close_ap_state.rb +31 -0
- data/lib/cassia/response_handlers/close_connection_state.rb +32 -0
- data/lib/cassia/response_handlers/close_notify.rb +32 -0
- data/lib/cassia/response_handlers/close_scan.rb +32 -0
- data/lib/cassia/response_handlers/connect_device.rb +29 -0
- data/lib/cassia/response_handlers/connect_local.rb +32 -0
- data/lib/cassia/response_handlers/disconnect_device.rb +28 -0
- data/lib/cassia/response_handlers/disconnect_local.rb +31 -0
- data/lib/cassia/response_handlers/discover_all_char.rb +33 -0
- data/lib/cassia/response_handlers/discover_all_services.rb +33 -0
- data/lib/cassia/response_handlers/discover_all_services_and_chars.rb +41 -0
- data/lib/cassia/response_handlers/discover_char_of_service.rb +37 -0
- data/lib/cassia/response_handlers/discover_descriptor_of_char.rb +23 -0
- data/lib/cassia/response_handlers/get_all_routers_status.rb +32 -0
- data/lib/cassia/response_handlers/get_connected_devices_router.rb +33 -0
- data/lib/cassia/response_handlers/get_token.rb +29 -0
- data/lib/cassia/response_handlers/open_ap_state.rb +31 -0
- data/lib/cassia/response_handlers/open_connection_state.rb +32 -0
- data/lib/cassia/response_handlers/open_notify.rb +32 -0
- data/lib/cassia/response_handlers/open_scan.rb +32 -0
- data/lib/cassia/response_handlers/switch_autoselect.rb +29 -0
- data/lib/cassia/response_handlers/write_char_by_handle.rb +28 -0
- data/lib/cassia/router.rb +75 -0
- data/lib/cassia/ruby/version.rb +5 -0
- data/lib/cassia/service.rb +13 -0
- data/lib/cassia.rb +82 -0
- metadata +252 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class DiscoverAllServices
|
4
|
+
def initialize(access_controller, router: , device_mac: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
@device_mac = device_mac
|
8
|
+
end
|
9
|
+
|
10
|
+
def handle(response)
|
11
|
+
if response.success?
|
12
|
+
handle_success(response)
|
13
|
+
else
|
14
|
+
handle_failure(response)
|
15
|
+
end
|
16
|
+
response.success?
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def handle_success(response)
|
22
|
+
device = @router.connected_devices.detect {|device| device.mac == @device_mac}
|
23
|
+
response.body.each do |service|
|
24
|
+
device.services << Service.new(service)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def handle_failure(response)
|
29
|
+
@access_controller.error = response.body
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class DiscoverAllServicesAndChars
|
4
|
+
def initialize(access_controller, router: , device_mac: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
@device_mac = device_mac
|
8
|
+
end
|
9
|
+
|
10
|
+
def handle(response)
|
11
|
+
if response.success?
|
12
|
+
handle_success(response)
|
13
|
+
else
|
14
|
+
handle_failure(response)
|
15
|
+
end
|
16
|
+
response.success?
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def handle_success(response)
|
22
|
+
device = @router.connected_devices.detect {|device| device.mac == @device_mac}
|
23
|
+
response.body.each do |service|
|
24
|
+
new_service = Service.new(uuid: service["uuid"], primary: service["primary"], handle: service["handle"])
|
25
|
+
if service["characteristics"]
|
26
|
+
service["characteristics"].each do |char|
|
27
|
+
new_char = Characteristic.new(char)
|
28
|
+
new_service.characteristics << new_char
|
29
|
+
device.characteristics << new_char
|
30
|
+
end
|
31
|
+
end
|
32
|
+
device.services << new_service
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def handle_failure(response)
|
37
|
+
@access_controller.error = response.body
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class DiscoverCharOfService
|
4
|
+
def initialize(access_controller, router: , device_mac: , service_uuid: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
@device_mac = device_mac
|
8
|
+
@service_uuid = service_uuid
|
9
|
+
end
|
10
|
+
|
11
|
+
def handle(response)
|
12
|
+
if response.success?
|
13
|
+
handle_success(response)
|
14
|
+
else
|
15
|
+
handle_failure(response)
|
16
|
+
end
|
17
|
+
response.success?
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def handle_success(response)
|
23
|
+
device = @router.connected_devices.detect {|device| device.mac == @device_mac}
|
24
|
+
service = device.services.detect {|service| service.uuid == @service_uuid}
|
25
|
+
response.body.each do |char|
|
26
|
+
new_char = Characteristic.new(char)
|
27
|
+
service.characteristics << new_char
|
28
|
+
device.characteristics << new_char
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def handle_failure(response)
|
33
|
+
@access_controller.error = response.body
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class DiscoverDescriptorOfChar
|
4
|
+
def initialize(access_controller, router: , device_mac: , char_uuid: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
@device_mac = device_mac
|
8
|
+
@char_uuid = char_uuid
|
9
|
+
end
|
10
|
+
|
11
|
+
def handle(response)
|
12
|
+
device = @router.connected_devices.detect {|device| device.mac == @device_mac}
|
13
|
+
char = device.characteristics.detect {|char| char.uuid == @char_uuid}
|
14
|
+
if char
|
15
|
+
char.descriptors = response.body
|
16
|
+
else
|
17
|
+
@access_controller.error = "Desciptors Empty. Characteristic Not Found."
|
18
|
+
end
|
19
|
+
!(response.body.empty?)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class GetAllRoutersStatus
|
4
|
+
def initialize(access_controller)
|
5
|
+
@access_controller = access_controller
|
6
|
+
end
|
7
|
+
|
8
|
+
def handle(response)
|
9
|
+
if response.success?
|
10
|
+
handle_success(response)
|
11
|
+
else
|
12
|
+
handle_failure(response)
|
13
|
+
end
|
14
|
+
response.success?
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def handle_success(response)
|
20
|
+
response.body.each do |router|
|
21
|
+
new_router = Router.new(router)
|
22
|
+
@access_controller.routers << new_router
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def handle_failure(response)
|
27
|
+
@access_controller.error = JSON.parse(response.body)["error"]
|
28
|
+
@access_controller.error_description = JSON.parse(response.body)["error_description"]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class GetConnectedDevicesRouter
|
4
|
+
def initialize(access_controller, router: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
end
|
8
|
+
|
9
|
+
def handle(response)
|
10
|
+
if response.success?
|
11
|
+
handle_success(response)
|
12
|
+
else
|
13
|
+
handle_failure(response)
|
14
|
+
end
|
15
|
+
response.success?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def handle_success(response)
|
21
|
+
@router.connected_devices = response.body["nodes"].map do |device|
|
22
|
+
new_device = Device.new(device)
|
23
|
+
new_device.mac = device.delete("id")
|
24
|
+
new_device
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def handle_failure(response)
|
29
|
+
@access_controller.error = response.body
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class GetToken
|
4
|
+
def initialize(access_controller)
|
5
|
+
@access_controller = access_controller
|
6
|
+
end
|
7
|
+
|
8
|
+
def handle(response)
|
9
|
+
if response.success?
|
10
|
+
handle_success(response)
|
11
|
+
else
|
12
|
+
handle_failure(response)
|
13
|
+
end
|
14
|
+
response.success?
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def handle_success(response)
|
20
|
+
@access_controller.access_token = response.body["access_token"]
|
21
|
+
end
|
22
|
+
|
23
|
+
def handle_failure(response)
|
24
|
+
@access_controller.error = response.body["error"]
|
25
|
+
@access_controller.error_description = response.body["error_description"]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class OpenApState
|
4
|
+
def initialize(access_controller)
|
5
|
+
@access_controller = access_controller
|
6
|
+
end
|
7
|
+
|
8
|
+
def handle(response)
|
9
|
+
if response.success?
|
10
|
+
handle_success
|
11
|
+
else
|
12
|
+
handle_failure(response)
|
13
|
+
end
|
14
|
+
response.success?
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def handle_success
|
20
|
+
@access_controller.routers.each do |router|
|
21
|
+
router.ap_state_monitor_on = true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def handle_failure(response)
|
26
|
+
@access_controller.error = JSON.parse(response.body)['error']
|
27
|
+
@access_controller.error_description = JSON.parse(response.body)['error_description']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class OpenConnectionState
|
4
|
+
def initialize(access_controller, aps: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@aps = aps
|
7
|
+
end
|
8
|
+
|
9
|
+
def handle(response)
|
10
|
+
if response.success?
|
11
|
+
handle_success
|
12
|
+
else
|
13
|
+
handle_failure(response)
|
14
|
+
end
|
15
|
+
response.success?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def handle_success
|
21
|
+
routers_to_open_connection = @access_controller.routers.select {|router| @aps.include?(router.mac) }
|
22
|
+
routers_to_open_connection.each do |router|
|
23
|
+
router.connection_state_monitor_on = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def handle_failure(response)
|
28
|
+
@access_controller.error = JSON.parse(response.body)['error']
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class OpenNotify
|
4
|
+
def initialize(access_controller, aps: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@aps = aps
|
7
|
+
end
|
8
|
+
|
9
|
+
def handle(response)
|
10
|
+
if response.success?
|
11
|
+
handle_success
|
12
|
+
else
|
13
|
+
handle_failure(response)
|
14
|
+
end
|
15
|
+
response.success?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def handle_success
|
21
|
+
routers_to_open_notify = @access_controller.routers.select {|router| @aps.include?(router.mac) }
|
22
|
+
routers_to_open_notify.each do |router|
|
23
|
+
router.notification_open = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def handle_failure(response)
|
28
|
+
@access_controller.error = JSON.parse(response.body)['error']
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class OpenScan
|
4
|
+
def initialize(access_controller, aps: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@aps = aps
|
7
|
+
end
|
8
|
+
|
9
|
+
def handle(response)
|
10
|
+
if response.success?
|
11
|
+
handle_success
|
12
|
+
else
|
13
|
+
handle_failure(response)
|
14
|
+
end
|
15
|
+
response.success?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def handle_success
|
21
|
+
routers_to_open_scan = @access_controller.routers.select {|router| @aps.include?(router.mac) }
|
22
|
+
routers_to_open_scan.each do |router|
|
23
|
+
router.scanning_on = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def handle_failure(response)
|
28
|
+
@access_controller.error = JSON.parse(response.body)['error']
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class SwitchAutoselect
|
4
|
+
def initialize(access_controller)
|
5
|
+
@access_controller = access_controller
|
6
|
+
end
|
7
|
+
|
8
|
+
def handle(response)
|
9
|
+
if response.success?
|
10
|
+
handle_success(response)
|
11
|
+
else
|
12
|
+
handle_failure(response)
|
13
|
+
end
|
14
|
+
response.success?
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def handle_success(response)
|
20
|
+
@access_controller.autoselect_switch = response.body['flag']
|
21
|
+
end
|
22
|
+
|
23
|
+
def handle_failure(response)
|
24
|
+
@access_controller.error = JSON.parse(response.body)['error']
|
25
|
+
@access_controller.error_description = JSON.parse(response.body)['error_description']
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Cassia
|
2
|
+
module ResponseHandlers
|
3
|
+
class WriteCharByHandle
|
4
|
+
def initialize(access_controller, router: , device_mac: , handle: , value: )
|
5
|
+
@access_controller = access_controller
|
6
|
+
@router = router
|
7
|
+
@device_mac = device_mac
|
8
|
+
@handle = handle
|
9
|
+
@value = value
|
10
|
+
end
|
11
|
+
|
12
|
+
def handle(response)
|
13
|
+
device = @router.connected_devices.detect {|device| device.mac == @device_mac}
|
14
|
+
char = device.characteristics.detect {|char| char.handle == @handle}
|
15
|
+
if char
|
16
|
+
if @value == "0100"
|
17
|
+
char.notification_on = true
|
18
|
+
elsif @value == "0000"
|
19
|
+
char.notification_on = false
|
20
|
+
end
|
21
|
+
else
|
22
|
+
@access_controller.error = "Characteristic With Given Handle Not Found"
|
23
|
+
end
|
24
|
+
!(char.nil?)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Cassia
|
2
|
+
class Router
|
3
|
+
include Virtus.model
|
4
|
+
attribute :_id, String
|
5
|
+
attribute :id, String
|
6
|
+
attribute :mac, String
|
7
|
+
attribute :name, String
|
8
|
+
attribute :group, String
|
9
|
+
attribute :status, String
|
10
|
+
attribute :model, String
|
11
|
+
attribute :version, String
|
12
|
+
attribute :position, String
|
13
|
+
attribute :time, Integer
|
14
|
+
attribute :ip, String
|
15
|
+
attribute :localip, String
|
16
|
+
attribute :uptime, Integer
|
17
|
+
attribute :offline_time, Integer
|
18
|
+
attribute :online_time, Integer
|
19
|
+
attribute :update_status, String
|
20
|
+
attribute :update_reason, String
|
21
|
+
attribute :update_version, String
|
22
|
+
attribute :update_progress, Integer
|
23
|
+
attribute :container, Hash
|
24
|
+
attribute :ap, Hash
|
25
|
+
attribute :connected_devices, Array[Cassia::Device], default: []
|
26
|
+
attribute :notification_open, Boolean
|
27
|
+
attribute :scanning_on, Boolean
|
28
|
+
attribute :connection_state_monitor_on, Boolean
|
29
|
+
attribute :ap_state_monitor_on, Boolean
|
30
|
+
|
31
|
+
def connect_local(access_controller, device_mac: , type: )
|
32
|
+
Cassia::Requests::ConnectLocal.new(access_controller, router: self, device_mac: device_mac, type: type).perform
|
33
|
+
end
|
34
|
+
|
35
|
+
def disconnect_local(access_controller, device_mac: )
|
36
|
+
Cassia::Requests::DisconnectLocal.new(access_controller, router: self, device_mac: device_mac).perform
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_connected_devices(access_controller)
|
40
|
+
Cassia::Requests::GetConnectedDevicesRouter.new(access_controller, router: self).perform
|
41
|
+
end
|
42
|
+
|
43
|
+
def discover_all_services(access_controller, device_mac: )
|
44
|
+
Cassia::Requests::DiscoverAllServices.new(access_controller, router: self, device_mac: device_mac).perform
|
45
|
+
end
|
46
|
+
|
47
|
+
def discover_all_char(access_controller, device_mac: )
|
48
|
+
Cassia::Requests::DiscoverAllChar.new(access_controller, router: self, device_mac: device_mac).perform
|
49
|
+
end
|
50
|
+
|
51
|
+
def discover_char_of_service(access_controller, device_mac: , service_uuid: )
|
52
|
+
Cassia::Requests::DiscoverCharOfService.new(access_controller, router: self, device_mac: device_mac, service_uuid: service_uuid).perform
|
53
|
+
end
|
54
|
+
|
55
|
+
def discover_descriptor_of_char(access_controller, device_mac: , char_uuid: )
|
56
|
+
Cassia::Requests::DiscoverDescriptorOfChar.new(access_controller, router: self, device_mac: device_mac, char_uuid: char_uuid).perform
|
57
|
+
end
|
58
|
+
|
59
|
+
def discover_all_services_and_chars(access_controller, device_mac: )
|
60
|
+
Cassia::Requests::DiscoverAllServicesAndChars.new(access_controller, router: self, device_mac: device_mac).perform
|
61
|
+
end
|
62
|
+
|
63
|
+
def write_char_by_handle(access_controller, device_mac:, handle: , value: )
|
64
|
+
Cassia::Requests::WriteCharByHandle.new(access_controller, router: self, device_mac: device_mac, handle: handle, value: value).perform
|
65
|
+
end
|
66
|
+
|
67
|
+
def open_char_notification(access_controller, device_mac: , handle: )
|
68
|
+
Cassia::Requests::WriteCharByHandle.new(access_controller, router: self, device_mac: device_mac, handle: handle, value: "0100").perform
|
69
|
+
end
|
70
|
+
|
71
|
+
def close_char_notification(access_controller, device_mac: , handle: )
|
72
|
+
Cassia::Requests::WriteCharByHandle.new(access_controller, router: self, device_mac: device_mac, handle: handle, value: "0000").perform
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Cassia
|
2
|
+
class Service
|
3
|
+
include Virtus.model
|
4
|
+
attribute :uuid, String
|
5
|
+
attribute :primary, Boolean
|
6
|
+
attribute :handle, Integer
|
7
|
+
attribute :characteristics, Array[Cassia::Characteristic]
|
8
|
+
|
9
|
+
def ==(other)
|
10
|
+
return self.uuid == other.uuid && self.primary == other.primary && self.handle == other.handle && self.characteristics == other.characteristics
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/cassia.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require "faraday"
|
2
|
+
require "faraday_middleware"
|
3
|
+
require "virtus"
|
4
|
+
require "base64"
|
5
|
+
require "json"
|
6
|
+
require "ld-eventsource"
|
7
|
+
|
8
|
+
require "cassia/api"
|
9
|
+
require "cassia/configuration"
|
10
|
+
require "cassia/default_logger"
|
11
|
+
require "cassia/characteristic"
|
12
|
+
require "cassia/service"
|
13
|
+
require "cassia/device"
|
14
|
+
require "cassia/router"
|
15
|
+
require "cassia/access_controller"
|
16
|
+
require "cassia/response_handlers/get_token"
|
17
|
+
require "cassia/response_handlers/get_all_routers_status"
|
18
|
+
require "cassia/response_handlers/switch_autoselect"
|
19
|
+
require "cassia/response_handlers/open_scan"
|
20
|
+
require "cassia/response_handlers/close_scan"
|
21
|
+
require "cassia/response_handlers/connect_device"
|
22
|
+
require "cassia/response_handlers/disconnect_device"
|
23
|
+
require "cassia/response_handlers/connect_local"
|
24
|
+
require "cassia/response_handlers/disconnect_local"
|
25
|
+
require "cassia/response_handlers/get_connected_devices_router"
|
26
|
+
require "cassia/response_handlers/open_notify"
|
27
|
+
require "cassia/response_handlers/close_notify"
|
28
|
+
require "cassia/response_handlers/open_connection_state"
|
29
|
+
require "cassia/response_handlers/close_connection_state"
|
30
|
+
require "cassia/response_handlers/open_ap_state"
|
31
|
+
require "cassia/response_handlers/close_ap_state"
|
32
|
+
require "cassia/response_handlers/discover_all_services"
|
33
|
+
require "cassia/response_handlers/discover_all_char"
|
34
|
+
require "cassia/response_handlers/discover_char_of_service"
|
35
|
+
require "cassia/response_handlers/discover_descriptor_of_char"
|
36
|
+
require "cassia/response_handlers/discover_all_services_and_chars"
|
37
|
+
require "cassia/response_handlers/write_char_by_handle"
|
38
|
+
require "cassia/requests/get_token"
|
39
|
+
require "cassia/requests/get_all_routers_status"
|
40
|
+
require "cassia/requests/switch_autoselect"
|
41
|
+
require "cassia/requests/open_scan"
|
42
|
+
require "cassia/requests/close_scan"
|
43
|
+
require "cassia/requests/connect_device"
|
44
|
+
require "cassia/requests/disconnect_device"
|
45
|
+
require "cassia/requests/connect_local"
|
46
|
+
require "cassia/requests/disconnect_local"
|
47
|
+
require "cassia/requests/get_connected_devices_router"
|
48
|
+
require "cassia/requests/open_notify"
|
49
|
+
require "cassia/requests/close_notify"
|
50
|
+
require "cassia/requests/open_connection_state"
|
51
|
+
require "cassia/requests/close_connection_state"
|
52
|
+
require "cassia/requests/open_ap_state"
|
53
|
+
require "cassia/requests/close_ap_state"
|
54
|
+
require "cassia/requests/combined_sse"
|
55
|
+
require "cassia/requests/discover_all_services"
|
56
|
+
require "cassia/requests/discover_all_char"
|
57
|
+
require "cassia/requests/discover_char_of_service"
|
58
|
+
require "cassia/requests/discover_descriptor_of_char"
|
59
|
+
require "cassia/requests/discover_all_services_and_chars"
|
60
|
+
require "cassia/requests/write_char_by_handle"
|
61
|
+
|
62
|
+
module Cassia
|
63
|
+
def self.configuration
|
64
|
+
@configuration ||= Configuration.new
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.api
|
68
|
+
@api ||= Api.new
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.logger
|
72
|
+
@logger ||= DefaultLogger.build
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.logger=(logger)
|
76
|
+
@logger = logger
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.configure
|
80
|
+
yield(configuration)
|
81
|
+
end
|
82
|
+
end
|