Created
April 8, 2015 22:10
-
-
Save daluu/2d9dec72d0863f9ff5a7 to your computer and use it in GitHub Desktop.
Loads data from a URL in Adobe Illustrator, synchronously! (Uses Bridge behind the scenes)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BridgeTalk.prototype.sendSynch = function(timeout) { | |
var self = this; | |
self.onResult = function(res) { | |
this.result = res.body; | |
this.complete = true; | |
} | |
self.complete = false; | |
self.send(); | |
if (timeout) { | |
for (var i = 0; i < timeout; i++) { | |
BridgeTalk.pump(); // process any outstanding messages | |
if (!self.complete) { | |
$.sleep(1000); | |
} else { | |
break; | |
} | |
} | |
} | |
var res = self.result; | |
self.result = self.complete = self.onResult = undefined; | |
return res; | |
} | |
// for typos, provide an alias | |
BridgeTalk.prototype.sendSync = BridgeTalk.prototype.sendSynch; | |
function loadUrl(url, timeout) { | |
var bt = new BridgeTalk(); | |
bt.target = 'bridge'; | |
var httpTimeout = timeout; | |
var script = ''; | |
script += "if ( !ExternalObject.webaccesslib )\n"; | |
script += " ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');\n"; | |
script += "var response = null;\n"; | |
script += "var retry = true;\n"; | |
script += "while (retry) {\n"; | |
script += " var http = new HttpConnection('" + url + "') ; \n"; | |
script += " http.timeout = " + httpTimeout + ";\n"; | |
script += " http.execute() ;\n"; | |
script += " try{\n"; | |
script += " response = http.response;\n"; | |
script += " retry = false;\n"; | |
script += " } catch (e){\n"; | |
script += " BridgeTalk.bringToFront('bridge');\n"; | |
script += " if (!confirm('There was an error communicating with the server. Would you like to retry?'))\n"; | |
script += " retry = false;\n"; | |
script += " }\n"; | |
script += "}\n"; | |
script += "response;\n"; | |
bt.body = script; | |
return bt.sendSynch(timeout); | |
} | |
alert(loadUrl('http://rpc.geocoder.us/service/csv?address=1600+Pennsylvania+Ave,+Washington+DC',50)); |
This is pure gold, thank you.
Sadly, ExternalObject is not working in Bridge CC2017!
Looks awesome! So does this not work on CC2017?
Adobe said next release will have this issue fixed!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For asynchronous version, see https://gist.github.com/mericson/6509997