Skip to content

Latest commit

 

History

History
288 lines (279 loc) · 15.5 KB

TODO.md

File metadata and controls

288 lines (279 loc) · 15.5 KB

Ever growing list of ideas and thoughts howto improve and extend PSX. Topics which are likely to be implemented are moved to a seperate github issue

1.x

  • Better support for conditional requests E-Tag, If-Match etc.
  • Think about support for OData
  • Add Swagger2 support #11
  • Add GraphQL parser to generate a schema based on a GraphQL string #12
  • Option to setup global middlewares inside the configuration.php which are loaded for all controllers. Maybe we can specifiy pre and post controller middlewares #15
  • Add http interceptor handler and method to add global default headers i.e. a user agent header (these can be overriden by a specific set header)
  • Add more http methods to controller abstract / schema api
    • Support http method PATCH. Json patch format (rfc6902) is already implemented in #13
  • Add proxy controller which can be used to fix the WSDL dynmaic part problem. The proxy controller redirects calls to other controllers. Probably also useful for OData
  • Use DateTimeImmutable if we are dropping support for 5.4 and require at least 5.5
  • Schema html writer array constraints are not listed, only the constraints of the prototype element
  • Evaluate again whether to use psr7. Probably wait to see adoption, immutability is still a problem
  • Improve OAuth2 support #7
  • Add host-meta controller to expose specific API services #5
  • Create controller which generates a text/uri-list #4
  • Consider use of JAX-RS annotations to provide meta informations for a controller #3
  • Add WADL generator #2
  • Extend schema representation
    • Add schema property default value option
    • PSX schema add support for object choice for a key (json schema: oneOf, xsd:choice)
    • Add possibility to add a wildcard type in a schema which allows arbitrary subtypes where we dont know the structure i.e. config (Is this a good idea?)
  • Add commands which generate php code
    • Add command to generate an API endpoint based on a RAML file
    • Add command to generate a PHP schema based on a json schema
  • Add command to generate a json schema from a schema
  • Add command to generate client code based on the API definition. Probably this should be done in another project and based on a RAML/jsonschema spec
  • Add template helper which simplifies working with a HATEOAS array. You can get a title or href by rel. Probably not needed since in almost every case we render HATEOAS arrays through a data and not a template writer #6
  • Add event listener to table manager so that we can fire an event everytime a record gets created, updated or deleted
  • Possibility to describe in an API that authentication is required. Probably also what kind basic, oauth, etc
    • Check how this is done in various specs like Swagger, RAML, etc.
  • Schema generation
    • Probably add json schema importer command to create a PHP schema based on the given json schema
    • Add generator to generate a php schema class from a xsd or json schema definition
    • Create tool controller to create and export a schema. Should produce a json schema which can be imported by a command
    • Create command to create PHP source code based on a RAML spec. This could probably use the json schema generator to generate the schema class. So we could create a complete schema endpoint from the RAML spec
  • WSDL generation problem for routes with dynamic parts
  • We need two routes for the table schema controller for a better RESTful urls i.e. /foo to get a collection /foo/1 for a specific entry
    • This requires that we need some way to describe the needed routes for a controller. Or we add multiple routes which point to the controller
  • Add ANY request method in router
  • Consider use Stash as caching library if PSR is ready
  • Evaluate whether we could build a RDF writer
  • Add verify method to psx sql condition to verify conditions against an array
  • Option to set a custom record class in table abstract
  • Implement filters
  • Better symfony integration
    • Add PSX symfony bundle
    • Add SymfonyControllerExecutor to execute a symfony controller from PSX
  • Probably implement http://www.w3.org/TR/xmldsig-core/
  • Probably replace all generic exceptions (RuntimeException, InvalidArgumentException, etc..) with PSX specific exceptions
  • Follow the json-ld / hydra spec (http://www.hydra-cg.com/) and see whether we should add support for it
  • Test and handle file uploads

2.x

  • Think about moving from a monolith repo into multiple packages. There are some components which might be useful withput psx i.e. data, schema

Meta

  • Update github readme, more getting started instructions etc.
  • Add hyperlink vs specification API to the documentation
  • Write in doc about data vs document oriented aka data writer vs template writer
  • Improve global exception messages so that we have the same kind of wording
  • For version 1.0 implement http://www.techempower.com/benchmarks
  • Add win ci (http://www.appveyor.com/)

Archive

  • Rename object to something else since object is a keyword in php7
  • Accessor work with / insteadof . as seperator
  • Build on validator and remove Record/Array validator which can handle all nested types stdClass/array/RecordInterface and which also allows to specify paths i.e. /foo/bar for a property
    • Allow validator to specifiy widl card in path i.e. /entry/*/title. So we can match i.e. entries inside an array
  • Schema html renderer, schema property which was referenced was not rendered
  • Add schema "any" element which behaves like an array but as object with arbitrary keys
  • Add class to apply a JSON patch format on an object structure
  • Add API test case for choice property type
  • Probably add XML-RPC protocol reader/writer visitor. (XML-RPC is really outdated since we already have SOAP its maybe not needed)
  • Probably rename Context::KEY_* to PSX_*
  • Add writer test with empty records
  • Probably use readthedocs.org for documentation hosting
  • Add security disclosure link to website (PSR-9)
  • Add commands which generate different formats
    • Add command to generate a raml definition from a documented API
  • Additional parsing commands
    • Add command which parses a json schema file and display what PSX could understand. Useful for debugging
    • Add command which parses a raml file and display what PSX could understand. Useful for debugging
  • If 1.0 is released create 1.x branch
  • Register PSX at http://www.programmableweb.com/
  • Possibility to throw an exception which has a response record attached which gets displayed to the user. We dont want do that since this could be abused as normal output channel
  • Add PSX value objects probably in seperate folder/package there we can have Uri, Url, Urn, DateTime, Cookie, MediaType and maybe add new types Date and Time. Also the Property* objects are kind of value objects Value objects were unified
  • The exception controller must have the same supported writers as the
    origin controller
  • Add begin/cancel/rollback transaction methods to TableManager. Probably add method which takes a Closure where the code is executed in a transaction
  • check "Invalid url syntax" exception whenn calling urls i.e. http://127.0.0.1/projects/comparabl/public/?project=symfony%2Fsymfony&source=1&destination=2
  • Check whether we produce the right format for html/svg etc. on an exception. Probably force same format from controller for error response
  • When passing a custom Accept header containing a version i.e. application/vnd.foobar.v2+json check whether the +[format] is considered
  • Fix correct handling with Accept: text/foo header (If the accept header is not known we serve as fallback json)
  • Move todo and bugs to github
  • When using raml/json schema for resource description their are some limitations
    • We can not use all property types i.e. date time
    • We can not reference other schemas within a schema
  • Add query parameters to documentation
  • Add support for jsonx http://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonxconversionrules.html
  • Solve fallback template html vs svg problem
  • Make protocol optional in "psx_url" and use $_SERVER['HTTPS'] to determine protocol
  • Add buffered stream to read multiple times from read-only stream
  • Change license to Apache License 2
  • Check whether query parameters are transmitted when sending a http request probably we need a method which returns us [path] + [query] ~ [fragment]
  • Problem schema type XSD writer property can not have same names. Either throw an exception or make it work
  • Rename getChild in Schema to getProperty etc. (renamed to get)
  • Add RAML export to documentation controller
  • Use DBAL query builder in MysqlDescribe and Session\Handler\Sql
  • Think about return a plain array for sql table so that the result is more light and can be used in CurveArray
  • Write errors to log when in production mode
  • Fix RecordStore references
  • probably add cache controller which does caching through http around a haevy task
  • Pubsubhubbub provider implementation (moved to psx-ws)
  • Update pshb subscriber to 0.4 spec (moved to psx-ws)
  • Implement webfinger provider serving XML (XRD) and JSON (JRD) http://tools.ietf.org/html/draft-jones-appsawg-webfinger-03 (moved to psx-ws)
  • Implement foaf, activity streams, microformat parser (moved to psx-ws)
  • Implement OpenId connect based on Oauth 2.0 (moved to psx-ws)
  • Test webfinger and XRDS with OpenId and update HostMeta to extend XRD (moved to psx-ws)
  • Implement openid connect basic (http://openid.net/specs/openid-connect-basic-1_0-28.html) (moved to psx-ws)
  • Update XRD classes using DomDocument according to http://docs.oasis-open.org/xri/xrd/v1.0/os/xrd-1.0-os.html (moved to psx-ws)
  • Add XRDS class using old XRD class see http://yadis.org/wiki/Yadis_1.0_%28HTML%29 (moved to psx-ws)
  • Use entity manager in entity importer
  • Add help command which displays all needed settings for a command
  • Remove calls to deprecated methods from the location object
  • Update JWT to current spec
  • Oauth filter only for specific request methods
  • Add cache filter or/and response cache which simply writes the response into a file using the psr cache
  • Create generate command which generate i.e. controller, commands, schema or other classes
  • Probably use willdurand/negotiation for content negotiation index,php and console.php- We have implemented a custom contnent negotiation rule since
  • Move html in its own repo
  • Move payment into own repo
  • Check if an exception gets thrown in a template that it gets correctly bubbeled to the user
  • Dependency tool controller
  • Probably add DI container in its own file which we can then include in the
  • Add event dispatcher to important places i.e. when a request arrives, when a route was found, etc. (event listener should not be able to modify the request or response only read)
  • Build commands using the symfony command system
  • Swagger generator controller
  • Update docblock using namespaces and update copyright
  • Test API status controller
  • Probably create xmlrpc or SOAP gateway
  • Howto handle API version managment
  • throw exception "response already writen" if setBody is called multiple times
  • setBody add serializer which extracts the fields from the properties of a normal object
  • Routes use ~/foo to set an alias for a specific path
  • Try to hackify PSX code using the hackificator.log
  • Type-Hint Psr\Http\StreamInterface
  • Implement Oauth 2.0 (consumer done so far)
  • Add paypal payment builder
  • Implement magicsig and salmon (replaced by JWT)
  • Add dynamic table wich uses describe to build a table class based on the table name
  • Add url resolver to resolve a href to a specific url
  • Add sitemap reader (add record importer wich can import sitemap data into a record collection)
  • Handler can define wich record class should be used (i.e. getRecordClass)
  • Allow _ underscore in resource path to prettify folder structure
  • Move setResponse from api to controller
  • Remove annotation parsing from the controller
  • Improved router
  • Add routing mechanism to template
  • Create video tutorial showcasing features of psx (update website)
  • Build rss and atom writer class wich is used in data writer methods
  • Try to use doctrine repository interface for handler
  • Update docblock of each class and remove revision tag
  • Implement namespaces
  • Add getter methods for acticity stream
  • Rewrite data system so that writers can be registered instead of being hardcoded in the factory
  • Add jsonp writer
  • Update webfinger to current spec http://www.rfc-editor.org/rfc/rfc7033.txt
  • Fix html filter iframe must closed with </iframe> and not <iframe />
  • Improve dependency managment we have an dependency bag where dependencies can be added this bag is injected into each module
  • Add swagger geenrator
  • Fix build scripts using git
  • Add continious integration (http://travis-ci.org)
  • Move from svn to git repo
  • Add session save path to session class. Probably set this default to PSX_PATH_CACHE
  • build psx package (http://packagist.org)
  • test paypal IPN endpoint and implement express checkout
  • Add setter methods for opensocial records
  • Add HTTP_HeadRequest class
  • write better and more complex tests
  • build XRDS component srv class wich is used by opensocial and maybe oauth
    to declare their services
  • Add OpenSocial records
  • Fix Atum/Entry source attribute. source element contains complete feed without feed tag
  • SQL condition implement functions in parser
  • Oembed provider implementation
  • add webfinger library (host-meta, lrdd discovery)
  • update documentation to new coding standard
  • rewrite manual to version 0.3
  • replace the stream wrapper by a import function because this is not so error-prone
  • rewrite tests
  • implement a mechanism so that you cant call files directly i.e. check whether the const in_psx is set.
  • over write the X-Powered-By so that you are more anonymous and an attacker cant get your php version
  • replace the foreach loops in common.php by hardcode the values is faster
  • remove the ini.xml and hardcode the settings is faster
  • add component util/grid (data in table + sorting + grid) all without javascript
  • add component util/paging