You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2025/05/05 21:54:42 UTC
(royale-asjs) 03/03: BE0011_Loading_external_data_through_HTTPService: option to load a mocked JSON response due to Content-Security-Policy restrictions
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 123426ce4fe0866e624945590676a5db3a18a9d3
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon May 5 14:54:23 2025 -0700
BE0011_Loading_external_data_through_HTTPService: option to load a mocked JSON response due to Content-Security-Policy restrictions
---
.../asconfig.json | 8 +++-
.../pom.xml | 46 +++++++++++++++++++++-
.../src/main/resources/mock-response.json | 19 +++++++++
..._Loading_external_data_through_HTTPService.mxml | 17 +++++++-
4 files changed, 87 insertions(+), 3 deletions(-)
diff --git a/examples/blog/BE0011_Loading_external_data_through_HTTPService/asconfig.json b/examples/blog/BE0011_Loading_external_data_through_HTTPService/asconfig.json
index 5eaca27075..2939addd1c 100644
--- a/examples/blog/BE0011_Loading_external_data_through_HTTPService/asconfig.json
+++ b/examples/blog/BE0011_Loading_external_data_through_HTTPService/asconfig.json
@@ -23,7 +23,13 @@
"targets": ["JSRoyale"],
"source-map": true,
"html-template": "src/main/resources/jewel-example-index-template.html",
- "theme": "${royalelib}/themes/JewelTheme/src/main/resources/defaults.css"
+ "theme": "${royalelib}/themes/JewelTheme/src/main/resources/defaults.css",
+ "define": [
+ {
+ "name": "CONFIG::MOCK_RESPONSE",
+ "value": false
+ }
+ ]
},
"copySourcePathAssets": true,
"additionalOptions": "-remove-circulars -js-output-optimization=skipAsCoercions",
diff --git a/examples/blog/BE0011_Loading_external_data_through_HTTPService/pom.xml b/examples/blog/BE0011_Loading_external_data_through_HTTPService/pom.xml
index fa007e94bf..bff998098b 100644
--- a/examples/blog/BE0011_Loading_external_data_through_HTTPService/pom.xml
+++ b/examples/blog/BE0011_Loading_external_data_through_HTTPService/pom.xml
@@ -43,9 +43,53 @@
<targets>${royale.targets}</targets>
<debug>false</debug>
<htmlTemplate>${basedir}/target/javascript/bin/js-debug/jewel-example-index-template.html</htmlTemplate>
- <additionalCompilerOptions>-source-map=true;-js-dynamic-access-unknown-members=true</additionalCompilerOptions>
+ <additionalCompilerOptions>
+ -source-map=true;
+ -js-dynamic-access-unknown-members=true;
+ -define+=CONFIG::MOCK_RESPONSE,false;
+ </additionalCompilerOptions>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <id>copy-resources-debug</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${compiler.output-dir-debug}</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-resources-release</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <!-- Copy the assets to the assets output directory -->
+ <outputDirectory>${compiler.output-dir-release}</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
diff --git a/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/resources/mock-response.json b/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/resources/mock-response.json
new file mode 100644
index 0000000000..edd4cb0eb6
--- /dev/null
+++ b/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/resources/mock-response.json
@@ -0,0 +1,19 @@
+{
+ "name": "BE0011_Loading_external_data_through_HTTPService.mxml",
+ "path": "examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml",
+ "sha": "dd2590eb3bbf27e69f1bcc0912295f067b3a5fc6",
+ "size": 3647,
+ "url": "https://api.github.com/repos/apache/royale-asjs/contents/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml?ref=develop",
+ "html_url": "https://github.com/apache/royale-asjs/blob/develop/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml",
+ "git_url": "https://api.github.com/repos/apache/royale-asjs/git/blobs/dd2590eb3bbf27e69f1bcc0912295f067b3a5fc6",
+ "download_url": "https://raw.githubusercontent.com/apache/royale-asjs/develop/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml",
+ "type": "file",
+ "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLQoK\nICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24g\nKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKICBjb250cmlidXRvciBsaWNlbnNl\nIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVk\nIHdpdGgKICB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24g\ncmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiAgVGhlIEFTRiBsaWNl\nbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z\nZSwgVmVyc2lvbiAyLjAKICAodGhlICJMaWNlbnNlIik7I [...]
+ "encoding": "base64",
+ "_links": {
+ "self": "https://api.github.com/repos/apache/royale-asjs/contents/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml?ref=develop",
+ "git": "https://api.github.com/repos/apache/royale-asjs/git/blobs/dd2590eb3bbf27e69f1bcc0912295f067b3a5fc6",
+ "html": "https://github.com/apache/royale-asjs/blob/develop/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml"
+ }
+ }
+
\ No newline at end of file
diff --git a/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml b/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml
index dd2590eb3b..1ec6d5f2d0 100644
--- a/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml
+++ b/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml
@@ -31,6 +31,22 @@
public function getGithubContent(event:MouseEvent):void
{
+ if (CONFIG::MOCK_RESPONSE)
+ {
+ // the ASF's servers are configured to block URL requests to
+ // external APIs, so to display a working version of this
+ // example on royale.apache.org, we load a JSON file that
+ // is also on royale.apache.org.
+ // this is still a valid demonstration of how to load data
+ // files in a Royale app using HTTPService.
+ service.sourceCodeUrl = "mock-response.json";
+ }
+ else
+ {
+ // however, if CONFIG::MOCK_RESPONSE is false, we can make
+ // a call to the real GitHub API
+ service.sourceCodeUrl = "https://api.github.com/repos/apache/royale-asjs/contents/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml";
+ }
service.getContent();
}
@@ -47,7 +63,6 @@
<fx:Declarations>
<services:GitHubService id="service"
- sourceCodeUrl="https://api.github.com/repos/apache/royale-asjs/contents/examples/blog/BE0011_Loading_external_data_through_HTTPService/src/main/royale/BE0011_Loading_external_data_through_HTTPService.mxml"
dataReady="dataReadyHandler(event)"/>
</fx:Declarations>