commit 1758545453a9db72ad72c6def48053bcdacdfd0f
parent ee79106e0a214439786d4db3fe4df79653f22ea8
Author: kyle <kyle@0x30.net>
Date: Wed, 27 Jan 2016 20:18:27 -0700
gen_msgs: add device_update message type
- we need a way to update a continuously changing key that is given back to us
by either gcm or aps
- introduce device_update
- for now takes a single argument, pushtoken_hex, that maps to a hex value
- regenerate message type headers for everything
- add a quick test and test infrastructure for this message type
Diffstat:
11 files changed, 91 insertions(+), 44 deletions(-)
diff --git a/android/shlist/app/src/main/java/drsocto/shlist/MsgTypes.java b/android/shlist/app/src/main/java/drsocto/shlist/MsgTypes.java
@@ -1,4 +1,4 @@
-/* generated Sun Jan 24 15:51:04 MST 2016 */
+/* generated Tue Jan 26 00:51:55 MST 2016 */
package drsocto.shlist;
@@ -7,14 +7,15 @@ public final class MsgTypes {
public final static int protocol_version = 0;
public final static int device_add = 0;
- public final static int friend_add = 1;
- public final static int friend_delete = 2;
- public final static int list_add = 3;
- public final static int list_update = 4;
- public final static int list_join = 5;
- public final static int list_leave = 6;
- public final static int lists_get = 7;
- public final static int lists_get_other = 8;
- public final static int list_items_get = 9;
- public final static int list_item_add = 10;
+ public final static int device_update = 1;
+ public final static int friend_add = 2;
+ public final static int friend_delete = 3;
+ public final static int list_add = 4;
+ public final static int list_update = 5;
+ public final static int list_join = 6;
+ public final static int list_leave = 7;
+ public final static int lists_get = 8;
+ public final static int lists_get_other = 9;
+ public final static int list_items_get = 10;
+ public final static int list_item_add = 11;
}
diff --git a/gen_msgs.sh b/gen_msgs.sh
@@ -3,6 +3,7 @@
protocol_version=0
msg_types="
device_add
+ device_update
friend_add
friend_delete
list_add
diff --git a/ios/shlist/MsgTypes.h b/ios/shlist/MsgTypes.h
@@ -1,16 +1,17 @@
-/* generated Sun Jan 24 15:51:04 MST 2016 */"
+/* generated Tue Jan 26 00:51:55 MST 2016 */
int protocol_version = 0;
enum msg_types {
device_add = 0,
- friend_add = 1,
- friend_delete = 2,
- list_add = 3,
- list_update = 4,
- list_join = 5,
- list_leave = 6,
- lists_get = 7,
- lists_get_other = 8,
- list_items_get = 9,
- list_item_add = 10,
+ device_update = 1,
+ friend_add = 2,
+ friend_delete = 3,
+ list_add = 4,
+ list_update = 5,
+ list_join = 6,
+ list_leave = 7,
+ lists_get = 8,
+ lists_get_other = 9,
+ list_items_get = 10,
+ list_item_add = 11,
};
diff --git a/server/msgs.pl b/server/msgs.pl
@@ -1,24 +1,26 @@
#!/usr/bin/perl
-# generated Sun Jan 24 15:51:04 MST 2016
+# generated Tue Jan 26 00:51:55 MST 2016
use strict;
use warnings;
our $protocol_ver = 0;
our %msg_num = (
device_add => 0,
- friend_add => 1,
- friend_delete => 2,
- list_add => 3,
- list_update => 4,
- list_join => 5,
- list_leave => 6,
- lists_get => 7,
- lists_get_other => 8,
- list_items_get => 9,
- list_item_add => 10,
+ device_update => 1,
+ friend_add => 2,
+ friend_delete => 3,
+ list_add => 4,
+ list_update => 5,
+ list_join => 6,
+ list_leave => 7,
+ lists_get => 8,
+ lists_get_other => 9,
+ list_items_get => 10,
+ list_item_add => 11,
);
our @msg_str = (
'device_add',
+ 'device_update',
'friend_add',
'friend_delete',
'list_add',
@@ -32,6 +34,7 @@ our @msg_str = (
);
our @msg_func = (
\&msg_device_add,
+ \&msg_device_update,
\&msg_friend_add,
\&msg_friend_delete,
\&msg_list_add,
diff --git a/server/sl b/server/sl
@@ -233,6 +233,19 @@ sub msg_device_add {
return make_ok( { device_id => $device_id } );
}
+sub msg_device_update {
+ my ($db, $request) = @_;
+
+ my ($err, $dev) = unpack_request($db, $request, 'device_id');
+ return make_error($err) if ($err);
+
+ my $hex_token = $request->{pushtoken_hex};
+ $db->{update_device}->execute($hex_token, $dev->{num});
+ $log->print("push token = '$hex_token'\n");
+
+ return make_ok();
+}
+
sub msg_list_add {
my ($db, $request) = @_;
@@ -808,6 +821,9 @@ sub prepare_stmt_handles {
$sql = 'select * from devices where id = ?';
$self->{select_device_id} = $dbh->prepare($sql);
+ $sql = 'update devices set push_token = coalesce(?, push_token) where num = ?';
+ $self->{update_device} = $dbh->prepare($sql);
+
# friends table queries
$sql = 'insert or replace into friends (device, friend) values (?, ?)';
$self->{friends_insert} = $dbh->prepare($sql);
diff --git a/server/tests/client.pm b/server/tests/client.pm
@@ -38,6 +38,14 @@ sub new {
return $self;
}
+sub device_update {
+ my $self = shift;
+ my $msg_args = shift;
+ my $status = shift || 'ok';
+
+ my $response = communicate($self, 'device_update', $status, $msg_args);
+}
+
sub list_add {
my $self = shift;
my $list = {
diff --git a/server/tests/device_update/Makefile b/server/tests/device_update/Makefile
@@ -0,0 +1 @@
+include ../test.mk
diff --git a/server/tests/device_update/server.log.good b/server/tests/device_update/server.log.good
@@ -0,0 +1,5 @@
+new connection (pid = <digits>)
+ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256'
+device_add: success, <digits>:<base64> os <base64>
+device_update: push token = <base64>
+disconnected!
diff --git a/server/tests/device_update/test.pl b/server/tests/device_update/test.pl
@@ -0,0 +1,7 @@
+#!/usr/bin/perl -I../
+use strict;
+use warnings;
+use client;
+
+my $A = client->new();
+$A->device_update({ pushtoken_hex => "AD34A9EF72DC714CED" });
diff --git a/server/tests/msgs.pl b/server/tests/msgs.pl
@@ -1,24 +1,26 @@
#!/usr/bin/perl
-# generated Sun Jan 24 15:51:04 MST 2016
+# generated Tue Jan 26 00:51:55 MST 2016
use strict;
use warnings;
our $protocol_ver = 0;
our %msg_num = (
device_add => 0,
- friend_add => 1,
- friend_delete => 2,
- list_add => 3,
- list_update => 4,
- list_join => 5,
- list_leave => 6,
- lists_get => 7,
- lists_get_other => 8,
- list_items_get => 9,
- list_item_add => 10,
+ device_update => 1,
+ friend_add => 2,
+ friend_delete => 3,
+ list_add => 4,
+ list_update => 5,
+ list_join => 6,
+ list_leave => 7,
+ lists_get => 8,
+ lists_get_other => 9,
+ list_items_get => 10,
+ list_item_add => 11,
);
our @msg_str = (
'device_add',
+ 'device_update',
'friend_add',
'friend_delete',
'list_add',
@@ -32,6 +34,7 @@ our @msg_str = (
);
our @msg_func = (
\&msg_device_add,
+ \&msg_device_update,
\&msg_friend_add,
\&msg_friend_delete,
\&msg_list_add,
diff --git a/server/tests/zero_payload/server.log.good b/server/tests/zero_payload/server.log.good
@@ -1,6 +1,7 @@
new connection (pid = <digits>)
ssl ok, ver = 'TLSv1_2' cipher = 'ECDHE-RSA-AES128-SHA256'
device_add: bad request, missing key 'phone_number'
+device_update: bad request, missing key 'device_id'
friend_add: bad request, missing key 'device_id'
friend_delete: bad request, missing key 'device_id'
list_add: bad request, missing key 'device_id'