add sourceforge hack workaround to get task. It checks for a particular response from sourceforge and uses a different pattern as the redirect URL
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/52759fd9 Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/52759fd9 Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/52759fd9 Branch: refs/heads/master Commit: 52759fd93a664676b149b77e57ddbfaa824e579d Parents: 3ed1b4f Author: Alex Harui <[email protected]> Authored: Tue Oct 21 12:35:31 2014 -0700 Committer: Alex Harui <[email protected]> Committed: Tue Oct 21 12:35:31 2014 -0700 ---------------------------------------------------------------------- ant_on_air/src/org/apache/flex/ant/tags/Get.as | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/52759fd9/ant_on_air/src/org/apache/flex/ant/tags/Get.as ---------------------------------------------------------------------- diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Get.as b/ant_on_air/src/org/apache/flex/ant/tags/Get.as index 3a006cc..bf0f549 100644 --- a/ant_on_air/src/org/apache/flex/ant/tags/Get.as +++ b/ant_on_air/src/org/apache/flex/ant/tags/Get.as @@ -47,6 +47,11 @@ package org.apache.flex.ant.tags Ant.antTagProcessors["get"] = Get; } + private static const DOWNLOADS_SOURCEFORGE_NET = "http://downloads.sourceforge.net/"; + private static const SOURCEFORGE_NET = "http://sourceforge.net/"; + private static const DL_SOURCEFORGE_NET = ".dl.sourceforge.net/"; + private static const USE_MIRROR = "use_mirror="; + public function Get() { super(); @@ -94,6 +99,7 @@ package org.apache.flex.ant.tags var actualSrc:String = src; var urlRequest:URLRequest = new URLRequest(actualSrc); urlRequest.followRedirects = false; + urlRequest.manageCookies = false; urlRequest.userAgent = "Java"; // required to get sourceforge redirects to do the right thing urlLoader = new URLLoader(); urlLoader.load(urlRequest); @@ -132,10 +138,24 @@ package org.apache.flex.ant.tags } if (newlocation) { + var srcIndex:int = src.indexOf(DOWNLOADS_SOURCEFORGE_NET); + var sfIndex:int = newlocation.indexOf(SOURCEFORGE_NET); + var mirrorIndex:int = newlocation.indexOf(USE_MIRROR); + if (srcIndex == 0 && sfIndex == 0 && mirrorIndex != -1 && event.status == 307) + { + // SourceForge redirects AIR requests differently from Ant requests. + // We can't control some of the additional headers that are sent + // but that appears to make the difference. Just pick out the + // mirror and use it against dl.sourceforge.net + var mirror:String = newlocation.substring(mirrorIndex + USE_MIRROR.length); + newlocation = "http://" + mirror + DL_SOURCEFORGE_NET; + newlocation += src.substring(DOWNLOADS_SOURCEFORGE_NET.length); + } ant.output(ant.formatOutput("get", "Redirected to: " + newlocation)); var urlRequest:URLRequest = new URLRequest(newlocation); var refHeader:URLRequestHeader = new URLRequestHeader("Referer", src); urlRequest.requestHeaders.push(refHeader); + urlRequest.manageCookies = false; urlRequest.followRedirects = false; urlRequest.userAgent = "Java"; // required to get sourceforge redirects to do the right thing urlLoader = new URLLoader();
