shlist

share and manage lists between multiple people
Log | Files | Refs

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:
Mandroid/shlist/app/src/main/java/drsocto/shlist/MsgTypes.java | 23++++++++++++-----------
Mgen_msgs.sh | 1+
Mios/shlist/MsgTypes.h | 23++++++++++++-----------
Mserver/msgs.pl | 25++++++++++++++-----------
Mserver/sl | 16++++++++++++++++
Mserver/tests/client.pm | 8++++++++
Aserver/tests/device_update/Makefile | 1+
Aserver/tests/device_update/server.log.good | 5+++++
Aserver/tests/device_update/test.pl | 7+++++++
Mserver/tests/msgs.pl | 25++++++++++++++-----------
Mserver/tests/zero_payload/server.log.good | 1+
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'