[EP-tech] Re: SWORD Endpoint

Ian Stuart Ian.Stuart at ed.ac.uk
Tue Oct 9 15:49:19 BST 2012

On 09/10/12 15:12, Harry Newton wrote:
> Hi,
> I have a question about depositing into ePrints via SWORD.
> I have a php library to get the service document, then attempt to deposit a file. However, the service document always returns 401 unauthorised. This is even though I'm passing the username and password.
> As for depositing, I am unsure of the url I should be depositing to. I understand it is my ePrints host, but what would the rest of the URL be? For example, the service document is <eprints>/sword-app/servicedocument. I just need to know how to deposit for a specific ePrint of a specific user.

You want some code something like:

my $username = "user1"; # to be defined
my $password = "topSecret"; # to be defined
my $host     = "my.server.example.com";
my $endpoint = "sword-app/deposit";
my $collection = "archive"; # could be "review" or "inbox"
my $url = "http://" . $username . ":" . $password . "@"
                     . $host . "/" . $endpoint . "/" . $collection;

my $archive = read_file("$dirname/$zipfile", binmode => ':raw' ) or 
die('cant open input file');
   my $ua = LWP::UserAgent->new();
   my $req = HTTP::Request->new( POST => '' );
   $req->header( 'X-Packaging' => 'known_format',
                 'X-No-Op' => 'false',
                 'X-Verbose' => 'false',
                 'Content-Disposition' => "filename=$zipfile"
   $req->content_type( 'application/zip' );
   $req->content( $archive );
   my $res = $ua->request($req);	
   if ($res->is_success) {
         print "$zipfile deposited.\n";
   else { print "$zipfile - ".$res->status_line, "\n"; }

The challenge is knowing the string for "known_format" (and the 
servicedocument will tell you what the server will accept), and making 
the right metadata file in the .zip file.


Ian Stuart.
Developer: ORI, RJ-Broker, and OpenDepot.org
Bibliographics and Multimedia Service Delivery team,
The University of Edinburgh.


This email was sent via the University of Edinburgh.

The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

More information about the Eprints-tech mailing list