[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
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
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" ); + +} --------------------------------------------------------------------------------