diff --git a/demos/wmts/README.md b/demos/wmts/README.md index ca13facd0..e7920811b 100644 --- a/demos/wmts/README.md +++ b/demos/wmts/README.md @@ -24,10 +24,6 @@ Layers are taken from a central Google Cloud Storage bucket To run this app, first create an App Engine application as per the Developer Docs instructions for [deploying an EE-based App Engine app][1]. -Note that the service account created in the "Set up credentials" step needs to -be registered with Earth Engine; one can only do this currently by emailing -`earthengine@google.com` for it to be added to the whitelist; in the future (Q1 -2020), this validation process will be more streamlined. ## Deploying diff --git a/demos/wmts/app.py b/demos/wmts/app.py index 8ac6f68e5..079591635 100644 --- a/demos/wmts/app.py +++ b/demos/wmts/app.py @@ -2,8 +2,6 @@ # Lint as: python3 """Handle the routing for the application.""" - -import cachetools import collections import json import os @@ -11,11 +9,11 @@ from xml.etree import ElementTree from absl import logging +import cachetools import cloudstorage as gcs import flask from flask import request from flask_wtf import csrf -import httplib import requests from google.appengine.api import app_identity @@ -49,8 +47,8 @@ def setup_ee(): """Sets up Earth Engine authentication.""" with open("privatekey.json") as keyfile: extracted_key_data = keyfile.read() - credentials = ee.ServiceAccountCredentials(config.EE_SERVICE_ACCOUNT, - key_data=extracted_key_data) + credentials = ee.ServiceAccountCredentials( + config.EE_SERVICE_ACCOUNT, key_data=extracted_key_data) ee.Initialize(credentials) @@ -64,14 +62,14 @@ def restrict_frames(response): def csrf_error(): return flask.make_response( flask.jsonify(error="CSRF token is expired; please refresh the page."), - httplib.BAD_REQUEST) + 400) -@server.errorhandler(httplib.BAD_REQUEST) +@server.errorhandler(400) def bad_request(error): return flask.make_response( flask.jsonify(error=error.description), - httplib.BAD_REQUEST) + 400) def _getint(d, key, default=None): diff --git a/javascript/build/ee_api_js.js b/javascript/build/ee_api_js.js index b278822ca..a1388eaf5 100644 --- a/javascript/build/ee_api_js.js +++ b/javascript/build/ee_api_js.js @@ -3,431 +3,428 @@ Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ -var k,aa=function(a){var b=0;return function(){return b=e}}); -ea("String.prototype.startsWith",function(a){return a?a:function(b,c){var d=oa(this,b,"startsWith");b+="";var e=d.length,f=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var g=0;g=f}});ea("String.prototype.repeat",function(a){return a?a:function(b){var c=oa(this,null,"repeat");if(0>b||1342177279>>=1)c+=c;return d}}); -var pa=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},qa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;cc&&(c=Math.max(c+e,0));c>>0),Ba=0,Ea=function(a,b,c){return a.call.apply(a.bind,arguments)},Fa=function(a,b,c){if(!a)throw Error();if(2c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b|| -1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1},Va=Array.prototype.forEach?function(a,b,c){z(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;fb?null:"string"===typeof a?a.charAt(b):a[b]}function db(a,b){return 0<=Ta(a,b)}function eb(a){if(!Array.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0}function fb(a,b){b=Ta(a,b);var c;(c=0<=b)&&gb(a,b);return c}function gb(a,b){z(null!=a.length);Array.prototype.splice.call(a,b,1)} -function hb(a){return Array.prototype.concat.apply([],arguments)}function ib(a){var b=a.length;if(0=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)} -function lb(a){for(var b={},c=0,d=0;da-0)return[];for(var c=0;c/g,sb=/"/g,tb=/'/g,ub=/\x00/g,vb=/[\x00&<>"']/,wb=function(a,b){return ab?1:0};var xb;a:{var yb=r.navigator;if(yb){var zb=yb.userAgent;if(zb){xb=zb;break a}}xb=""}var Ab=function(a){return-1!=xb.indexOf(a)};var Bb=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)},Cb=function(a,b){var c={},d;for(d in a)b.call(void 0,a[d],d,a)&&(c[d]=a[d]);return c},Db=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d},Eb=function(a,b){for(var c in a)if(b.call(void 0,a[c],c,a))return!0;return!1},Fb=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b},Hb=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b},Ib=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1},Kb=function(a){var b= -Jb,c;for(c in b)if(a.call(void 0,b[c],c,b))return c},Lb=function(a){for(var b in a)return!1;return!0},Mb=function(a,b){b in a&&delete a[b]},Nb=function(a){var b={},c;for(c in a)b[c]=a[c];return b},Ob=function(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();var b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length),c;for(c in a)b[c]=Ob(a[c]);return b}, -Pb="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),Qb=function(a,b){for(var c,d,e=1;e"}else f=void 0===a?"undefined":null===a?"null":typeof a;Oa("Argument is not a %s (or a non-Element, non-Location mock); got: %s", -"HTMLScriptElement",f)}a.src=Zb(b);(b=a.ownerDocument&&a.ownerDocument.defaultView)&&b!=r?b=va(b.document):(null===ua&&(ua=va(r.document)),b=ua);b&&a.setAttribute("nonce",b)};var kc=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1")&&(a=a.replace(rb,">")),-1!=a.indexOf('"')&&(a=a.replace(sb,""")),-1!=a.indexOf("'")&&(a=a.replace(tb,"'")),-1!=a.indexOf("\x00")&&(a=a.replace(ub,"�")));return a},mc=function(a){var b=1;a= -a.split(":");for(var c=[];0parseFloat(xc)){wc=String(zc);break a}}wc=xc} -var Ac=wc,oc={},Bc=function(a){return pc(a,function(){for(var b=0,c=ob(String(Ac)).split("."),d=ob(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f=a.keyCode)a.keyCode=-1}catch(b){}};var Lc="closure_listenable_"+(1E6*Math.random()|0),Mc=function(a){return!(!a||!a[Lc])},Nc=0;var Oc=function(a,b,c,d,e){this.listener=a;this.Xd=null;this.src=b;this.type=c;this.capture=!!d;this.nb=e;this.key=++Nc;this.zc=this.zd=!1},Pc=function(a){a.zc=!0;a.listener=null;a.Xd=null;a.src=null;a.nb=null};var Qc=function(a){this.src=a;this.ba={};this.qd=0};Qc.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.ba[f];a||(a=this.ba[f]=[],this.qd++);var g=Rc(a,b,d,e);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.currentTarget;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;!b.bc&&0<=e;e--){b.currentTarget=d[e];var f=gd(d[e],a,!0,b);c=c&&f}for(e=0;!b.bc&&e>>0),Yc=function(a){z(a,"Listener can not be null.");if("function"===typeof a)return a;z(a.handleEvent,"An object listener must have handleEvent method.");a[hd]||(a[hd]=function(b){return a.handleEvent(b)});return a[hd]};var A=function(){y.call(this);this.Ha=new Qc(this);this.Ij=this;this.If=null};x(A,y);A.prototype[Lc]=!0;k=A.prototype;k.addEventListener=function(a,b,c,d){Xc(this,a,b,c,d)};k.removeEventListener=function(a,b,c,d){dd(this,a,b,c,d)}; -k.dispatchEvent=function(a){id(this);var b=this.If;if(b){var c=[];for(var d=1;b;b=b.If)c.push(b),z(1E3>++d,"infinite loop")}b=this.Ij;d=a.type||a;if("string"===typeof a)a=new Ja(a,b);else if(a instanceof Ja)a.target=a.target||b;else{var e=a;a=new Ja(d,b);Qb(a,e)}e=!0;if(c)for(var f=c.length-1;!a.bc&&0<=f;f--){var g=a.currentTarget=c[f];e=jd(g,d,!0,a)&&e}a.bc||(g=a.currentTarget=b,e=jd(g,d,!0,a)&&e,a.bc||(e=jd(g,d,!1,a)&&e));if(c)for(f=0;!a.bc&&f=a.length)throw kd;if(b in a)return a[b++];b++}};return c}throw Error("Not implemented");},nd=function(a,b){if(ya(a))try{Va(a,b,void 0)}catch(c){if(c!==kd)throw c;}else{a=md(a);try{for(;;)b.call(void 0,a.next(),void 0,a)}catch(c){if(c!==kd)throw c;}}};var od=function(a,b){this.l={};this.H=[];this.sd=this.J=0;var c=arguments.length;if(12*this.J&&pd(this),!0):!1};var pd=function(a){if(a.J!=a.H.length){for(var b=0,c=0;b=d.H.length)throw kd;var f=d.H[b++];return a?f:d.l[f]};return e};var qd=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var sd=function(a){if(a.M&&"function"==typeof a.M)a=a.M();else if(ya(a)||"string"===typeof a)a=a.length;else{var b=0,c;for(c in a)b++;a=b}return a},td=function(a){if(a.S&&"function"==typeof a.S)return a.S();if("string"===typeof a)return a.split("");if(ya(a)){for(var b=[],c=a.length,d=0;dc)return!1;!(b instanceof xd)&&5e&&(e+=d);return[a.dk,c,e,b.y].join("/")};Ad.prototype.Vc=function(){return this.Eb.length};var Cd=function(a){Ja.call(this,"tileevent");this.count=a};x(Cd,Ja);var Dd=function(){},Ed=new Dd;function Fd(a){return Object.assign({O:{},Fk:{},keys:[],Ba:{},s:{},K:{}},a)}var B=function(){this.a={}},E=function(a,b){return a.a.hasOwnProperty(b)?a.a[b]:null},F=function(a,b){return null!=a.a[b]};function Gd(a,b){return E(b,a)}function Hd(a,b,c){b[a]=c}function Id(){return{}}function Jd(a,b){var c=new a;return null==b?c:Kd(b,Ld,Md,Nd,a)}function Ld(a,b){return b[a]}function Md(a,b,c){b.a[a]=c} -function Nd(a){if(null==a)throw Error("Cannot deserialize, target constructor was null.");return new a} -function Kd(a,b,c,d,e){e=d(e);var f=Od(a,e),g=f.O||{},h=f.s||{},n=f.Ba||{},p={};f=m(f.keys||[]);for(var t=f.next();!t.done;p={Ic:p.Ic},t=f.next()){t=t.value;var C=b(t,a);if(null!=C){var D=void 0;g.hasOwnProperty(t)?D=Pd(C,b,c,d,!0,!0,g[t]):h.hasOwnProperty(t)?D=Pd(C,b,c,d,!1,!0,h[t]):n.hasOwnProperty(t)?(p.Ic=n[t],D=p.Ic.oa?C.map(function(ca){return function(Ca){return Qd(Ca,ca.Ic,b,c,d)}}(p)):Qd(C,p.Ic,b,c,d)):D=Array.isArray(C)?Pd(C,b,c,d,!0,!1):C instanceof Dd?null:C;c(t,e,D)}}return e} -function Qd(a,b,c,d,e){for(var f={},g=m(Object.keys(a)),h=g.next();!h.done;h=g.next()){h=h.value;var n=a[h];null!=n&&(f[h]=Pd(n,c,d,e,b.qa,b.pa,b.ia))}return f}function Pd(a,b,c,d,e,f,g){if(f&&null==g)throw Error("Cannot deserialize a reference object without a constructor.");return null==a?a:e&&f?a.map(function(h){return Kd(h,b,c,d,g)}):e&&!f?a.map(function(h){return h}):!e&&f?Kd(a,b,c,d,g):a instanceof Dd?null:"object"===typeof a?JSON.parse(JSON.stringify(a)):a} -function Od(a,b){if(b instanceof B)a=Fd(b.f());else if(a instanceof B)a=Fd(a.f());else throw Error("Cannot find ClassMetadata.");return a};var Rd=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^\\/?#]*)@)?([^\\/?#]*?)(?::([0-9]+))?(?=[\\/?#]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/,Sd=function(a,b){if(a){a=a.split("&");for(var c=0;cb)throw Error("Bad port number "+b);a.yc=b}else a.yc=null};Td.prototype.getPath=function(){return this.ob};Td.prototype.setPath=function(a,b){Vd(this);this.ob=b?Yd(a,!0):a;return this};var Xd=function(a,b,c){Vd(a);b instanceof Zd?(a.Ca=b,a.Ca.Wf(a.za)):(c||(b=$d(b,fe)),a.Ca=new Zd(b,a.za))};Td.prototype.getQuery=function(){return this.Ca.toString()}; -Td.prototype.removeParameter=function(a){Vd(this);this.Ca.remove(a);return this};var Vd=function(a){if(a.$j)throw Error("Tried to modify a read-only Uri");};Td.prototype.Wf=function(a){this.za=a;this.Ca&&this.Ca.Wf(a)}; -var ge=function(a){return a instanceof Td?a.clone():new Td(a,void 0)},Yd=function(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""},$d=function(a,b,c){return"string"===typeof a?(a=encodeURI(a).replace(b,he),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null},he=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)},ae=/[#\/\?@]/g,ce=/[#\?:]/g,be=/[#\?]/g,fe=/[#\?@]/g,de=/#/g,Zd=function(a,b){this.J=this.N=null;this.ua=a||null;this.za=!!b}, -ie=function(a){a.N||(a.N=new od,a.J=0,a.ua&&Sd(a.ua,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))};k=Zd.prototype;k.M=function(){ie(this);return this.J};k.add=function(a,b){ie(this);this.ua=null;a=je(this,a);var c=this.N.get(a);c||this.N.set(a,c=[]);c.push(b);this.J=Pa(this.J)+1;return this};k.remove=function(a){ie(this);a=je(this,a);return this.N.wb(a)?(this.ua=null,this.J=Pa(this.J)-this.N.get(a).length,this.N.remove(a)):!1};k.clear=function(){this.N=this.ua=null;this.J=0}; -k.isEmpty=function(){ie(this);return 0==this.J};k.wb=function(a){ie(this);a=je(this,a);return this.N.wb(a)};k.Oc=function(a){var b=this.S();return db(b,a)};k.forEach=function(a,b){ie(this);this.N.forEach(function(c,d){Va(c,function(e){a.call(b,e,d,this)},this)},this)};k.Ka=function(){ie(this);for(var a=this.N.S(),b=this.N.Ka(),c=[],d=0;d