-
Notifications
You must be signed in to change notification settings - Fork 2k
/
client.min.js
12 lines (12 loc) · 3.73 KB
/
client.min.js
1
2
3
4
5
6
7
8
9
10
11
12
(function(ckan,jQuery){function Client(options){this.endpoint=options&&options.endpoint||'';jQuery.proxyAll(this,/parse/);}
jQuery.extend(Client.prototype,{url:function(path){if(!(/^https?:\/\//i).test(path)){path=this.endpoint+'/'+encodeURI(path).replace(/^\//,'');}
return path;},call:function(type,path,data,fn,error){var url=this.url('/api/action/'+path);var error=(error=='undefined')?function(){}:error;var options={contentType:'application/json',url:url,dataType:'json',processData:false,success:fn,error:error};if(type=='POST'){options.type='POST';options.data=JSON.stringify(data);}else{options.type='GET';options.url+=data;}
jQuery.ajax(options);},getTemplate:function(filename,params,success,error){var url=this.url('/api/1/util/snippet/'+encodeURIComponent(filename));if(typeof params==='function'){error=success;success=params;params={};}
return jQuery.get(url,params||{}).then(success,error);},getLocaleData:function(locale,success,error){var url=this.url('/api/i18n/'+(locale||''));return jQuery.getJSON(url).then(success,error);},getCompletions:function(url,options,success,error){if(typeof options==='function'){error=success;success=options;options={};}
var formatter=options&&options.format||this.parseCompletions;var request=jQuery.ajax({url:this.url(url)});return request.pipe(formatter).promise(request).then(success,error);},parseCompletions:function(data,options){if(typeof data==='string'){return this.parsePackageCompletions(data,options);}
var map={};var raw=jQuery.isArray(data)?data:data.ResultSet&&data.ResultSet.Result||{};var items=jQuery.map(raw,function(item){item=typeof item==='string'?item:item.name||item.Name||item.Format||'';item=jQuery.trim(item);var lowercased=item.toLowerCase();var returnObject=options&&options.objects===true;if(lowercased&&!map[lowercased]){map[lowercased]=1;return returnObject?{id:item,text:item}:item;}
return null;});items=jQuery.grep(items,function(item){return item!==null;});return items;},parseCompletionsForPlugin:function(data){return{results:this.parseCompletions(data,{objects:true})};},parsePackageCompletions:function(string,options){var packages=jQuery.trim(string).split('\n');var parsed=[];return jQuery.map(packages,function(pkg){var parts=pkg.split('|');var id=jQuery.trim(parts.pop()||'');var text=jQuery.trim(parts.join('|')||'');return options&&options.objects===true?{id:id,text:text}:id;});},getStorageAuth:function(key,success,error){if(!key){throw new Error('Client#getStorageAuth() must be called with a key');}
return jQuery.ajax({url:this.url('/api/storage/auth/form/'+key),success:success,error:error});},getStorageMetadata:function(key,success,error){if(!key){throw new Error('Client#getStorageMetadata() must be called with a key');}
return jQuery.ajax({url:this.url('/api/storage/metadata/'+key),success:success,error:error});},convertStorageMetadataToResource:function(meta){var modified=new Date(this.normalizeTimestamp(meta._last_modified));var created=new Date(this.normalizeTimestamp(meta._creation_date));var createdISO=jQuery.date.toCKANString(created);var modifiedISO=jQuery.date.toCKANString(modified);var filename=meta['filename-original']||meta.key;var format=meta._format||filename.split('.').pop();var url=meta._location;if(url.indexOf('://')===-1){url=ckan.url(url);}
return{url:url,key:meta.key,name:filename,size:meta._content_length,created:createdISO,last_modified:modifiedISO,format:format,mimetype:meta._format||null,resource_type:'file.upload',owner:meta['uploaded-by'],hash:meta._checksum,cache_url:meta._location,cache_url_updated:modifiedISO};},normalizeTimestamp:function(string){var tz=/[+\-]\d{4}|Z/;if(!tz.test(string)){string+='Z';}
return string;}});ckan.sandbox.setup(function(instance){instance.client=new Client({endpoint:ckan.API_ROOT});});ckan.Client=Client;})(this.ckan,this.jQuery);