from<T> static method
Implementation
static DataSourceHttp<T>? from<T>(Object? config) {
if (config == null) return null;
if (config is DataSourceHttp) return config as DataSourceHttp<T>;
if (config is String) {
config = parseJSON(config);
}
if (config is Map) {
config.removeWhere((key, value) => value == null);
var id = parseString(findKeyValue(config, ['id'], true));
String? domain;
String? name;
if (id != null) {
var parts = DataHandler.splitID(id);
if (parts != null) {
domain = parts[0];
name = parts[1];
}
}
domain = parseString(findKeyValue(config, ['domain'], true), domain);
name = parseString(findKeyValue(config, ['name'], true), name);
if (domain == null || name == null) return null;
var baseURL = parseString(findKeyValue(config, ['baseurl', 'url'], true));
if (baseURL != null) baseURL = resolveDataSourceBaseURL(baseURL);
var baseURLProxy =
parseString(findKeyValue(config, ['baseurlproxy', 'urlproxy'], true));
if (baseURLProxy != null) {
baseURLProxy = resolveDataSourceBaseURL(baseURLProxy);
}
var parameters =
findKeyValue(config, ['parameters', 'args', 'properties'], true);
var opGet = DataSourceOperationHttp.from(
findKeyValue(config, ['opGet', 'get'], true));
var opFind = DataSourceOperationHttp.from(
findKeyValue(config, ['opFind', 'find'], true));
var opFindByID = DataSourceOperationHttp.from(
findKeyValue(config, ['opFindByID', 'findByID'], true));
var opFindByIDRange = DataSourceOperationHttp.from(
findKeyValue(config, ['opFindByIDRange', 'findByIDRange'], true));
return DataSourceHttp(domain, name,
baseURL: baseURL,
baseURLProxy: baseURLProxy,
parameters: parameters,
opGet: opGet,
opFind: opFind,
opFindByID: opFindByID,
opFindByIDRange: opFindByIDRange);
}
return null;
}