foscam-ruby 0.0.3 → 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 +6 -14
- data/.travis.yml +1 -1
- data/foscam-ruby.gemspec +1 -0
- data/lib/foscam-ruby.rb +20 -0
- data/lib/foscam/client.rb +69 -248
- data/lib/foscam/constants.rb +144 -0
- data/lib/foscam/model/alarm_config.rb +147 -0
- data/lib/foscam/model/base.rb +48 -0
- data/lib/foscam/model/device.rb +92 -0
- data/lib/foscam/model/ftp_server.rb +109 -0
- data/lib/foscam/model/mail_server.rb +124 -0
- data/lib/foscam/model/network.rb +79 -0
- data/lib/foscam/model/user.rb +174 -0
- data/lib/foscam/schedule/day.rb +63 -0
- data/lib/foscam/schedule/third_of_a_day.rb +42 -0
- data/lib/foscam/schedule/week.rb +89 -0
- data/lib/foscam/version.rb +1 -1
- data/spec/foscam/client_spec.rb +18 -60
- data/spec/foscam/model/alarm_config_spec.rb +164 -0
- data/spec/foscam/model/base_spec.rb +22 -0
- data/spec/foscam/model/device_spec.rb +136 -0
- data/spec/foscam/model/ftp_server_spec.rb +135 -0
- data/spec/foscam/model/mail_server_spec.rb +126 -0
- data/spec/foscam/model/network_spec.rb +128 -0
- data/spec/foscam/model/user_spec.rb +322 -0
- data/spec/foscam/schedule/day_spec.rb +37 -0
- data/spec/foscam/schedule/third_of_a_day_spec.rb +42 -0
- data/spec/foscam/schedule/week_spec.rb +109 -0
- metadata +64 -19
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZTIzN2ZiYTFhODg4NzE0YjZiNGU2MjQ2ODljNTNjNTQ1ZjdkYTUyY2RhNmJj
|
10
|
-
YzQyOWZmNjcyZjU4MjkwZGEyYmNkYWNjOTUxY2I3ODk2YTM2NjU4ZGIyYmE5
|
11
|
-
NWNhZGRjZDQ5YmM1N2Y1NWIzYmY3YmEzZjNiZmExYjdjZDQ5ZWU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
M2UxMTgxNmVlNTgyMzM3YWYwYzIxYzRhNTJlYTQ5MTA4MWQ5ZWNkZmVjYTZj
|
14
|
-
MjlmZTJlMzU1OGFkYmI4ZmNiMmVkNThkYjdlNmY0Y2Q3NmZlMTBiNTMyMDBk
|
15
|
-
ZGU3MWE3NjdiM2RkZjhkNmMyN2E0Yzc5MDgyZWU2NmVkY2VlNmE=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 07206c44423faf623a2bf523367d0e07ebd87456
|
4
|
+
data.tar.gz: f035164cea711af91542b19fd2cbf2c559c1fadc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 683e4c6829e42cdca0ff3bab2c89022f921d6f9f572a1b310fdd1beaf2dfd503e96bfc0679a2327672f7999ae8c214b333f71b3972a671e722bce0e9d5dc319d
|
7
|
+
data.tar.gz: 2d0c567f0c6e0b8f20042d96abffc3e8c47a85065e9edabc98673e8bd90b108636732eee9c54b4bd46329678843e047300372aeee8a79df09491f1f5f943d644
|
data/.travis.yml
CHANGED
data/foscam-ruby.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_dependency 'faraday'
|
22
22
|
spec.add_dependency 'mini_magick'
|
23
23
|
spec.add_dependency 'active_support'
|
24
|
+
spec.add_dependency 'activemodel'
|
24
25
|
|
25
26
|
spec.add_development_dependency "bundler", "~> 1.3"
|
26
27
|
spec.add_development_dependency "rake"
|
data/lib/foscam-ruby.rb
CHANGED
@@ -2,8 +2,28 @@ require "foscam/version"
|
|
2
2
|
require "faraday"
|
3
3
|
require "mini_magick"
|
4
4
|
require "active_support/core_ext/object/to_query"
|
5
|
+
require "active_support/core_ext/class/attribute_accessors"
|
5
6
|
require "date"
|
7
|
+
require "date"
|
8
|
+
require "active_model"
|
9
|
+
require 'singleton'
|
10
|
+
|
11
|
+
require 'foscam/model/base'
|
6
12
|
|
7
13
|
module Foscam
|
8
14
|
autoload :Client, 'foscam/client'
|
15
|
+
module Model
|
16
|
+
autoload :User, 'foscam/model/user'
|
17
|
+
autoload :Device, 'foscam/model/device'
|
18
|
+
autoload :FtpServer, 'foscam/model/ftp_server'
|
19
|
+
autoload :MailServer, 'foscam/model/mail_server'
|
20
|
+
autoload :AlarmConfig, 'foscam/model/alarm_config'
|
21
|
+
autoload :Network, 'foscam/model/network'
|
22
|
+
end
|
23
|
+
|
24
|
+
module Schedule
|
25
|
+
autoload :Week, 'foscam/schedule/week'
|
26
|
+
autoload :Day, 'foscam/schedule/day'
|
27
|
+
autoload :ThirdOfADay, 'foscam/schedule/third_of_a_day'
|
28
|
+
end
|
9
29
|
end
|
data/lib/foscam/client.rb
CHANGED
@@ -1,145 +1,6 @@
|
|
1
|
+
require "foscam/constants"
|
1
2
|
module Foscam
|
2
3
|
|
3
|
-
# DDNS_STATUS
|
4
|
-
DDNS_STATUS = {
|
5
|
-
0 => "No Action",
|
6
|
-
1 => "It's connecting...",
|
7
|
-
2 => "Can't connect to the Server",
|
8
|
-
3 => "Dyndns Succeed",
|
9
|
-
4 => "DynDns Failed: Dyndns.org Server Error",
|
10
|
-
5 => "DynDns Failed: Incorrect User or Password",
|
11
|
-
6 => "DynDns Failed: Need Credited User",
|
12
|
-
7 => "DynDns Failed: Illegal Host Format",
|
13
|
-
8 => "DynDns Failed: The Host Does not Exist",
|
14
|
-
9 => "DynDns Failed: The Host Does not Belong to You",
|
15
|
-
10 => "DynDns Failed: Too Many or Too Few Hosts",
|
16
|
-
11 => "DynDns Failed: The Host is Blocked for Abusing",
|
17
|
-
12 => "DynDns Failed: Bad Reply from Server",
|
18
|
-
13 => "DynDns Failed: Bad Reply from Server",
|
19
|
-
14 => "Oray Failed: Bad Reply from Server",
|
20
|
-
15 => "Oray Failed: Incorrect User or Password",
|
21
|
-
16 => "Oray Failed: Incorrect Hostname",
|
22
|
-
17 => "Oray Succeed"
|
23
|
-
}
|
24
|
-
|
25
|
-
# UPNP_STATUS
|
26
|
-
UPNP_STATUS = {
|
27
|
-
0 => "No Action",
|
28
|
-
1 => "Succeed",
|
29
|
-
2 => "Device System Error",
|
30
|
-
3 => "Errors in Network Communication",
|
31
|
-
4 => "Errors in Chat with UPnP Device",
|
32
|
-
5 => "Rejected by UPnP Device, Maybe Port Conflict"
|
33
|
-
}
|
34
|
-
|
35
|
-
# ALARM_STATUS
|
36
|
-
ALARM_STATUS = {
|
37
|
-
0 => "No alarm",
|
38
|
-
1 => "Motion alarm",
|
39
|
-
2 => "Input Alarm"
|
40
|
-
}
|
41
|
-
|
42
|
-
# CAMERA_PARAMS_MODE
|
43
|
-
CAMERA_PARAMS_MODE = {
|
44
|
-
0 => "50hz",
|
45
|
-
1 => "60hz",
|
46
|
-
2 => "outdoor"
|
47
|
-
}
|
48
|
-
|
49
|
-
# CAMERA_CONTROL_MODE
|
50
|
-
CAMERA_CONTROL_MODE = CAMERA_PARAMS_MODE.inject({}){|memo,(k,v)| memo[v.to_sym] = k; memo}
|
51
|
-
|
52
|
-
# CAMERA_PARAMS_ORIENTATION
|
53
|
-
CAMERA_PARAMS_ORIENTATION = {
|
54
|
-
0 => "default",
|
55
|
-
1 => "flip",
|
56
|
-
2 => "mirror",
|
57
|
-
3 => "flip+mirror"
|
58
|
-
}
|
59
|
-
|
60
|
-
# CAMERA_CONTROL_ORIENTATION
|
61
|
-
CAMERA_CONTROL_ORIENTATION = CAMERA_PARAMS_ORIENTATION.inject({}){|memo,(k,v)| memo[v.to_sym] = k; memo}
|
62
|
-
|
63
|
-
# CAMERA_PARAMS_RESOLUTION
|
64
|
-
CAMERA_PARAMS_RESOLUTION = {
|
65
|
-
8 => "qvga",
|
66
|
-
32 => "vga"
|
67
|
-
}
|
68
|
-
|
69
|
-
# CAMERA_CONTROL_RESOLUTION
|
70
|
-
CAMERA_CONTROL_RESOLUTION = CAMERA_PARAMS_RESOLUTION.inject({}){|memo,(k,v)| memo[v.to_sym] = k; memo}
|
71
|
-
|
72
|
-
# CAMERA_CONTROLS
|
73
|
-
CAMERA_CONTROLS = {
|
74
|
-
:resolution => 0,
|
75
|
-
:brightness => 1,
|
76
|
-
:contrast => 2,
|
77
|
-
:mode => 3,
|
78
|
-
:flip => 5
|
79
|
-
}
|
80
|
-
|
81
|
-
# DECODER_CONTROLS
|
82
|
-
DECODER_CONTROLS = {
|
83
|
-
:up => 0,
|
84
|
-
:stop => 1,
|
85
|
-
:stop_up => 1,
|
86
|
-
:down => 2,
|
87
|
-
:stop_down => 3,
|
88
|
-
:left => 4,
|
89
|
-
:stop_left => 5,
|
90
|
-
:right => 6,
|
91
|
-
:stop_right => 7,
|
92
|
-
:center => 25,
|
93
|
-
:vertical_patrol => 26,
|
94
|
-
:stop_vertical_patrol => 27,
|
95
|
-
:horizon_patrol => 28,
|
96
|
-
:stop_horizon_patrol => 29,
|
97
|
-
:io_output_high => 94,
|
98
|
-
:io_output_low => 95,
|
99
|
-
}
|
100
|
-
|
101
|
-
# USER_PERMISSIONS
|
102
|
-
USER_PERMISSIONS = {
|
103
|
-
0 => :visitor,
|
104
|
-
1 => :operator,
|
105
|
-
2 => :administrator
|
106
|
-
}
|
107
|
-
|
108
|
-
# PTZ_AUTO_PATROL_TYPE
|
109
|
-
PTZ_AUTO_PATROL_TYPE = {
|
110
|
-
0 => :none,
|
111
|
-
1 => :horizontal,
|
112
|
-
2 => :vertical,
|
113
|
-
3 => :"horizontal+vertical"
|
114
|
-
}
|
115
|
-
|
116
|
-
# PTZ_AUTO_PATROL_TYPE_ID
|
117
|
-
PTZ_AUTO_PATROL_TYPE_ID = PTZ_AUTO_PATROL_TYPE.invert
|
118
|
-
|
119
|
-
# LED_MODE
|
120
|
-
LED_MODE = {
|
121
|
-
0 => :mode1,
|
122
|
-
1 => :mode2,
|
123
|
-
2 => :disabled
|
124
|
-
}
|
125
|
-
|
126
|
-
# LED_MODE_ID
|
127
|
-
LED_MODE_ID = LED_MODE.invert
|
128
|
-
|
129
|
-
# DECODER_BAUD
|
130
|
-
DECODER_BAUD = {
|
131
|
-
9 => :B1200,
|
132
|
-
11 => :B2400,
|
133
|
-
12 => :B4800,
|
134
|
-
13 => :B9600,
|
135
|
-
14 => :B19200,
|
136
|
-
15 => :B38400,
|
137
|
-
4097 => :B57600,
|
138
|
-
4098 => :B115200
|
139
|
-
}
|
140
|
-
# DECODER_BAUD_ID
|
141
|
-
DECODER_BAUD_ID = DECODER_BAUD.invert
|
142
|
-
|
143
4
|
# TODO: put in some documentation for this class
|
144
5
|
class Client
|
145
6
|
|
@@ -167,7 +28,6 @@ module Foscam
|
|
167
28
|
|
168
29
|
##
|
169
30
|
# Connects to the foscam webcam
|
170
|
-
|
171
31
|
# @param url [String] The address to your camera
|
172
32
|
# @param username [String] username to authorize with the camera
|
173
33
|
# @param password [String] password to authorize with the camera
|
@@ -342,7 +202,7 @@ module Foscam
|
|
342
202
|
# @return [Hash] If the request is unsuccessful the hash will be empty. Otherwise it contains the following fields:
|
343
203
|
# * :id (String) The device id.
|
344
204
|
# * :sys_ver (String) Firmware version number.
|
345
|
-
# * :
|
205
|
+
# * :app_ver (String) Web UI version number.
|
346
206
|
# * :alias (String) The assigned camera name.
|
347
207
|
# * :now (DateTime) The camera's time.
|
348
208
|
# * :tz (String) The camera time zone.
|
@@ -419,27 +279,7 @@ module Foscam
|
|
419
279
|
# * :ftp_filename (String)
|
420
280
|
# * :ftp_numberoffiles (Fixnum)
|
421
281
|
# * :ftp_schedule_enable (FalseClass, TrueClass)
|
422
|
-
# * :
|
423
|
-
# * :ftp_schedule_sun_1 (Fixnum)
|
424
|
-
# * :ftp_schedule_sun_2 (Fixnum)
|
425
|
-
# * :ftp_schedule_mon_0 (Fixnum)
|
426
|
-
# * :ftp_schedule_mon_1 (Fixnum)
|
427
|
-
# * :ftp_schedule_mon_2 (Fixnum)
|
428
|
-
# * :ftp_schedule_tue_0 (Fixnum)
|
429
|
-
# * :ftp_schedule_tue_1 (Fixnum)
|
430
|
-
# * :ftp_schedule_tue_2 (Fixnum)
|
431
|
-
# * :ftp_schedule_wed_0 (Fixnum)
|
432
|
-
# * :ftp_schedule_wed_1 (Fixnum)
|
433
|
-
# * :ftp_schedule_wed_2 (Fixnum)
|
434
|
-
# * :ftp_schedule_thu_0 (Fixnum)
|
435
|
-
# * :ftp_schedule_thu_1 (Fixnum)
|
436
|
-
# * :ftp_schedule_thu_2 (Fixnum)
|
437
|
-
# * :ftp_schedule_fri_0 (Fixnum)
|
438
|
-
# * :ftp_schedule_fri_1 (Fixnum)
|
439
|
-
# * :ftp_schedule_fri_2 (Fixnum)
|
440
|
-
# * :ftp_schedule_sat_0 (Fixnum)
|
441
|
-
# * :ftp_schedule_sat_1 (Fixnum)
|
442
|
-
# * :ftp_schedule_sat_2 (Fixnum)
|
282
|
+
# * :ftp_schedule (Schedule::Week)
|
443
283
|
# * :alarm_motion_armed (FalseClass, TrueClass)
|
444
284
|
# * :alarm_motion_sensitivity (Fixnum)
|
445
285
|
# * :alarm_motion_compensation (Fixnum)
|
@@ -454,27 +294,7 @@ module Foscam
|
|
454
294
|
# * :alarm_msn (FalseClass, TrueClass)
|
455
295
|
# * :alarm_http_url (String)
|
456
296
|
# * :alarm_schedule_enable (FalseClass, TrueClass)
|
457
|
-
# * :
|
458
|
-
# * :alarm_schedule_sun_1 (Fixnum)
|
459
|
-
# * :alarm_schedule_sun_2 (Fixnum)
|
460
|
-
# * :alarm_schedule_mon_0 (Fixnum)
|
461
|
-
# * :alarm_schedule_mon_1 (Fixnum)
|
462
|
-
# * :alarm_schedule_mon_2 (Fixnum)
|
463
|
-
# * :alarm_schedule_tue_0 (Fixnum)
|
464
|
-
# * :alarm_schedule_tue_1 (Fixnum)
|
465
|
-
# * :alarm_schedule_tue_2 (Fixnum)
|
466
|
-
# * :alarm_schedule_wed_0 (Fixnum)
|
467
|
-
# * :alarm_schedule_wed_1 (Fixnum)
|
468
|
-
# * :alarm_schedule_wed_2 (Fixnum)
|
469
|
-
# * :alarm_schedule_thu_0 (Fixnum)
|
470
|
-
# * :alarm_schedule_thu_1 (Fixnum)
|
471
|
-
# * :alarm_schedule_thu_2 (Fixnum)
|
472
|
-
# * :alarm_schedule_fri_0 (Fixnum)
|
473
|
-
# * :alarm_schedule_fri_1 (Fixnum)
|
474
|
-
# * :alarm_schedule_fri_2 (Fixnum)
|
475
|
-
# * :alarm_schedule_sat_0 (Fixnum)
|
476
|
-
# * :alarm_schedule_sat_1 (Fixnum)
|
477
|
-
# * :alarm_schedule_sat_2 (Fixnum)
|
297
|
+
# * :alarm_schedule (Schedule::Week)
|
478
298
|
# * :decoder_baud (Fixnum)
|
479
299
|
# * :msn_user (String)
|
480
300
|
# * :msn_pwd (String)
|
@@ -492,26 +312,32 @@ module Foscam
|
|
492
312
|
response = @connection.get("get_params.cgi")
|
493
313
|
response = response.success? ? parse_response(response) : {}
|
494
314
|
unless response.empty?
|
315
|
+
alarm_schedule = {}
|
316
|
+
ftp_schedule = {}
|
317
|
+
response.keys.each do |field|
|
318
|
+
ftp_match = field.to_s.match(/ftp_schedule_(.+)_(\d)/)
|
319
|
+
unless ftp_match.nil?
|
320
|
+
value = response.delete(field)
|
321
|
+
ftp_schedule.merge!("#{ftp_match[1]}_#{ftp_match[2]}".to_sym => value.to_i)
|
322
|
+
end
|
323
|
+
|
324
|
+
alarm_match = field.to_s.match(/alarm_schedule_(.+)_(\d)/)
|
325
|
+
unless alarm_match.nil?
|
326
|
+
value = response.delete(field)
|
327
|
+
alarm_schedule.merge!("#{alarm_match[1]}_#{alarm_match[2]}".to_sym => value.to_i)
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
response[:ftp_schedule] = ::Foscam::Schedule::Week.new(ftp_schedule)
|
332
|
+
|
333
|
+
response[:alarm_schedule] = ::Foscam::Schedule::Week.new(alarm_schedule)
|
334
|
+
|
495
335
|
response[:now] = ::DateTime.strptime(response[:now],'%s')
|
496
336
|
[:ntp_enable, :wifi_enable, :pppoe_enable, :upnp_enable, :alarm_schedule_enable, :ftp_schedule_enable].each do |field|
|
497
337
|
response[field] = response[field].to_i > 0
|
498
338
|
end
|
499
|
-
|
500
|
-
|
501
|
-
:ftp_schedule_mon_0, :ftp_schedule_mon_1, :ftp_schedule_mon_2,
|
502
|
-
:ftp_schedule_tue_0, :ftp_schedule_tue_1, :ftp_schedule_tue_2,
|
503
|
-
:ftp_schedule_wed_0, :ftp_schedule_wed_1, :ftp_schedule_wed_2,
|
504
|
-
:ftp_schedule_thu_0, :ftp_schedule_thu_1, :ftp_schedule_thu_2,
|
505
|
-
:ftp_schedule_fri_0, :ftp_schedule_fri_1, :ftp_schedule_fri_2,
|
506
|
-
:ftp_schedule_sat_0, :ftp_schedule_sat_1, :ftp_schedule_sat_2,
|
507
|
-
:alarm_schedule_sun_0, :alarm_schedule_sun_1, :alarm_schedule_sun_2,
|
508
|
-
:alarm_schedule_mon_0, :alarm_schedule_mon_1, :alarm_schedule_mon_2,
|
509
|
-
:alarm_schedule_tue_0, :alarm_schedule_tue_1, :alarm_schedule_tue_2,
|
510
|
-
:alarm_schedule_wed_0, :alarm_schedule_wed_1, :alarm_schedule_wed_2,
|
511
|
-
:alarm_schedule_thu_0, :alarm_schedule_thu_1, :alarm_schedule_thu_2,
|
512
|
-
:alarm_schedule_fri_0, :alarm_schedule_fri_1, :alarm_schedule_fri_2,
|
513
|
-
:alarm_schedule_sat_0, :alarm_schedule_sat_1, :alarm_schedule_sat_2,
|
514
|
-
:daylight_savings_time, :ddns_proxy_port, :ftp_port, :mail_port, :port, :dev2_port, :dev3_port, :dev4_port, :dev5_port, :dev6_port, :dev7_port, :dev8_port, :dev9_port].each do |field|
|
339
|
+
|
340
|
+
[:daylight_savings_time, :ddns_proxy_port, :ftp_port, :mail_port, :port, :dev2_port, :dev3_port, :dev4_port, :dev5_port, :dev6_port, :dev7_port, :dev8_port, :dev9_port].each do |field|
|
515
341
|
response[field] = response[field].to_i
|
516
342
|
end
|
517
343
|
[:user1_pri, :user2_pri, :user3_pri, :user4_pri, :user5_pri, :user6_pri, :user7_pri, :user8_pri].each do |key|
|
@@ -560,11 +386,23 @@ module Foscam
|
|
560
386
|
##
|
561
387
|
# Set usernames, passwords and privilages
|
562
388
|
# @param [Hash] params
|
389
|
+
# @option params [String] :user1 Username of user1.
|
390
|
+
# @option params [String] :pwd1 Password of user1.
|
391
|
+
# @option params [String] :pri1 Privilages of user1.
|
392
|
+
# @option params [String] ...
|
393
|
+
# @option params [String] :user8 Username of user8.
|
394
|
+
# @option params [String] :pwd8 Password of user8.
|
395
|
+
# @option params [String] :pri8 Privilages of user8.
|
563
396
|
# @return [FalseClass,TrueClass] whether the request was successful.
|
564
397
|
def set_users(params)
|
565
398
|
[:user1, :pwd1, :user2, :pwd2, :user3, :pwd3, :user4, :pwd4, :user5, :pwd5, :user6, :pwd6, :user7, :pwd7, :user8, :pwd8].each do |key|
|
566
399
|
throw "invalid parameter value" if params.has_key?(key) && params[key].length > 12
|
567
400
|
end
|
401
|
+
# if it is one of the matching symbols then set it to the corresponding integer
|
402
|
+
[:pri1, :pri2, :pri3, :pri4, :pri5, :pri6, :pri7, :pri8].each do |key|
|
403
|
+
params[key] = USER_PERMISSIONS_ID[key] if params.has_key?(key) && params[key].is_a?(Symbol)
|
404
|
+
end
|
405
|
+
|
568
406
|
response = @connection.get("set_users.cgi?#{params.to_query}")
|
569
407
|
response.success?
|
570
408
|
end
|
@@ -576,6 +414,11 @@ module Foscam
|
|
576
414
|
##
|
577
415
|
# Set usernames, passwords and privilages
|
578
416
|
# @param [Hash] params
|
417
|
+
# @option params [String] :ip if ip set to "",The device will DHCP Ip
|
418
|
+
# @option params [String] :mask mask
|
419
|
+
# @option params [String] :gateway gateway
|
420
|
+
# @option params [String] :dns dns server
|
421
|
+
# @option params [Fixnum] :port port number
|
579
422
|
# @return [FalseClass,TrueClass] whether the request was successful.
|
580
423
|
def set_network(params)
|
581
424
|
response = @connection.get("set_network.cgi?#{params.to_query}")
|
@@ -702,61 +545,39 @@ module Foscam
|
|
702
545
|
|
703
546
|
##
|
704
547
|
# Set Forbidden
|
705
|
-
# @param [
|
706
|
-
# @option params [Fixnum] :schedule_fri_0
|
707
|
-
# @option params [Fixnum] :schedule_fri_1
|
708
|
-
# @option params [Fixnum] :schedule_fri_2
|
709
|
-
# @option params [Fixnum] :schedule_mon_0
|
710
|
-
# @option params [Fixnum] :schedule_mon_1
|
711
|
-
# @option params [Fixnum] :schedule_mon_2
|
712
|
-
# @option params [Fixnum] :schedule_sat_0
|
713
|
-
# @option params [Fixnum] :schedule_sat_1
|
714
|
-
# @option params [Fixnum] :schedule_sat_2
|
715
|
-
# @option params [Fixnum] :schedule_sun_0
|
716
|
-
# @option params [Fixnum] :schedule_sun_1
|
717
|
-
# @option params [Fixnum] :schedule_sun_2
|
718
|
-
# @option params [Fixnum] :schedule_thu_0
|
719
|
-
# @option params [Fixnum] :schedule_thu_1
|
720
|
-
# @option params [Fixnum] :schedule_thu_2
|
721
|
-
# @option params [Fixnum] :schedule_tue_0
|
722
|
-
# @option params [Fixnum] :schedule_tue_1
|
723
|
-
# @option params [Fixnum] :schedule_tue_2
|
724
|
-
# @option params [Fixnum] :schedule_wed_0
|
725
|
-
# @option params [Fixnum] :schedule_wed_1
|
726
|
-
# @option params [Fixnum] :schedule_wed_2
|
548
|
+
# @param [Schedule::Week] week
|
727
549
|
# @return [FalseClass,TrueClass] whether the request was successful.
|
728
|
-
def set_forbidden(
|
729
|
-
|
730
|
-
|
550
|
+
def set_forbidden(week)
|
551
|
+
if week.is_a?(Schedule::Week)
|
552
|
+
params = {}
|
553
|
+
week.to_param.each_pair do |key, value|
|
554
|
+
params.merge!("schedule_#{key}" => value)
|
555
|
+
end
|
556
|
+
response = @connection.get("set_forbidden.cgi?#{params.to_query}")
|
557
|
+
response.success?
|
558
|
+
else
|
559
|
+
false
|
560
|
+
end
|
731
561
|
end
|
732
562
|
|
733
563
|
##
|
734
564
|
# Returns the forbidden schedule for the camera
|
735
|
-
# @return [
|
736
|
-
# * :schedule_sun_0 (Fixnum)
|
737
|
-
# * :schedule_sun_1 (Fixnum)
|
738
|
-
# * :schedule_sun_2 (Fixnum)
|
739
|
-
# * :schedule_mon_0 (Fixnum)
|
740
|
-
# * :schedule_mon_1 (Fixnum)
|
741
|
-
# * :schedule_mon_2 (Fixnum)
|
742
|
-
# * :schedule_tue_0 (Fixnum)
|
743
|
-
# * :schedule_tue_1 (Fixnum)
|
744
|
-
# * :schedule_tue_2 (Fixnum)
|
745
|
-
# * :schedule_wed_0 (Fixnum)
|
746
|
-
# * :schedule_wed_1 (Fixnum)
|
747
|
-
# * :schedule_wed_2 (Fixnum)
|
748
|
-
# * :schedule_thu_0 (Fixnum)
|
749
|
-
# * :schedule_thu_1 (Fixnum)
|
750
|
-
# * :schedule_thu_2 (Fixnum)
|
751
|
-
# * :schedule_fri_0 (Fixnum)
|
752
|
-
# * :schedule_fri_1 (Fixnum)
|
753
|
-
# * :schedule_fri_2 (Fixnum)
|
754
|
-
# * :schedule_sat_0 (Fixnum)
|
755
|
-
# * :schedule_sat_1 (Fixnum)
|
756
|
-
# * :schedule_sat_2 (Fixnum)
|
565
|
+
# @return [Schedule::Week, nil] If the request is unsuccessful then nil is returned.
|
757
566
|
def get_forbidden
|
758
567
|
response = @connection.get("get_forbidden.cgi")
|
759
|
-
response.success? ? parse_response(response) : {}
|
568
|
+
params = response.success? ? parse_response(response) : {}
|
569
|
+
schedule = {}
|
570
|
+
unless params.empty?
|
571
|
+
params.keys.each do |field|
|
572
|
+
match = field.to_s.match(/schedule_(.+)_(\d)/)
|
573
|
+
unless match.nil?
|
574
|
+
schedule.merge!("#{match[1]}_#{match[2]}".to_sym => params[field].to_i)
|
575
|
+
end
|
576
|
+
end
|
577
|
+
::Foscam::Schedule::Week.new(schedule)
|
578
|
+
else
|
579
|
+
nil
|
580
|
+
end
|
760
581
|
end
|
761
582
|
|
762
583
|
##
|