Changeset 9129
- Timestamp:
- 04/08/08 18:15:58 (5 years ago)
- Location:
- lang/perl/Catalyst-Controller-Atompub/trunk
- Files:
-
- 2 modified
-
lib/Catalyst/Controller/Atompub/Collection.pm (modified) (5 diffs)
-
samples/MyBlog/t/01.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Catalyst-Controller-Atompub/trunk/lib/Catalyst/Controller/Atompub/Collection.pm
r9126 r9129 195 195 196 196 my ($uri) = $self->make_edit_uri($c) or return $self->error($c); 197 $entry = $self->_assign_ link_and_id($uri, $entry) or return $self->error($c);197 $entry = $self->_assign_uri_for_entry($c, $entry, $uri) or return $self->error($c); 198 198 199 199 $self->entry_resource->uri($uri); 200 200 } 201 201 else { 202 my($entry_uri, $media_uri) = $self->make_edit_uri($c, $media_type); 203 204 return $self->error($c, RC_BAD_REQUEST, 'No body') unless $c->req->body; 205 206 my $entry = $self->_create_media_link_entry($c, $entry_uri, $media_uri) 207 or return $self->error($c); 202 my $entry = $self->_create_media_link_entry($c) or return $self->error($c); 208 203 my $media = read_file($c->req->body, binmode => ':raw'); 209 204 210 205 $self->media_link_entry( Catalyst::Controller::Atompub::Collection::Resource->new({ 211 uri => $entry_uri,212 206 body => $entry, 213 207 }) ); 214 208 215 209 $self->media_resource( Catalyst::Controller::Atompub::Collection::Resource->new({ 216 uri => $media_uri,217 210 body => $media, 218 211 type => $media_type, 219 212 }) ); 213 214 my($entry_uri, $media_uri) = $self->make_edit_uri($c, $media_type) or return $self->error($c); 215 $entry = $self->_assign_uri_for_entry($c, $entry, $entry_uri, $media_uri) or return $self->error($c); 216 217 $self->media_link_entry->uri($entry_uri); 218 $self->media_resource->uri($media_uri); 219 220 return $self->error($c, RC_BAD_REQUEST, 'No body') unless $c->req->body; 220 221 } 221 222 … … 301 302 $media_type = media_type('entry'); 302 303 $body = $self->_fixup_entry($c) or return $self->error($c); 303 $body = $self->_assign_ link_and_id($uri, $body) or return $self->error($c);304 $body = $self->_assign_uri_for_entry($c, $body, $uri) or return $self->error($c); 304 305 } 305 306 else { … … 390 391 $entry->updated($self->edited->w3c) unless $entry->updated; 391 392 392 # $entry->id(_make_id($uri)) unless $entry->id;393 # $entry->edit_link($uri);394 # XXX check edit-media link395 396 393 if (!$entry->author) { 397 394 my $author = XML::Atom::Person->new; … … 408 405 } 409 406 410 sub _assign_link_and_id { 411 my($self, $uri, $entry) = @_; 412 $entry->id(_make_id($uri)) unless $entry->id; 413 $entry->edit_link($uri); 414 # XXX check edit-media link 407 sub _assign_uri_for_entry { 408 my($self, $c, $entry, $entry_uri, $media_uri) = @_; 409 $entry->id(_make_id($entry_uri)) unless $entry->id; 410 $entry->edit_link($entry_uri); 411 if ($media_uri) { 412 $entry->edit_media_link($media_uri); 413 unless ($entry->content) { 414 my $content = XML::Atom::Content->new; 415 $content->src($media_uri); 416 $content->type($c->req->content_type); 417 $entry->content($content); 418 } 419 } 415 420 $entry; 416 421 } … … 426 431 427 432 sub _create_media_link_entry { 428 my($self, $c, $entry_uri, $media_uri) = @_; 429 433 my($self, $c) = @_; 430 434 my $entry = XML::Atom::Entry->new; 431 432 435 $entry->edited($self->edited->w3c); 433 436 $entry->updated($self->edited->w3c) unless $entry->updated; 434 435 my $link = XML::Atom::Link->new;436 $link->rel('edit-media');437 $link->href($media_uri);438 $entry->add_link($link);439 440 $link = XML::Atom::Link->new;441 $link->rel('edit');442 $link->href($entry_uri);443 $entry->add_link($link);444 445 $entry->id($entry_uri);446 447 437 $entry->title(uri_unescape $c->req->slug || ''); 448 449 my $content = XML::Atom::Content->new;450 $content->src($media_uri);451 $content->type($c->req->content_type);452 $entry->content($content);453 454 438 $entry->summary(''); 455 456 439 $entry; 457 440 } -
lang/perl/Catalyst-Controller-Atompub/trunk/samples/MyBlog/t/01.t
r8804 r9129 138 138 ok $entry->edited; 139 139 ok $entry->updated; 140 is $entry->id, 'http://localhost:3000/mediacollection/media_1.atom';140 like $entry->id, qr{tag:localhost:3000,\d{4}-\d\d-\d\d:/mediacollection/media_1.atom}; 141 141 142 142 is $entry->edit_link, 'http://localhost:3000/mediacollection/media_1.atom';
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)