Case Insensitive QBO URLs

posted Dec 11, 2018, 10:47 AM by Eric Patrick   [ updated Jan 11, 2019, 1:02 PM ]
QBO has been updated to support cases insensitive URLs and parameters. While not a breaking change, the change is deep enough that it includes a feature switch to enable/disable the functionality: qbo.Application.Properties.Settings.CaseSensitiveMethodSignature, which defaults to false.

To leverage the feature switch, instead of calling:

new Dictionary<string, object>()
code should instead call:

new Parameters()

The Parameters class constructor sets the StringComparer based on the CaseSensitiveMethodSignature. Beyond that, the functionality is equivalent to IDictionary<string, object>.

The changes to enable this include:
  • Created application setting CaseSensitiveMethodSignatures, defaults to true
  • Introduced a Parameters: Dictionary<string, object> that sets case sensitivity based on CaseSensitiveMethodSignatures
  • Introduced IConfigurationName for configuration elements that implement Name properties
  • DbConfigurationElementCollection: this[string name] will resolve names in a case insensitive format for IConfigurationName items
  • AbstractObject: new Dictionary<string, object> => new Parameters()
  • Decorated several configuration classes with IConfigurationName
  • Updated Functions to handle type resolution of Parameters correctly
  • Created IgnoreCaseFacts test
  • Added code to abide by Accept headers for Output
  • Updated other tests as needed to correct bugs in the test code.