Changeset 54

Show
Ignore:
Timestamp:
02/17/06 18:32:59 (3 years ago)
Author:
miya
Message:

support POST method

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • atom_client/trunk/lib/AtomClient.pm

    r53 r54  
    2424 
    2525    my $method = $method_map{$c->req->param('request_method')}; 
     26 
    2627    my $api = My::XML::Atom::Client->new; 
    2728    $api->username($c->req->param('username')); 
    2829    $api->password($c->req->param('password')); 
    2930 
    30     my ($feed, $request, $response) = $api->$method($c->req->param('resource_uri')); 
     31    my $entry = XML::Atom::Feed->new(\$c->req->param('request_content')); 
     32    my ($feed, $request, $response) = $api->$method( $c->req->param('resource_uri'), $entry ); 
    3133 
    3234    ## リク゚スト冠
     
    3638        $c->stash->{request_header} .= $_ . ": " . $request->header($_) . "\n"; 
    3739    } 
     40    $c->stash->{request_content} .= $request->content; 
     41 
    3842    ## レスポンス冠
    3943容 
     
    4448    } 
    4549 
    46     $c->stash->{response_content} .= $feed->as_xml
     50    $c->stash->{response_content} .= $feed->as_xml if defined $feed
    4751} 
    4852 
  • atom_client/trunk/lib/My/XML/Atom/Client.pm

    r51 r54  
    2121} 
    2222 
     23sub createEntry { 
     24    my $client = shift; 
     25    my($uri, $entry) = @_; 
     26    return $client->error("Must pass a PostURI before posting") 
     27        unless $uri; 
     28    my $req = HTTP::Request->new(POST => $uri); 
     29    $req->content_type('application/x.atom+xml'); 
     30    my $xml = $entry->as_xml; 
     31    _utf8_off($xml); 
     32    $req->content_length(length $xml); 
     33    $req->content($xml); 
     34    my $res = $client->make_request($req); 
     35    #return $client->error("Error on POST $uri: " . $res->status_line) 
     36    #    unless $res->code == 201; 
     37    $res->header('Location') || 1; 
     38 
     39    return (undef, $req, $res); 
     40} 
     41 
     42sub _utf8_off { 
     43    if ($] >= 5.008) { 
     44        require Encode; 
     45        Encode::_utf8_off($_[0]); 
     46    } 
     47} 
     48 
    23491; 
  • atom_client/trunk/root/post.tt

    r49 r54  
    88<h3>content</h3> 
    99<pre id="request_content"> 
    10 [% request_content %] 
     10[% request_content | html %] 
    1111</pre> 
    1212