HISE Logo Forum
    • Categories
    • Register
    • Login

    Question about queued downloads from Amazon S3

    Scheduled Pinned Locked Moved Scripting
    50 Posts 4 Posters 2.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Dan KorneffD
      Dan Korneff @d.healey
      last edited by Dan Korneff

      @d-healey said in Question about queued downloads from Amazon S3:

      Set it to redirect otherwise all of the bandwidth runs through your server.

      Can you point me to some links about this? The Amazon S3 plugin documentation says:

      We do not recommend using the redirect method
      

      I just wanna make sure I'm doing the right thing here.

      Dan Korneff - Producer / Mixer / Audio Nerd

      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @Dan Korneff
        last edited by

        @Dan-Korneff Open a support ticket with WooCommerce and ask for clarification. If you don't redirect then (as far as I know) the bandwidth will go through your server which is not good (unless you have an unlimited bandwidth deal). Let me know what they say.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        Dan KorneffD 1 Reply Last reply Reply Quote 0
        • Dan KorneffD
          Dan Korneff @d.healey
          last edited by

          @d-healey You're right. I haven't heard from them yet, but I can definitely see my bandwidth usage go up when Redirect isn't used.

          Dan Korneff - Producer / Mixer / Audio Nerd

          1 Reply Last reply Reply Quote 0
          • Dan KorneffD
            Dan Korneff
            last edited by

            In the end, I just needed to run HISE as Administrator for the download to work properly.
            Thanks to @d-healey for the help!

            Dan Korneff - Producer / Mixer / Audio Nerd

            1 Reply Last reply Reply Quote 2
            • Dan KorneffD
              Dan Korneff
              last edited by

              Hey Guy,
              I'm getting back to my downloader and wanted to dig back in to downloading files hosted on Amazon S3 without routing through my website. To keep from using server bandwidth, I need to use the redirect method so the file is fetched directly from Amazon.

              My website supplies a link that looks like:

              "https://MyBucketName.s3.bucketRegion.amazonaws.com/myfile.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOMELONGSTRING%2BucketSTufff%2Fs3%2Faws4_request&X-Amz-Date=20220924T040013Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Signature=longstringwithnumbersandletters"
              

              The source code processes the link like this:

              var ScriptingApi::Server::downloadFile(String subURL, var parameters, var targetFile, var callback)
              {
              	if (auto sf = dynamic_cast<ScriptingObjects::ScriptFile*>(targetFile.getObject()))
              	{
              		if (subURL.contains("?") && parameters.getDynamicObject() != nullptr && parameters.getDynamicObject()->getProperties().isEmpty())
              		{
              			auto parameterObject = new DynamicObject();
              			auto realSubURL = subURL.upToFirstOccurrenceOf("?", false, false);
              			auto parameterString = subURL.fromFirstOccurrenceOf("?", false, false);
              			auto parameterObjects = StringArray::fromTokens(parameterString, "&", "");
              
              			for (auto po : parameterObjects)
              			{
              				auto key = po.upToFirstOccurrenceOf("=", false, false);
              				auto value = po.fromFirstOccurrenceOf("=", false, false);
              
              				if (!key.isEmpty() && !value.isEmpty())
              				{
              					parameterObject->setProperty(Identifier(key), var(value));
              				}
              			}
              
              			parameters = var(parameterObject);
              			subURL = realSubURL;
              		}
              
              		if (sf->f.isDirectory())
              		{
              			reportScriptError("target file is a directory");
              			return var();
              		}
              
              		auto urlToUse = getWithParameters(subURL, parameters);
              
              		if(urlToUse.isWellFormed())
              		{
              			ScriptingObjects::ScriptDownloadObject::Ptr p = new ScriptingObjects::ScriptDownloadObject(getScriptProcessor(), urlToUse, globalServer.getExtraHeader(), sf->f, callback);
              			return globalServer.addDownload(p);
              		}
              	}
              	else
              	{
              		reportScriptError("target file is not a file object");
              	}
              
              	return var();
              }
              

              if the URL contains a "?", it stores the info after that as parameterString.

              parameterString = X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOMELONGSTRING%2BucketSTufff%2Fs3%2Faws4_request&X-Amz-Date=20220924T040013Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Signature=longstringwithnumbersandletters;
              

              it then separates the string by "&" and stores the keys in parameterObjects:

              parameterObjects = [  X-Amz-Algorithm=AWS4-HMAC-SHA256,
                                    X-Amz-Credential=SOMELONGSTRING%2BucketSTufff%2Fs3%2Faws4_request,
                                    X-Amz-Date=20220924T040013Z,
                                    X-Amz-Expires=60,
                                    X-Amz-SignedHeaders=host,
                                    X-Amz-Signature=longstringwithnumbersandletters ]
              

              it then replaces "parameters" passed in the server call with parameterObjects and the sever call is actually paced with the extracted url and parameter object.

              urlToUse = getWithParameters(extracted url , extraced parameter Objects);
              

              If I enter the link directly in a browser, or if I separate all of the parameters and enter them in postman, the file downloads. No luck in HISE though. What's my next step to debug this?

              Dan Korneff - Producer / Mixer / Audio Nerd

              d.healeyD 1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey @Dan Korneff
                last edited by

                @Dan-Korneff I just use the URL WooCommerce provides with the Server.downloadFile() function. https://codeberg.org/LibreWave/Rhapsody/src/branch/main/Scripts/Downloader.js

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                Dan KorneffD 1 Reply Last reply Reply Quote 0
                • Dan KorneffD
                  Dan Korneff @d.healey
                  last edited by

                  @d-healey that does work on my end too, but the link provided by woocommerce funnels the transfer thru your site, which uses bandwidth.
                  Your download links look like this, right?
                  :
                  https://mywebsite.com/?download_file=productnumber&order=wc_order_ordernmber&email=me@myemail.com&key=some-long-key-1234

                  Dan Korneff - Producer / Mixer / Audio Nerd

                  d.healeyD 1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey @Dan Korneff
                    last edited by d.healey

                    @Dan-Korneff Yes, but I use the redirect method so my site redirects it to S3

                    Edit1: Actually, give me a moment and I'll check what the link looks like...

                    Edit 2: Yep that is exactly the same format.

                    Libre Wave - Freedom respecting instruments and effects
                    My Patreon - HISE tutorials
                    YouTube Channel - Public HISE tutorials

                    Dan KorneffD 1 Reply Last reply Reply Quote 0
                    • Dan KorneffD
                      Dan Korneff @d.healey
                      last edited by

                      @d-healey said in Question about queued downloads from Amazon S3:

                      Edit 2: Yep that is exactly the same format.

                      In that case, the file is stored on S3, but funnels through your site to deliver the file. Using bandwidth.

                      Dan Korneff - Producer / Mixer / Audio Nerd

                      d.healeyD DanHD 2 Replies Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @Dan Korneff
                        last edited by

                        @Dan-Korneff Oh I didn't realise!

                        How did you get this URL?

                        "https://MyBucketName.s3.bucketRegion.amazonaws.com/myfile.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOMELONGSTRING%2BucketSTufff%2Fs3%2Faws4_request&X-Amz-Date=20220924T040013Z&X-Amz-Expires=60&X-Amz-SignedHeaders=host&X-Amz-Signature=longstringwithnumbersandletters"

                        Isn't it risky to use a direct URL like that?

                        Libre Wave - Freedom respecting instruments and effects
                        My Patreon - HISE tutorials
                        YouTube Channel - Public HISE tutorials

                        Dan KorneffD 1 Reply Last reply Reply Quote 0
                        • DanHD
                          DanH @Dan Korneff
                          last edited by

                          @Dan-Korneff

                          In that case, the file is stored on S3, but funnels through your site to deliver the file. Using bandwidth.

                          is there a way around this in Woocomerce?

                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                          https://dhplugins.com/ | https://dcbreaks.com/
                          London, UK

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @DanH
                            last edited by

                            @DanH Not directly it seems, that's what Dan's trying to solve (and so am I now!).

                            Libre Wave - Freedom respecting instruments and effects
                            My Patreon - HISE tutorials
                            YouTube Channel - Public HISE tutorials

                            1 Reply Last reply Reply Quote 0
                            • Dan KorneffD
                              Dan Korneff @d.healey
                              last edited by

                              @d-healey I'm still new at this, but this is a Pre-Signed URL I'm generating with the S3 SDK which contains an expiration associated with the signature.

                              Dan Korneff - Producer / Mixer / Audio Nerd

                              d.healeyD 1 Reply Last reply Reply Quote 0
                              • d.healeyD
                                d.healey @Dan Korneff
                                last edited by d.healey

                                @Dan-Korneff Have you asked WooCommerce about a solution for this?

                                Also what about this - https://wordpress.org/support/topic/bandwidth-for-downloads/

                                Libre Wave - Freedom respecting instruments and effects
                                My Patreon - HISE tutorials
                                YouTube Channel - Public HISE tutorials

                                Dan KorneffD 2 Replies Last reply Reply Quote 0
                                • Dan KorneffD
                                  Dan Korneff @d.healey
                                  last edited by

                                  @d-healey gonna check this out now

                                  Dan Korneff - Producer / Mixer / Audio Nerd

                                  1 Reply Last reply Reply Quote 1
                                  • Dan KorneffD
                                    Dan Korneff @d.healey
                                    last edited by

                                    @d-healey Here's how it works with woocommcerce.
                                    https://www.download-monitor.com/kb/how-to-use-download-monitor-with-woocommerce/
                                    I'm gonna give it a try, but once you change your download method to "Redirect Only" as suggested, it's going to supply an amazon link which HISE can't download, and I'm back to square one.

                                    Dan Korneff - Producer / Mixer / Audio Nerd

                                    d.healeyD 1 Reply Last reply Reply Quote 0
                                    • d.healeyD
                                      d.healey @Dan Korneff
                                      last edited by

                                      @Dan-Korneff

                                      I'm gonna give it a try, but once you change your download method to "Redirect Only" as suggested, it's going to supply an amazon link which HISE can't download, and I'm back to square one

                                      What you talking bout Willis? I've been using Redirect Only with Rhapsody.

                                      Libre Wave - Freedom respecting instruments and effects
                                      My Patreon - HISE tutorials
                                      YouTube Channel - Public HISE tutorials

                                      Dan KorneffD 1 Reply Last reply Reply Quote 0
                                      • Dan KorneffD
                                        Dan Korneff @d.healey
                                        last edited by

                                        @d-healey like this?

                                        737809d7-f0da-45f8-8632-3cee337e12a9-image.png ![alt text](image url)

                                        Dan Korneff - Producer / Mixer / Audio Nerd

                                        d.healeyD 1 Reply Last reply Reply Quote 0
                                        • d.healeyD
                                          d.healey @Dan Korneff
                                          last edited by

                                          @Dan-Korneff Scroll up - https://forum.hise.audio/topic/4635/question-about-queued-downloads-from-amazon-s3/12?_=1698944591828

                                          Libre Wave - Freedom respecting instruments and effects
                                          My Patreon - HISE tutorials
                                          YouTube Channel - Public HISE tutorials

                                          Dan KorneffD 1 Reply Last reply Reply Quote 0
                                          • Dan KorneffD
                                            Dan Korneff @d.healey
                                            last edited by

                                            @d-healey Redirect Only or X-Accel?

                                            Dan Korneff - Producer / Mixer / Audio Nerd

                                            d.healeyD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            23

                                            Online

                                            1.8k

                                            Users

                                            12.0k

                                            Topics

                                            104.4k

                                            Posts