Raj
Raj

Reputation: 177

Can I insert EDUPUB (like Zip file) in marklogic database through Rest API extension module

User will upload EDUPUB/Zip file from UI. We want to implement a REST api extension module to take EDUPUB/Zip file and ingest into a MarkLogic database. Does MarkLogic API api support this? Any suggestions?

I implemented the code below for extracting and uploading a EDUPUB/Zip file

xquery version "1.0-ml";
declare namespace zip="xdmp:zip";

declare function local:epubupload ($filepath as xs:string)
{
let $get_document :=xdmp:document-get($filepath)
let $get_uri := fn:document-uri($get_document)
let $get_document_uri := fn:concat($get_uri, "/")

let $get_collection := fn:tokenize($get_uri, "\\")[last()]
let $epub_extract := xdmp:zip-manifest($get_document)
for $each_file in $epub_extract/zip:part/text()
let $document_data := xdmp:zip-get($get_document, $each_file)
let $full_document_uri := fn:concat($get_document_uri, $each_file)
return xdmp:document-insert($full_document_uri, $document_data, (),    $get_collection)
};
local:epubupload("c:\data\sample.epub")

But for the REST api what is the parameter? And how to get whole file from user system?

Upvotes: 1

Views: 141

Answers (1)

If you are creating your own REST extension, then you can use the following pattern on the zip payload:

1 Iterate over the zip file using xdmp:zip-manifest
2 For each entry, use xdmp:zip-get to extract the file
3 Save it into MarkLogic via xdmp:document-insert

Depending on how you posted the content, xdmp:base64-decode may be part of your code to actually get to your zip file.

Upvotes: 2

Related Questions