Various enhancements and fixes from Northwestern's Avalon implementation - #6925
Open
mbklein wants to merge 7 commits into
Open
Various enhancements and fixes from Northwestern's Avalon implementation#6925mbklein wants to merge 7 commits into
mbklein wants to merge 7 commits into
Conversation
Add withCredentials to ramp MediaPlayer and structural metadata editor
Contributor
|
We'll review and pull in after 8.2.1 release. |
Member
Author
|
I just realized that I based this PR against |
mbklein
added a commit
to nulib/avalon
that referenced
this pull request
Aug 5, 2026
AVR redirects the player straight at the pre-rendered playlist on
CloudFront (see the next commit), so the URL itself has to carry a
signature -- upstream only needs cookies, because its player always fetches
playlists through Avalon.
Switches from the cloudfront-signer gem to aws-sdk-cloudfront's
Url/CookieSigner: cloudfront-signer configures one process-wide signer via
Aws::CF::Signer.configure that can't be re-keyed, and offers no URL signing.
(cloudfront-signer stays in upstream's Gemfile; removing it would be one
more line of Gemfile conflict for no gain.)
Also fixes the signed-cookie domain, which upstream computes as the set
intersection of the app and streaming hosts' labels. That's order- and
position-blind: for an app host of avr.library.northwestern.edu and a
streaming host of stream.avr.library.northwestern.edu it returns
avr.library.northwestern.edu -- a domain the streaming host is not under, so
the browser drops the cookie. Now walks in from the TLD to find the real
common suffix. Specs added for all three cases.
Reworked while restructuring:
* Dropped the ':s3' streaming server branch. Settings.streaming.server is
'aws' in every AVR environment (terraform/settings.tf and .envrc both
hardcode it), so the branch was unreachable.
* Dropped a copyright-header revert that reintroduced trailing whitespace.
* Replaced AVR's URI escape/unescape round-trip for filenames containing
spaces with the simpler .gsub(' ', '%20') now upstream in PR avalonmediasystem#6925.
mbklein
added a commit
to nulib/avalon
that referenced
this pull request
Aug 11, 2026
AVR redirects the player straight at the pre-rendered playlist on
CloudFront (see the next commit), so the URL itself has to carry a
signature -- upstream only needs cookies, because its player always fetches
playlists through Avalon.
Switches from the cloudfront-signer gem to aws-sdk-cloudfront's
Url/CookieSigner: cloudfront-signer configures one process-wide signer via
Aws::CF::Signer.configure that can't be re-keyed, and offers no URL signing.
(cloudfront-signer stays in upstream's Gemfile; removing it would be one
more line of Gemfile conflict for no gain.)
Also fixes the signed-cookie domain, which upstream computes as the set
intersection of the app and streaming hosts' labels. That's order- and
position-blind: for an app host of avr.library.northwestern.edu and a
streaming host of stream.avr.library.northwestern.edu it returns
avr.library.northwestern.edu -- a domain the streaming host is not under, so
the browser drops the cookie. Now walks in from the TLD to find the real
common suffix. Specs added for all three cases.
Reworked while restructuring:
* Dropped the ':s3' streaming server branch. Settings.streaming.server is
'aws' in every AVR environment (terraform/settings.tf and .envrc both
hardcode it), so the branch was unreachable.
* Dropped a copyright-header revert that reintroduced trailing whitespace.
* Replaced AVR's URI escape/unescape round-trip for filenames containing
spaces with the simpler .gsub(' ', '%20') now upstream in PR avalonmediasystem#6925.
mbklein
added a commit
to nulib/avalon
that referenced
this pull request
Aug 11, 2026
AVR redirects the player straight at the pre-rendered playlist on
CloudFront (see the next commit), so the URL itself has to carry a
signature -- upstream only needs cookies, because its player always fetches
playlists through Avalon.
Switches from the cloudfront-signer gem to aws-sdk-cloudfront's
Url/CookieSigner: cloudfront-signer configures one process-wide signer via
Aws::CF::Signer.configure that can't be re-keyed, and offers no URL signing.
(cloudfront-signer stays in upstream's Gemfile; removing it would be one
more line of Gemfile conflict for no gain.)
Also fixes the signed-cookie domain, which upstream computes as the set
intersection of the app and streaming hosts' labels. That's order- and
position-blind: for an app host of avr.library.northwestern.edu and a
streaming host of stream.avr.library.northwestern.edu it returns
avr.library.northwestern.edu -- a domain the streaming host is not under, so
the browser drops the cookie. Now walks in from the TLD to find the real
common suffix. Specs added for all three cases.
Reworked while restructuring:
* Dropped the ':s3' streaming server branch. Settings.streaming.server is
'aws' in every AVR environment (terraform/settings.tf and .envrc both
hardcode it), so the branch was unreachable.
* Dropped a copyright-header revert that reintroduced trailing whitespace.
* Replaced AVR's URI escape/unescape round-trip for filenames containing
spaces with the simpler .gsub(' ', '%20') now upstream in PR avalonmediasystem#6925.
mbklein
added a commit
to nulib/avalon
that referenced
this pull request
Aug 12, 2026
AVR redirects the player straight at the pre-rendered playlist on
CloudFront (see the next commit), so the URL itself has to carry a
signature -- upstream only needs cookies, because its player always fetches
playlists through Avalon.
Switches from the cloudfront-signer gem to aws-sdk-cloudfront's
Url/CookieSigner: cloudfront-signer configures one process-wide signer via
Aws::CF::Signer.configure that can't be re-keyed, and offers no URL signing.
(cloudfront-signer stays in upstream's Gemfile; removing it would be one
more line of Gemfile conflict for no gain.)
Also fixes the signed-cookie domain, which upstream computes as the set
intersection of the app and streaming hosts' labels. That's order- and
position-blind: for an app host of avr.library.northwestern.edu and a
streaming host of stream.avr.library.northwestern.edu it returns
avr.library.northwestern.edu -- a domain the streaming host is not under, so
the browser drops the cookie. Now walks in from the TLD to find the real
common suffix. Specs added for all three cases.
Reworked while restructuring:
* Dropped the ':s3' streaming server branch. Settings.streaming.server is
'aws' in every AVR environment (terraform/settings.tf and .envrc both
hardcode it), so the branch was unreachable.
* Dropped a copyright-header revert that reintroduced trailing whitespace.
* Replaced AVR's URI escape/unescape round-trip for filenames containing
spaces with the simpler .gsub(' ', '%20') now upstream in PR avalonmediasystem#6925.
mbklein
added a commit
to nulib/avalon
that referenced
this pull request
Aug 13, 2026
AVR redirects the player straight at the pre-rendered playlist on
CloudFront (see the next commit), so the URL itself has to carry a
signature -- upstream only needs cookies, because its player always fetches
playlists through Avalon.
Switches from the cloudfront-signer gem to aws-sdk-cloudfront's
Url/CookieSigner: cloudfront-signer configures one process-wide signer via
Aws::CF::Signer.configure that can't be re-keyed, and offers no URL signing.
(cloudfront-signer stays in upstream's Gemfile; removing it would be one
more line of Gemfile conflict for no gain.)
Also fixes the signed-cookie domain, which upstream computes as the set
intersection of the app and streaming hosts' labels. That's order- and
position-blind: for an app host of avr.library.northwestern.edu and a
streaming host of stream.avr.library.northwestern.edu it returns
avr.library.northwestern.edu -- a domain the streaming host is not under, so
the browser drops the cookie. Now walks in from the TLD to find the real
common suffix. Specs added for all three cases.
Reworked while restructuring:
* Dropped the ':s3' streaming server branch. Settings.streaming.server is
'aws' in every AVR environment (terraform/settings.tf and .envrc both
hardcode it), so the branch was unreachable.
* Dropped a copyright-header revert that reintroduced trailing whitespace.
* Replaced AVR's URI escape/unescape round-trip for filenames containing
spaces with the simpler .gsub(' ', '%20') now upstream in PR avalonmediasystem#6925.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains multiple small fixes we've applied on top of several versions of Avalon while applying our own branding and additional in-house features to the base version. They include:
master_file.file_locationwasnil(e.g., when the MasterFile management strategy is set todelete)CatalogControllerbefore_actionto validate sort params before allowing the request to continueWaveformJobto generate waveforms from an AWS S3 source by streaming it instead of downloading the entire file to temp storage@current_packageinstance variable always gets set correctlyI left them as separate commits to make them easier to cherry pick, but I didn't want to submit 7 separate tiny PRs.