Markers
Table of Contents
Client.php | 8 |
Encoder.php | 6 |
Helper/Charset.php | 9 |
Helper/Http.php | 1 |
Helper/Logger.php | 2 |
Helper/XMLParser.php | 9 |
PhpXmlRpc.php | 2 |
Request.php | 6 |
Response.php | 1 |
Server.php | 3 |
Value.php | 6 |
Wrapper.php | 28 |
Client.php
Type | Line | Description |
---|---|---|
TODO | 686 | check correctness of urlencoding cookie value (copied from php way of doing it, but php is generally sending response not requests. We do the opposite...) |
TODO | 686 | strip invalid chars from cookie name? As per RFC 6265, we should follow RFC 2616, Section 2.2 |
TODO | 686 | drop/rename $port parameter. Cookies are not isolated by port! |
TODO | 686 | feature-creep allow storing 'expires', 'secure', 'httponly' and 'samesite' cookie attributes (we could do as php, and allow $path to be an array of attributes...) |
TODO | 812 | allow throwing exceptions instead of returning responses in case of failed calls and/or Fault responses |
TODO | 812 | refactor: we now support many options besides connection timeout and http version to use. Why only privilege those? |
TODO | 1166 | the $path arg atm is ignored. What to do if it is != $this->path? |
TODO | 1250 | allow this method to either throw or return a Response, so that we can pass back to caller more info on errors |
Encoder.php
Type | Line | Description |
---|---|---|
TODO | 15 | implement an interface |
TODO | 15 | add class constants for the options values |
TODO | 293 | is this a good name/class for this method? It does something quite different from 'decode' after all (returning objects vs returns plain php values)... In fact, it belongs rather to a Parser class |
TODO | 293 | feature creep -- we should allow an option to return php native types instead of PhpXmlRpc objects instances |
TODO | 293 | feature creep -- allow source charset to be passed in as an option, in case the xml misses its declaration |
TODO | 293 | feature creep -- allow expected type (val/req/resp) to be passed in as an option |
Charset.php
Type | Line | Description |
---|---|---|
TODO | 12 | implement an interface |
TODO | 71 | add support for cp1252 as well as latin-2 .. latin-10 Optimization creep: instead of building all those tables on load, keep them ready-made php files which are not even included until needed |
TODO | 71 | should we add to the latin-1 table the characters from cp_1252 range, i.e. 128 to 159 ? Those will NOT be present in true ISO-8859-1, but will save the unwary windows user from sending junk (though no luck when receiving them...) Note also that, apparently, while 'ISO/IEC 8859-1' has no characters defined for bytes 128 to 159, IANA ISO-8859-1 does have well-defined 'C1' control codes for those - wikipedia's page on latin-1 says: "ISO-8859-1 is the IANA preferred name for this standard when supplemented with the C0 and C1 control codes from ISO/IEC 6429." Check what mbstring/iconv do by default with those? |
TODO | 145 | do a bit of basic benchmarking: strtr vs. str_replace, str_replace vs htmlspecialchars, hand-coded conversion vs mbstring when that is enabled |
TODO | 145 | make use of iconv when it is available and mbstring is not |
TODO | 145 | support aliases for charset names, eg ASCII, LATIN1, ISO-88591 (see f.e. polyfill-iconv for a list), but then take those into account as well in other methods, ie. isValidCharset) |
TODO | 145 | when converting to ASCII, allow to choose whether to escape the range 0-31,127 (non-print chars) or not |
TODO | 145 | allow picking different strategies to deal w. invalid chars? eg. source in latin-1 and chars 128-159 |
TODO | 145 | add support for escaping using CDATA sections? (add cdata start and end tokens, replace only ']]>' with ']]]]><![CDATA[>') |
Http.php
Type | Line | Description |
---|---|---|
TODO | 78 | if $debug is < 0, we could avoid populating 'raw_data' in the returned value - but that would be a weird API... (note that we still need to always have headers parsed for content charset) |
Logger.php
Type | Line | Description |
---|---|---|
TODO | 9 | implement an interface |
TODO | 9 | make constructor private to force users to go through `instance()` ? |
XMLParser.php
Type | Line | Description |
---|---|---|
TODO | 24 | implement an interface to allow for alternative implementations - make access to $_xh protected, return more high-level data structures - move the private parts of $_xh to the internal-use parsing-options config - add parseRequest, parseResponse, parseValue methods |
TODO | 24 | if iconv() or mb_string() are available, we could allow to convert the received xml to a custom charset encoding while parsing, which is faster than doing it later by going over the rebuilt data structure |
TODO | 24 | rename? This is an xml-rpc parser, not a generic xml parser... |
TODO | 154 | refactor? we could 1. return the parsed data structure, and 2. move $returnType and $accept into options |
TODO | 154 | feature-creep make it possible to pass in options overriding usage of PhpXmlRpc::$xmlrpc_XXX_format, so that parsing will be completely independent of global state. Note that it might incur a small perf hit... |
TODO | 888 | as of 2023, the relevant RFC for XML Media Types is now 7303, and for HTTP it is 9110. Check if the order of precedence implemented here is still correct |
TODO | 888 | explore usage of mb_http_input(): does it detect http headers + post data? if so, use it instead of hand-detection!!! |
TODO | 888 | feature-creep make it possible to pass in options overriding usage of PhpXmlRpc static variables, to make the method independent of global state |
TODO | 976 | rename to hasEncodingDeclaration |
PhpXmlRpc.php
Type | Line | Description |
---|---|---|
TODO | 305 | this function does not import back xmlrpc_valid_parents and xml_iso88591_Entities |
TODO | 170 | rename :'-( |
Request.php
Type | Line | Description |
---|---|---|
TODO | 25 | feature creep - add a protected $httpRequest member, in the same way the Response has one |
TODO | 201 | arsing Responses is not really the responsibility of the Request class. Maybe of the Client... |
TODO | 201 | feature creep - add a flag to disable trying to parse the http headers |
TODO | 229 | parsing Responses is not really the responsibility of the Request class. Maybe of the Client... |
TODO | 229 | what about only populating 'raw_data' in httpResponse when debug mode is > 0? |
TODO | 229 | feature creep - allow parsing data gotten from a stream pointer instead of a string: read it piecewise, looking first for separation between headers and body, then for charset indicators, server debug info and </methodResponse>. That would require a notable increase in code complexity... |
Response.php
Type | Line | Description |
---|---|---|
TODO | 58 | add check that $val / $fCode / $fString is of correct type? We could at least log a warning for fishy cases... NB: as of now we do not do it, since it might be either an xml-rpc value or a plain php val, or a complete xml chunk, depending on usage of Client::send() inside which the constructor is called. |
Server.php
Type | Line | Description |
---|---|---|
TODO | 466 | raise a warning if the user tries to register a 'system.' method |
TODO | 490 | raise a warning if the user tries to register a 'system.' method |
TODO | 52 | create class constants for these |
Value.php
Type | Line | Description |
---|---|---|
TODO | 123 | arguably, as we have addArray to add elements to an Array value, and addStruct to add elements to a Struct value, we should not allow this method to add values to an Array. The 'scalar' in the method name refers to the expected state of the target object, not to the type of $val. Also, this works differently from addScalar/addStruct in that, when adding an element to an array, it wraps it into a new Value |
TODO | 123 | rename? |
TODO | 182 | add some checking for $values to be an array of xml-rpc values? |
TODO | 182 | rename to addToArray? |
TODO | 213 | add some checking for $values to be an array of xml-rpc values? |
TODO | 213 | rename to addToStruct? |
Wrapper.php
Type | Line | Description |
---|---|---|
TODO | 22 | use some better templating system for code generation? |
TODO | 22 | implement method wrapping with preservation of php objs in calls |
TODO | 22 | add support for 'epivals' mode |
TODO | 22 | allow setting custom namespace for generated wrapping code |
TODO | 51 | support notation `something[]` as 'array' |
TODO | 51 | check if nil support is enabled when finding null |
TODO | 168 | decide how to deal with params passed by ref in function definition: bomb out or allow? |
TODO | 168 | finish using phpdoc info to build method sig if all params are named but out of order |
TODO | 168 | add a check for params of 'resource' type |
TODO | 168 | add some error logging when returning false? |
TODO | 168 | what to do when the PHP function returns NULL? We are currently returning an empty string value... |
TODO | 168 | add an option to suppress php warnings in invocation of user function, similar to server debug level 3? |
TODO | 168 | add a verbatim_object_copy parameter to allow avoiding usage the same obj instance? |
TODO | 168 | add an option to allow generated function to skip validation of number of parameters, as that is done by the server anyway |
TODO | 347 | support better docs with multiple types separated by pipes by creating multiple signatures (this is questionable, as it might produce a big matrix of possible signatures with many such occurrences) |
TODO | 418 | validate params? In theory all validation is left to the dispatch map... |
TODO | 418 | add support for $catchWarnings |
TODO | 640 | allow the generated function to be able to reuse an external Encoder instance instead of creating one on each invocation, for the case where all the generated functions will be saved as methods of a class |
TODO | 676 | php allows many more characters in identifiers than the xml-rpc spec does. We should make sure to replace those (while trying to make sure we are not running in collisions) |
TODO | 746 | allow caller to give us the method signature instead of querying for it, or just say 'skip it' |
TODO | 746 | if we can not retrieve method signature, create a php function with varargs |
TODO | 746 | if caller did not specify a specific sig, shall we support all of them? It might be hard (hence slow) to match based on type and number of arguments... |
TODO | 746 | when wrapping methods without obj rebuilding, use return_type = 'phpvals' (faster) |
TODO | 746 | allow creating functions which have an extra `$debug=0` parameter |
TODO | 862 | should we allow usage of parameter simple_client_copy to mean 'do not clone' in this case? |
TODO | 1102 | add support for anonymous classes in the 'buildIt' case for php > 7 |
TODO | 1102 | add method setDebug() to new class, to enable/disable debugging |
TODO | 1102 | optimization - move the generated Encoder instance to be a property of the created class, instead of creating it on every generated method invocation |