[dw-free] Implement getreadpage in the API
[commit: http://hg.dwscoalition.org/dw-free/rev/9204faa7f6ec]
http://bugs.dwscoalition.org/show_bug.cgi?id=4117
New API method "getreadpage" which accepts as arguments "itemshow", "skip".
"getfriendspage" now returns a message saying it's obsolete.
Patch by
fu.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=4117
New API method "getreadpage" which accepts as arguments "itemshow", "skip".
"getfriendspage" now returns a message saying it's obsolete.
Patch by
Files modified:
- cgi-bin/LJ/Protocol.pm
- t/protocol.t
--------------------------------------------------------------------------------
diff -r 1275d9db0266 -r 9204faa7f6ec cgi-bin/LJ/Protocol.pm
--- a/cgi-bin/LJ/Protocol.pm Thu Dec 29 18:45:32 2011 +0800
+++ b/cgi-bin/LJ/Protocol.pm Thu Dec 29 19:14:06 2011 +0800
@@ -196,6 +196,7 @@
if ($method eq "sessionexpire") { return sessionexpire(@args); }
if ($method eq "getusertags") { return getusertags(@args); }
if ($method eq "getfriendspage") { return getfriendspage(@args); }
+ if ($method eq "getreadpage") { return getreadpage(@args); }
if ($method eq "getinbox") { return getinbox(@args); }
if ($method eq "sendmessage") { return sendmessage(@args); }
if ($method eq "setmessageread") { return setmessageread(@args); }
@@ -252,6 +253,11 @@
sub getfriendspage
{
+ return fail( $_[1], 504, "Use 'getreadpage' instead." );
+}
+
+sub getreadpage
+{
my ($req, $err, $flags) = @_;
return undef unless authenticate($req, $err, $flags);
my $u = $flags->{'u'};
@@ -261,14 +267,14 @@
my $skip = (defined $req->{skip}) ? $req->{skip} : 0;
return fail($err, 209, "Bad skip value") if $skip ne int($skip ) or $skip < 0 or $skip > 100;
- my @entries = LJ::get_friend_items({
- 'u' => $u,
- 'userid' => $u->{'userid'},
- 'remote' => $u,
- 'itemshow' => $itemshow,
- 'skip' => $skip,
- 'dateformat' => 'S2',
- });
+ my @entries = $u->watch_items(
+ remote => $u,
+
+ itemshow => $itemshow,
+ skip => $skip,
+
+ dateformat => 'S2',
+ );
my @attrs = qw/subject_raw event_raw journalid posterid ditemid security/;
@@ -3385,6 +3391,9 @@
if ($req->{'mode'} eq "getfriendspage") {
return getfriendspage($req, $res, $flags);
}
+ if ($req->{'mode'} eq "getfriendspage") {
+ return getreadpage( $req, $res, $flags );
+ }
### unknown mode!
$res->{'success'} = "FAIL";
@@ -3393,7 +3402,7 @@
}
## flat wrapper
-sub getfriendspage
+sub getreadpage
{
my ($req, $res, $flags) = @_;
@@ -3424,6 +3433,37 @@
return 1;
}
+sub getreadpage
+{
+ my ($req, $res, $flags) = @_;
+
+ my $err = 0;
+ my $rq = upgrade_request($req);
+
+ my $rs = LJ::Protocol::do_request("getreadpage", $rq, \$err, $flags);
+ unless ($rs) {
+ $res->{'success'} = "FAIL";
+ $res->{'errmsg'} = LJ::Protocol::error_message($err);
+ return 0;
+ }
+
+ my $ect = 0;
+ foreach my $evt (@{$rs->{'entries'}}) {
+ $ect++;
+ foreach my $f (qw(subject_raw journalname journaltype postername postertype ditemid security)) {
+ if (defined $evt->{$f}) {
+ $res->{"entries_${ect}_$f"} = $evt->{$f};
+ }
+ }
+ $res->{"entries_${ect}_event"} = LJ::eurl($evt->{'event_raw'});
+ }
+
+ $res->{'entries_count'} = $ect;
+ $res->{'success'} = "OK";
+
+ return 1;
+}
+
## flat wrapper
sub login
{
diff -r 1275d9db0266 -r 9204faa7f6ec t/protocol.t
--- a/t/protocol.t Thu Dec 29 18:45:32 2011 +0800
+++ b/t/protocol.t Thu Dec 29 19:14:06 2011 +0800
@@ -3,7 +3,7 @@
use warnings;
use Test::More;
-plan tests => 237;
+plan tests => 246;
use lib "$ENV{LJHOME}/cgi-bin";
require 'ljlib.pl';
@@ -893,3 +893,56 @@
ok( $comment->journal->equals( $u2 ), "Check comment journal when posting to another journal" );
}
+note( "getfriendspage" );
+{
+ my $u = temp_user();
+ ( $res, $err ) = $do_request->( "getfriendspage",
+ username => $u->user
+ );
+
+ $check_err->( 504, "'getfriendspage' is deprecated." );
+}
+
+note( "getreadpage" );
+{
+ my $u1 = temp_user();
+ my $u2 = temp_user();
+
+ $u1->add_edge( $u2, watch => { nonotify => 1 } );
+ my $e1 = $u2->t_post_fake_entry( body => "entry 1 " . rand(), subject => "#1", );
+ my $e2 = $u2->t_post_fake_entry( body => "entry 2 " . rand(), subject => "#2", );
+ my $e3 = $u2->t_post_fake_entry( body => "entry 3 " . rand(), subject => "#3", );
+
+ my @entries;
+
+ # show everything
+ ( $res, $err ) = $do_request->( "getreadpage",
+ username => $u1->user,
+ );
+ @entries = @{$res->{entries}};
+ is( scalar @entries, 3, "3... 3 entries ah HA HA HA" );
+ is( $entries[0]->{subject_raw}, "#3" );
+ is( $entries[1]->{subject_raw}, "#2" );
+ is( $entries[2]->{subject_raw}, "#1" );
+
+
+ # limit to one item
+ ( $res, $err ) = $do_request->( "getreadpage",
+ username => $u1->user,
+ itemshow => 1,
+ );
+ @entries = @{$res->{entries}};
+ is( scalar @entries, 1, "we asked for one entry" );
+ is( $entries[0]->{subject_raw}, "#3" );
+
+ # limit to one, skip one
+ ( $res, $err ) = $do_request->( "getreadpage",
+ username => $u1->user,
+ itemshow => 1,
+ skip => 1,
+ );
+ @entries = @{$res->{entries}};
+ is( scalar @entries, 1, "we asked for one entry (skip back one)" );
+ is( $entries[0]->{subject_raw}, "#2" );
+
+}
--------------------------------------------------------------------------------
