From 7a3cea15cc54c39e071b59ac22d2d384f8fea944 Mon Sep 17 00:00:00 2001
From: Karai Csaba
Date: Sat, 7 May 2016 08:32:52 +0200
Subject: [PATCH] Input range control
---
examples/dummy-web-server.pl | 46 +++++++++++++++++++++++++++++-------
examples/web-server/LED.html | 7 ++++++
html/userpage.js | 25 +++++++++++++++++++-
3 files changed, 68 insertions(+), 10 deletions(-)
diff --git a/examples/dummy-web-server.pl b/examples/dummy-web-server.pl
index a8556d7..5b2a6a0 100755
--- a/examples/dummy-web-server.pl
+++ b/examples/dummy-web-server.pl
@@ -9,6 +9,7 @@ use Data::Dumper;
use File::Basename;
my $ledLabel : shared = "LED is turned off";
+my $ledFreq : shared = 10;
# auto-flush on socket
@@ -85,7 +86,6 @@ sub parse_http
$client->recv($buf, 1024);
$data .= $buf;
}while( $data !~ /\r\n\r\n/s );
- #print "Query: $data\n";
my %resp;
@@ -121,6 +121,23 @@ sub parse_http
$resp{method} = 'ERROR';
$resp{error} = 'Invalid HTTP request';
}
+
+ if( $resp{method} eq 'POST' )
+ {
+ my $remaining = join("\r\n", @lines);
+ my $cnt_len = $resp{fields}{'Content-Length'};
+
+ while( length($remaining) < $cnt_len )
+ {
+ my $buf = "";
+ $client->recv($buf, 1024);
+ $remaining .= $buf;
+ }
+
+ $resp{postData} = $remaining;
+ my %pargs = split /[=\&]/, $remaining;
+ $resp{postArgs} = \%pargs;
+ }
}
else
{
@@ -131,7 +148,7 @@ sub parse_http
return \%resp;
}
-sub error_response
+sub simple_response
{
my ($code, $msg) = @_;
@@ -183,7 +200,7 @@ sub process_http
my ($httpReq) = @_;
if( $httpReq->{method} eq 'ERROR' )
{
- return error_response(400, $httpReq->{error});
+ return simple_response(400, $httpReq->{error});
}
if( $httpReq->{url} =~ /\.json$/ )
@@ -238,13 +255,11 @@ sub process_http
}
else
{
- return error_response(404, "File not found");
+ return simple_response(404, "File not found");
}
}
- # TODO
-
- return error_response(400, "Invalid HTTP request");
+ return simple_response(400, "Invalid HTTP request");
}
sub getMenu
@@ -339,6 +354,7 @@ sub readUserPages
sub process_user_comm_led
{
my ($http) = @_;
+ my $loadData = '';
if( $http->{urlArgs}{reason} eq "button" )
{
@@ -357,8 +373,20 @@ sub process_user_comm_led
$ledLabel = "LED is turned off";
}
}
-
- my $r = '{"text": "' . $ledLabel . '"}';
+ elsif( $http->{urlArgs}{reason} eq "submit" )
+ {
+ if( exists $http->{postArgs}{frequency} )
+ {
+ $ledFreq = $http->{postArgs}{frequency};
+ }
+ return simple_response(204, "OK");
+ }
+ elsif( $http->{urlArgs}{reason} eq "load" )
+ {
+ $loadData = ', "frequency": ' . $ledFreq;
+ }
+
+ my $r = '{"text": "' . $ledLabel . '"' . $loadData . '}';
return content_response($r, $http->{url});
}
diff --git a/examples/web-server/LED.html b/examples/web-server/LED.html
index 159fa94..7a98b1b 100644
--- a/examples/web-server/LED.html
+++ b/examples/web-server/LED.html
@@ -9,5 +9,12 @@
+
+
+