= Bitstorage API = See DomsFileHandling for how to work with files. == Bitstorage API == WSDL: [[attachment:Bitstorage.xml]] The following describes those methods of the Bitstorage API that may be called by the GUI. ==== uploadFile ==== Upload the provided file to the temporary area of bitstorage, giving it the provided file name. Return a bitstorage object, containing different characteristics about the uploaded file. The file is only uploaded to a temporary approve-area of the bitstorage, and needs to be approved by calling approveFile before it is actually moved to the permanent bitstorage. If you try to upload a file that is already there, it checks the provided md5 against the file of the file on the server. If they match, there is no upload, you just get the return about the file already there. If they do not match, an exception is thrown. Input parameters: * {{{String fileName}}} The filename to store the file by. * {{{URI localurl}}} The url to where the bitstorage webservice can get the file. * {{{String provided_md5}}} The locally generated md5sum of the file. Returns: * {{{BitstorageFile}}} A bitstorage object, detailing the characteritics and public url of the uploaded file. Data structure summarized below. Throws: * {{{RemoteException}}} If anything went wrong. * {{{CannotGetFile}}} If the service cannot get the file from the localurl. * {{{InvalidFileName}}} If the provided fileName is invalid. * {{{CannotStoreFile}}} If the service cannot store the file on the server. * {{{WrongChecksum}}} If the provided checksum does not match. * {{{CharacterizationFailed}}} If the characterization service failed somehow. * {{{DifferentFileWithThatNameExist}}} If there is already a file with that name, but a different checksum. ==== approveFile ==== Check the earlier uploaded file against the provided checksum, and if this succeeds, and possibly other criteria are met, move the file from the temporary area of bitstorage to the permanent bitstorage. If you call this method on an already approved file, with the correct checksum, nothing happens. If the checksum is wrong, you get an exception. Input parameters: * {{{URI fileurl}}} The url to the file (in bitstorage) * {{{String md5sum}}} The md5sum of the file Throws: * {{{RemoteException}}} If anything went wrong with the connection. * {{{UnknownURI}}} If the URI is not to this bitstorage. * {{{WrongChecksum}}} If the provided checksum match. * {{{CannotStoreFile}}} If the file cannot be stored in the permanent storage area or if the file is not available in the temporary area. ==== disapproveFile ==== Delete the named file from bitstorage. Only works for files that have not yet been approved. If the file is not in temporary bitstorage nothing happens. Input parameters: * {{{URI fileurl}}} The url to the file (in bitstorage). * {{{String md5sum}}} The md5sum of the file. Throws: * {{{RemoteException}}} If anything went wrong with the connection. * {{{UnknownURI}}} If the URI is not to this bitstorage. * {{{WrongChecksum}}} If the checksum does not match the file in temporary. ==== spaceLeft ==== Return the number of bytes left in bitstorage. Returns: * {{{long}}} The number of bytes left in bitstorage. Throws: * {{{RemoteException}}} If something unforseen broke while performing the request. === Data structures === ==== BitstorageFile ==== Returned by uploadFile. Contains the following public methods. * {{{URI getFileurl}}} * {{{String getFileName}}} * {{{byte[] getCharacterizationOutput}}} * {{{String getMd5CheckSum}}} * {{{String getPronomID}}} * {{{String getValidationStatus}}}