UNPKG

jaydata-reso

Version:

Jaydata fork for RESO Web API

55 lines (50 loc) 2.44 kB
$data.Class.define('$data.ArgumentBinder', null, null, { convert: function (name, options, request) { /// <signature> /// <summary>Request (GET) parameter resolver for create typed parameters</summary> /// <description>Request (GET) parameter resolver for create typed parameters</description> /// <param name="name" type="String">Name of parameter</param> /// <param name="options" type="Object">Config object with type property for a resolved type</param> /// <param name="request" type="Object">Request context</param> /// <returns type="object">options.type</returns> /// </signature> /// <signature> /// <summary>Request (GET) parameter resolver for create typed parameters</summary> /// <description>Request (GET) parameter resolver for create typed parameters</description> /// <param name="name" type="String">Name of parameter</param> /// <param name="options" type="Object">Config object with type property for a resolved type</param> /// <param name="request" type="Object">Request context</param> /// <returns type="String">If cannot convert</returns> /// </signature> var self = $data.ArgumentBinder._defaultBinder; var value = request.query[name]; if (options.type) { var type = Container.resolveType(options.type); var typeName = Container.resolveName(type); if (type && type.isAssignableTo && type.isAssignableTo($data.Entity)) { typeName = $data.Entity.fullName; } var converter = self.valueConverter.unescape[typeName]; value = converter ? converter(value, options) : value; converter = self.valueConverter.fromDb[typeName]; value = converter ? converter(value) : value; } return value; }, valueConverter: { value: $data.oDataConverter } }, { defaultBinder: { get: function () { if (!$data.ArgumentBinder._defaultBinder) { $data.ArgumentBinder._defaultBinder = new $data.ArgumentBinder(); } return $data.ArgumentBinder._defaultBinder.convert; }, set: function (value) { $data.ArgumentBinder._defaultBinder = value; } }, _defaultBinder: { value: null } });