You can also act against the REST API without an object XML payload at all 
to create an empty new object, via:

[your-host]:[port]/fedora/objects/[pid]

or

[your-host]:[port]/fedora/objects/new

and then populate it with datastreams via:

[your-host]:[port]/fedora/objects/[pid]/datastreams/[dsid]

See:

https://wiki.duraspace.org/display/FEDORA35/REST+API#RESTAPI-ingest

and

https://wiki.duraspace.org/display/FEDORA34/REST+API#RESTAPI-addDatastream

---
A. Soroka
Senior Engineer
Online Library Environment :: the University of Virginia Library

On Thu, 15 Dec 2011 15:32:02 +0000
  Swithun Crowe <c...@st-andrews.ac.uk> wrote:
> Hello
> 
> r> Do I need to send an FOXML file to accomplish an injest? 
> 
> It can be METS or Atom I think. I use METS 1.1.
> 
> Here is some PHP that works for me. I found that the CURLOPT_HTTPHEADERs 
> needed to be set, otherwise Fedora would not recognise the content of the 
> POST as being the XML it was looking for.
> 
> Authentication is done with CURLOPT_HTTPAUTH => CURLAUTH_BASIC and 
> CURLOPT_USERPWD => $fedoraUserPwd, where $fedoraUserPwd is 
> "userName:passWord".
> 
> If you use a self signed certificate, then you need to set 
> CURLOPT_SSL_VERIFYPEER to false.
> 
> Hope this helps.
> 
> Swithun.
> 
> <?php
> 
> $protocol = "https";
> $host = "my.fedora.host";
> $port = 443;
> $context = "fedora";
> 
> $fedoraUserPwd = "fedoraAdmin:topsecret"; // username:password
> $fedoraVerifyPeer = false; // false for ignoring self signed certificates
> 
> $pid = "my_prefix:my_pid";
> $fileName = "test.xml";
> 
> $xml = file_get_contents($fileName);
> 
> // probably don't need most of these
> $queryArgs = array("label" => "A committee appointed for controverted 
>elections",
>        "format" => "info:fedora/fedora-system:METSFedoraExt-1.1",
>        "encoding" => "UTF-8",
>        "namespace" => "my_prfefix",
>        "ownerID" => "fedoraAdmin",
>        "logMessage" => "test ingest");
> 
> // generate URL, encoding query string
> $url = sprintf("%s://%s:%d/%s/objects/%s?%s",
>        $protocol,
>        $host,
>        $port,
>        $context,
>        $pid,
>        http_build_query($queryArgs));
> 
> // this seems to be vital for getting Fedora to recognise the POST content
> $headers = array("Accept: text/xml", "Content-Type: text/xml");
> 
> $curl_opts = array(CURLOPT_RETURNTRANSFER => true, 
>        CURLOPT_URL => $url,
>        CURLOPT_HTTPHEADER => $headers,
>        CURLOPT_USERPWD => $fedoraUserPwd,
>        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
>        CURLOPT_SSL_VERIFYPEER => $fedoraVerifyPeer,
>        CURLOPT_POST => true,
>        CURLOPT_POSTFIELDS => $xml);
> 
> $ch = curl_init();
> curl_setopt_array($ch, $curl_opts);
> $pid =  curl_exec($ch); // get new PID returned
> 
> print $pid . "\n";
> 
> ?>
> 
> -- 
> The University of St Andrews is a charity registered in Scotland: SC013532
> 
> ------------------------------------------------------------------------------
> 10 Tips for Better Server Consolidation
> Server virtualization is being driven by many needs.  
> But none more important than the need to reduce IT complexity 
> while improving strategic productivity.  Learn More! 
> http://www.accelacomm.com/jaw/sdnl/114/51507609/
> _______________________________________________
>Fedora-commons-users mailing list
>Fedora-commons-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users


------------------------------------------------------------------------------
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
_______________________________________________
Fedora-commons-users mailing list
Fedora-commons-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to