Code Monkey home page Code Monkey logo

restful-bag-server's People

Contributors

acdha avatar edsu avatar escowles avatar mjgiarlo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

restful-bag-server's Issues

Commit return code

Can commit return a 200 iff a bag is complete and a 4XX code if not all files have been uploaded.

Validation History URI

In addition to the PUT method to start a manual validity check it might be worthwhile to take a hint from cijoe and have a uri for last full validity check, independent of specific job. So it would return:

  • 200 - OK (last check was successful)
  • 412 - PRECONDITION FAILED (like cijoe) or 500 error??

Could include last modified headers for when job was completed.

A payload could be retrieved with specific errors.

Modeling bag-info.txt

The BagIt Spec is a little unclear on bag-info.txt, but the most liberal interpretation allows for repeated fields and ordering being significant. The json map may not be the optimal representation for a bag-info.txt.

Manifest differences

Should a 400 return if manifests differ. What about re-ingesting manifests, or should that return a 409

Expanded commit testing

Here's the commit testing I am putting into my sample server:

  1. Ensure bagit and bag-info.txt exist and are parsable.
    • fail if any cannot be read
    • other tag files are not checked
  2. Compare all manifests to ensure they cover the same files
    • fail if there are any differences
  3. Test for existence of all files listed in manifests
    • fail on any missing
  4. Test for extraneous files
    • fail on existense.

Test suite

Build a test suite, possibly using the client library from #6, which validates expected behaviour particularly as regards the SHOULDs and MUSTs in the draft

Validation history detail

How much detail should we keep for the validation history? Do we want to consider a standard form for a report?

Versioning and GET/PUT

Possible option so that any specific versioning scheme is unimportant:

GET

  • always returns latest bag, dependable regardless what server supports
  • could potentially have tag file for version history which clients can ignore. those URI's would serve a conflict or 301 to preserve history as below.

PUT

  • 409 Conflict if versioning is not enable. Another possibility is 301 (Moved Permanently) which http spec states "If the server desires that the request be applied to a different URI, it MUST send a 301 (Moved Permanently) response" for PUT
  • 200 OK if versioning is enabled and successfully accepted

DELETE to /contents/data

Should the spec say anything about supporting DELETE to /contents/data prior to a commit? Mike Smorul raised this question at the 05-13-2011 telecon. The theory is that DELETE could be useful for interactive assembly of bags.

HSM use case

Much of the content at LC resides on an HSM. To get access to the content, it must be staged from tape to spinning disk. This will take an indeterminate amount of time. A mechanism should be specified for the server to indicate to client that content is not immediately available, but will be at some point in the future, and for the client to check when the content is available for retrieval.

delete individual files

DELETE is allowed for entire bags, what about individual tag files, data files, manifest files?

Small file transfer

How will bags of small files perform. Some concerns/options:

  1. keep-alive
  2. Option to stream a whole/partial bag as tgz/zip

Endpoint discovery

During the latest conference call, the question of endpoint discovery came up. We should consider exactly how people intend to use this protocol to determine whether we in fact do need a way to retrieve a list of endpoints and, if so, how that should work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.