Difference between revisions of "EPrints4 Core Roadmap"

From EPrints Documentation
Jump to: navigation, search
(Created page with '=EPrints4 Core Development= Trying to divide the work into smaller tasks (and questions where relevant). ==Request Handler / Page Controllers== This deals with how HTTP reques…')
 
(Request Handler / Page Controllers)
Line 6: Line 6:
  
 
This deals with how HTTP requests are handled by EPrints: when a request is made by a client (curl, browser..) a number of headers/parameters must be processed (e.g. Accept, Content-Type, EPrints' cookies, auth etc). This is the entry point of any web requests to the system. The main module is EPrints::Apache::Handler (formerly known as Apache::Rewrite).
 
This deals with how HTTP requests are handled by EPrints: when a request is made by a client (curl, browser..) a number of headers/parameters must be processed (e.g. Accept, Content-Type, EPrints' cookies, auth etc). This is the entry point of any web requests to the system. The main module is EPrints::Apache::Handler (formerly known as Apache::Rewrite).
 +
 +
* Basic security aspects
 +
** detect invalid requests/URL paths (e.g. containing a dot '.')
  
 
* Low-level filters for processing of:
 
* Low-level filters for processing of:
Line 15: Line 18:
 
** Repository object init (with language selection, via cookie/default lang)
 
** Repository object init (with language selection, via cookie/default lang)
 
** Protocol (HTTP, HTTPS?)
 
** Protocol (HTTP, HTTPS?)
 
* Basic security aspects
 
** detect invalid requests/URL paths (e.g. containing a dot '.')
 
  
 
* Low-level redirects or custom actions via Trigger
 
* Low-level redirects or custom actions via Trigger
  
 
* Call for Controller(s) to handle the request (e.g. CRUD if /id/..., UI, storage (file delivery) etc.)
 
* Call for Controller(s) to handle the request (e.g. CRUD if /id/..., UI, storage (file delivery) etc.)
 +
 +
Filters must be called using Trigger(s) or similar mechanism to avoid having hard-coded modules in the Request handler. It is then easy to select, add, remove filters at run-time.

Revision as of 14:45, 6 February 2014

EPrints4 Core Development

Trying to divide the work into smaller tasks (and questions where relevant).

Request Handler / Page Controllers

This deals with how HTTP requests are handled by EPrints: when a request is made by a client (curl, browser..) a number of headers/parameters must be processed (e.g. Accept, Content-Type, EPrints' cookies, auth etc). This is the entry point of any web requests to the system. The main module is EPrints::Apache::Handler (formerly known as Apache::Rewrite).

  • Basic security aspects
    • detect invalid requests/URL paths (e.g. containing a dot '.')
  • Low-level filters for processing of:
    • Cookies (eprints_session, eprints_lang)
    • URL encoding
    • specific HTTP headers: Accept, Content-Type, Content-Length, Content-Range, Content-MD5 (?), ETag (?)
  • System initialisation:
    • Repository object init (with language selection, via cookie/default lang)
    • Protocol (HTTP, HTTPS?)
  • Low-level redirects or custom actions via Trigger
  • Call for Controller(s) to handle the request (e.g. CRUD if /id/..., UI, storage (file delivery) etc.)

Filters must be called using Trigger(s) or similar mechanism to avoid having hard-coded modules in the Request handler. It is then easy to select, add, remove filters at run-time.