Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: expose initializers #26

Merged
merged 1 commit into from
Feb 9, 2024
Merged

fix: expose initializers #26

merged 1 commit into from
Feb 9, 2024

Conversation

andrewjl-mux
Copy link
Collaborator

No description provided.

@andrewjl-mux andrewjl-mux requested a review from a team as a code owner February 8, 2024 23:43
Copy link

@cjpillsbury cjpillsbury left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved, though I'd recommend merging to main, since we expected these to be public on the current release, regardless of cache functionality.

@andrewjl-mux andrewjl-mux merged commit feffe83 into main Feb 9, 2024
1 check passed
@andrewjl-mux andrewjl-mux deleted the ajlb/public-initializer branch February 9, 2024 03:01
andrewjl-mux added a commit that referenced this pull request Feb 13, 2024
* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
andrewjl-mux added a commit that referenced this pull request May 8, 2024
* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
andrewjl-mux added a commit that referenced this pull request May 8, 2024
commit d83a9aca216c77ea8997bd6111165c6cf5019e4e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:48 2024 -0700

    fix customer data passthrough to data

commit 8048f53fde6f32552835e159a46f641b55b161cb
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:27 2024 -0700

    fix asc

commit 4e673dec1858d0b8f08160abfed0873370da0396
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:15 2024 -0700

    experiments

commit cff3c873a33182755eff6326bdfa1250a4b0b191
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 14:41:32 2024 -0700

    configurable playback modifiers when testing cache

commit 2e3d21e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 13:42:44 2024 -0700

    configrable playback modifiers in example

commit e013cc3
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Thu May 2 14:02:09 2024 -0700

    fix: cache error fallback (#38)

    * build: update Data SDK

    * [NFC] reverse proxy cleanup

    * use Foundation APIs to extract origin URL query value

commit a642a87
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Apr 26 12:19:43 2024 -0700

    fix: add extra percent encoding to avoid origin url truncation (#37)

    * fix: add extra percent encoding to avoid origin url truncation

    * fix tests

commit 47cfaf7
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Feb 23 16:24:39 2024 -0800

    fix: invert API for the smart cache (#32)

commit efdeee0
Author: Christian Pillsbury <cjpillsbury@gmail.com>
Date:   Fri Feb 16 08:50:51 2024 -0800

    fix: Add basic cmaf support. (#31)

commit f03a419
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 14:45:59 2024 -0800

    chore: emit SDK diagnostics into unified logging system (#30)

commit 4d56d11
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 11:54:41 2024 -0800

    feat: HLS proxy server and URLCache integration (#24)

    * fix: expose initializers (#26)

    * feat: reverse proxy server

    * test: add additional ui for testing

    * use URLCache built-in as storage

    * chore: add basic ABR observation

    * chore: extract manifest processing to separate class, log cache size and segment size

    * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

    * test: account for percent encoding when checking URLs in query params

    ---------

    Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
andrewjl-mux added a commit that referenced this pull request May 8, 2024
* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
andrewjl-mux added a commit that referenced this pull request May 8, 2024
commit d83a9aca216c77ea8997bd6111165c6cf5019e4e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:48 2024 -0700

    fix customer data passthrough to data

commit 8048f53fde6f32552835e159a46f641b55b161cb
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:27 2024 -0700

    fix asc

commit 4e673dec1858d0b8f08160abfed0873370da0396
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:15 2024 -0700

    experiments

commit cff3c873a33182755eff6326bdfa1250a4b0b191
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 14:41:32 2024 -0700

    configurable playback modifiers when testing cache

commit 2e3d21e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 13:42:44 2024 -0700

    configrable playback modifiers in example

commit e013cc3
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Thu May 2 14:02:09 2024 -0700

    fix: cache error fallback (#38)

    * build: update Data SDK

    * [NFC] reverse proxy cleanup

    * use Foundation APIs to extract origin URL query value

commit a642a87
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Apr 26 12:19:43 2024 -0700

    fix: add extra percent encoding to avoid origin url truncation (#37)

    * fix: add extra percent encoding to avoid origin url truncation

    * fix tests

commit 47cfaf7
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Feb 23 16:24:39 2024 -0800

    fix: invert API for the smart cache (#32)

commit efdeee0
Author: Christian Pillsbury <cjpillsbury@gmail.com>
Date:   Fri Feb 16 08:50:51 2024 -0800

    fix: Add basic cmaf support. (#31)

commit f03a419
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 14:45:59 2024 -0800

    chore: emit SDK diagnostics into unified logging system (#30)

commit 4d56d11
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 11:54:41 2024 -0800

    feat: HLS proxy server and URLCache integration (#24)

    * fix: expose initializers (#26)

    * feat: reverse proxy server

    * test: add additional ui for testing

    * use URLCache built-in as storage

    * chore: add basic ABR observation

    * chore: extract manifest processing to separate class, log cache size and segment size

    * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

    * test: account for percent encoding when checking URLs in query params

    ---------

    Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
daytime-em pushed a commit that referenced this pull request May 23, 2024
* feat: expose API for configuring existing player view controllers (#41)

* feat: expose API for configuring existing player view controllers

to match what is provided for AVPlayerLayer

* docs: fixup grammar

* fix: remove rendition order ascending (#43)

* docs: fixups (#42)

* Fix up AVPlayerLayer too

* docs: typos

* docs: monitoring options improvements

* feat: HLS proxy server and URLCache integration (#24)

* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: emit SDK diagnostics into unified logging system (#30)

* fix: Add basic cmaf support. (#31)

* fix: invert API for the smart cache (#32)

* fix: add extra percent encoding to avoid origin url truncation (#37)

* fix: add extra percent encoding to avoid origin url truncation

* fix tests

* fix: cache error fallback (#38)

* build: update Data SDK

* [NFC] reverse proxy cleanup

* use Foundation APIs to extract origin URL query value

* Squashed commit of the following:

commit d83a9aca216c77ea8997bd6111165c6cf5019e4e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:48 2024 -0700

    fix customer data passthrough to data

commit 8048f53fde6f32552835e159a46f641b55b161cb
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:27 2024 -0700

    fix asc

commit 4e673dec1858d0b8f08160abfed0873370da0396
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:15 2024 -0700

    experiments

commit cff3c873a33182755eff6326bdfa1250a4b0b191
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 14:41:32 2024 -0700

    configurable playback modifiers when testing cache

commit 2e3d21e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 13:42:44 2024 -0700

    configrable playback modifiers in example

commit e013cc3
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Thu May 2 14:02:09 2024 -0700

    fix: cache error fallback (#38)

    * build: update Data SDK

    * [NFC] reverse proxy cleanup

    * use Foundation APIs to extract origin URL query value

commit a642a87
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Apr 26 12:19:43 2024 -0700

    fix: add extra percent encoding to avoid origin url truncation (#37)

    * fix: add extra percent encoding to avoid origin url truncation

    * fix tests

commit 47cfaf7
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Feb 23 16:24:39 2024 -0800

    fix: invert API for the smart cache (#32)

commit efdeee0
Author: Christian Pillsbury <cjpillsbury@gmail.com>
Date:   Fri Feb 16 08:50:51 2024 -0800

    fix: Add basic cmaf support. (#31)

commit f03a419
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 14:45:59 2024 -0800

    chore: emit SDK diagnostics into unified logging system (#30)

commit 4d56d11
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 11:54:41 2024 -0800

    feat: HLS proxy server and URLCache integration (#24)

    * fix: expose initializers (#26)

    * feat: reverse proxy server

    * test: add additional ui for testing

    * use URLCache built-in as storage

    * chore: add basic ABR observation

    * chore: extract manifest processing to separate class, log cache size and segment size

    * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

    * test: account for percent encoding when checking URLs in query params

    ---------

    Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: example cleanup

* chore: update version

* chore: remove debug view

* ci: add documentation generation scripts

* remove debug view controller

* feat: gate smart cache to single rendition playlists

* docs: release instructions

* docs: fixup single rendition enum descriptions

* docs: add the actual release steps

* build: update to AVPlayer Data SDK with privacy manifest

* start-up reverse proxy only when required

include additional examples

* SingleResolutionTier -> SingleRenditionResolutionTier

* Update installation version in README

* remove readme callout and create consolidated script for docs regeneration

* fix example

* fix capitalization

* disable diagnostics logging when in release mode

* Separate initialization method for single renditions

To help with example in guide. A separate init method rather than a
default parameter helps with discoverability of the enableSmartCache
option

* test: improve tests

* chore: expose environment variable accessors

* docs: add DRM example scaffolding

* add TODO

* restart player when example menu options change

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>
andrewjl-mux pushed a commit that referenced this pull request Jun 28, 2024
* Add API for DRM

* chore: scaffolding for key value observation

* Add Fairplay folder

* Some delegate methods

* up

* up

* Internal skeleton done

* Add DRM config to separate playback policy

* up

* Added session delegate and content key session

* up

* Add AVPlayerItem stuff

* Add DRM Token to the AVURLAsset

* Now we have done it mostly

* Add signed playback initializers back

* move FairplaySessionManager singleton

* Update Sources/MuxPlayerSwift/PublicAPI/Extensions/AVPlayerItem+Mux.swift

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

* ok really move the singleton

* ok really move the singleton

* Caps

* api support for custom domain

* More capitalization

* Ignore xcshareddata and .swiftpm directores, they are user-private

* Fix crash on simulator (drm wont work still)

* Some logging

* Making license url

* Add method for requesting licenses

* Add Example videos

* up

* track playback ids

* getting there

* now we are maybe possibly getting somewhere

* Yes we are now getting our certs and things

* we don't need this method

* ok here we are so far

* more stuff

* e2e, doesnt work yet

* comments

* one more todo

* more

* Fixes

* un-dumb a comment

* More logging

* L O G N O I S E

* comments

* respect the safe area

* Some adjustments

* logging change

* unneeded field, nonsense comment

* here we go

* todo- error handling

* dont crash

* Rename a completion handler

* Now that is cleaner

* Less pointless base64

* eke a little more progress

* One more step

* rename slightly

* testability

* here we go

* Custom domains mostly in

* calculating license correctly

* Ok thats custom domains afaik

* here we go

* here we go

* ok

* app cert url

* ok custom domains

* fetch app certs

* And one rename

* And one rename

* cleaning up

* comment: recapitalize FairplaySessionManager

* up

* one last thing

* More cleanup, even more oh my god

* Extract FairPlaySessionManager into a protocol

---------

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

maint: Add Unit Tests for FairPlaySessionManager + good DRM errors + small testability changes (#40)

* Ok here we go

* different URLSessions

* Fairplay -> FairPlay

* move helpers out of the protocol

* root domain testable

* file for fpssm tests

* warnings

* there we go. one test

* Rename FairPlaySessionManagerImpl to DefaultFPSMangaer

* Ok that's the trivial tests

* do the URLProtcol thing

* Mock URLSession

* Test success case for requestLicense

* Errors

* Error

* ok there's license almost done

* some tests

* Tests added

* So far so good

* now throw the right errors

* Added tests, need to update license error returns

* Ok now that's some good error handling

* Finished Cert and license tests

* test app cert request

* no more warnings

* Ok removed TempError

* cleanup a little

* little note

* Cleanup more

* Oops forgot ckc request headers

* refactor: redirect singleton calls to injected dependencies

refactor: place AVContentKeySession behind a protocol

build: fix build issues and tests

test setup

fix test

inject correctly

remove empty extension and avoid docc style comments for internal methods

remove optionals

* Rename abbreviated identifiers and split apart protocols

* Remove test session delegate

* turns out we do not need this

* refactor: minimize implicit singleton calls

* test: validate DRM registration when drm token provided

* Non-public API, use extension to initialize URL

* avoid tripping up docc for internal extensions

* cleaner test

* route calls to one chokepoint for simplicity

* We can use generics instead I think

* add a few comments

* some comments

* some comments

* Need to set ContentKeyDelegate

* Tests for ContentKeySessionDelegate + Testability Tweaks (#44)

* Extract AVContentKeyRequest protocol

* remove ContentKeyDelegate methods we're not using

* Hook in KeyRequest

* record some mocks

* ok this is what we can do

* here is something

* Something more

* now we are somewhere

* lol

* setting up

* now we have something goin

* errors

* there we go

* tests

* more error

* more tests

* Content key path

* happy path

* more

* Now that works

* now we are somewhere

* PR Comment: back to one SessionManager

* PR Comments: back to SessionMangaer

* And the tests

* PR comments: make some stuff optional

* nit

---------

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

Remove region-check for staging

Beta notice for DRM

chore: merge v1.0.0 changes (#46)

* feat: expose API for configuring existing player view controllers (#41)

* feat: expose API for configuring existing player view controllers

to match what is provided for AVPlayerLayer

* docs: fixup grammar

* fix: remove rendition order ascending (#43)

* docs: fixups (#42)

* Fix up AVPlayerLayer too

* docs: typos

* docs: monitoring options improvements

* feat: HLS proxy server and URLCache integration (#24)

* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: emit SDK diagnostics into unified logging system (#30)

* fix: Add basic cmaf support. (#31)

* fix: invert API for the smart cache (#32)

* fix: add extra percent encoding to avoid origin url truncation (#37)

* fix: add extra percent encoding to avoid origin url truncation

* fix tests

* fix: cache error fallback (#38)

* build: update Data SDK

* [NFC] reverse proxy cleanup

* use Foundation APIs to extract origin URL query value

* Squashed commit of the following:

commit d83a9aca216c77ea8997bd6111165c6cf5019e4e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:48 2024 -0700

    fix customer data passthrough to data

commit 8048f53fde6f32552835e159a46f641b55b161cb
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:27 2024 -0700

    fix asc

commit 4e673dec1858d0b8f08160abfed0873370da0396
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:15 2024 -0700

    experiments

commit cff3c873a33182755eff6326bdfa1250a4b0b191
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 14:41:32 2024 -0700

    configurable playback modifiers when testing cache

commit 2e3d21e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 13:42:44 2024 -0700

    configrable playback modifiers in example

commit e013cc3
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Thu May 2 14:02:09 2024 -0700

    fix: cache error fallback (#38)

    * build: update Data SDK

    * [NFC] reverse proxy cleanup

    * use Foundation APIs to extract origin URL query value

commit a642a87
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Apr 26 12:19:43 2024 -0700

    fix: add extra percent encoding to avoid origin url truncation (#37)

    * fix: add extra percent encoding to avoid origin url truncation

    * fix tests

commit 47cfaf7
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Feb 23 16:24:39 2024 -0800

    fix: invert API for the smart cache (#32)

commit efdeee0
Author: Christian Pillsbury <cjpillsbury@gmail.com>
Date:   Fri Feb 16 08:50:51 2024 -0800

    fix: Add basic cmaf support. (#31)

commit f03a419
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 14:45:59 2024 -0800

    chore: emit SDK diagnostics into unified logging system (#30)

commit 4d56d11
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 11:54:41 2024 -0800

    feat: HLS proxy server and URLCache integration (#24)

    * fix: expose initializers (#26)

    * feat: reverse proxy server

    * test: add additional ui for testing

    * use URLCache built-in as storage

    * chore: add basic ABR observation

    * chore: extract manifest processing to separate class, log cache size and segment size

    * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

    * test: account for percent encoding when checking URLs in query params

    ---------

    Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: example cleanup

* chore: update version

* chore: remove debug view

* ci: add documentation generation scripts

* remove debug view controller

* feat: gate smart cache to single rendition playlists

* docs: release instructions

* docs: fixup single rendition enum descriptions

* docs: add the actual release steps

* build: update to AVPlayer Data SDK with privacy manifest

* start-up reverse proxy only when required

include additional examples

* SingleResolutionTier -> SingleRenditionResolutionTier

* Update installation version in README

* remove readme callout and create consolidated script for docs regeneration

* fix example

* fix capitalization

* disable diagnostics logging when in release mode

* Separate initialization method for single renditions

To help with example in guide. A separate init method rather than a
default parameter helps with discoverability of the enableSmartCache
option

* test: improve tests

* chore: expose environment variable accessors

* docs: add DRM example scaffolding

* add TODO

* restart player when example menu options change

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

fix: avoid setting empty custom domain in example (#47)

fix: initialize player item only once (#48)

chore: content key internal improvements (#49)

* additional environment variables

* chore: add a content key logger

* refactor: centralize URL construction inputs

* refactor: simplify URL construction logic

add recovery for when license or application certificate endpoint URLs
fail to be constructed

* fix: silent exception when deserializing empty response

* chore: use logger in content key session delegate

and some minor syntactic clean-up

* chore: emit failure to find playback ID in SKD log in the caller

chore: enable background mode picture in picture playback in the example (#50)

chore: synchronize project/drm with main (#51)

* feat: expose API for configuring existing player view controllers (#41)

* feat: expose API for configuring existing player view controllers

to match what is provided for AVPlayerLayer

* docs: fixup grammar

* fix: remove rendition order ascending (#43)

* docs: fixups (#42)

* Fix up AVPlayerLayer too

* docs: typos

* docs: monitoring options improvements

* v1.0.0 (#45)

* feat: HLS proxy server and URLCache integration (#24)

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: emit SDK diagnostics into unified logging system (#30)

* fix: Add basic cmaf support. (#31)

* fix: invert API for the smart cache (#32)

* fix: add extra percent encoding to avoid origin url truncation (#37)

* fix: cache error fallback (#38)

* build: update Data SDK
andrewjl-mux pushed a commit that referenced this pull request Jun 28, 2024
* Add API for DRM

* chore: scaffolding for key value observation

* Add Fairplay folder

* Some delegate methods

* up

* up

* Internal skeleton done

* Add DRM config to separate playback policy

* up

* Added session delegate and content key session

* up

* Add AVPlayerItem stuff

* Add DRM Token to the AVURLAsset

* Now we have done it mostly

* Add signed playback initializers back

* move FairplaySessionManager singleton

* Update Sources/MuxPlayerSwift/PublicAPI/Extensions/AVPlayerItem+Mux.swift

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

* ok really move the singleton

* ok really move the singleton

* Caps

* api support for custom domain

* More capitalization

* Ignore xcshareddata and .swiftpm directores, they are user-private

* Fix crash on simulator (drm wont work still)

* Some logging

* Making license url

* Add method for requesting licenses

* Add Example videos

* up

* track playback ids

* getting there

* now we are maybe possibly getting somewhere

* Yes we are now getting our certs and things

* we don't need this method

* ok here we are so far

* more stuff

* e2e, doesnt work yet

* comments

* one more todo

* more

* Fixes

* un-dumb a comment

* More logging

* L O G N O I S E

* comments

* respect the safe area

* Some adjustments

* logging change

* unneeded field, nonsense comment

* here we go

* todo- error handling

* dont crash

* Rename a completion handler

* Now that is cleaner

* Less pointless base64

* eke a little more progress

* One more step

* rename slightly

* testability

* here we go

* Custom domains mostly in

* calculating license correctly

* Ok thats custom domains afaik

* here we go

* here we go

* ok

* app cert url

* ok custom domains

* fetch app certs

* And one rename

* And one rename

* cleaning up

* comment: recapitalize FairplaySessionManager

* up

* one last thing

* More cleanup, even more oh my god

* Extract FairPlaySessionManager into a protocol

---------

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

maint: Add Unit Tests for FairPlaySessionManager + good DRM errors + small testability changes (#40)

* Ok here we go

* different URLSessions

* Fairplay -> FairPlay

* move helpers out of the protocol

* root domain testable

* file for fpssm tests

* warnings

* there we go. one test

* Rename FairPlaySessionManagerImpl to DefaultFPSMangaer

* Ok that's the trivial tests

* do the URLProtcol thing

* Mock URLSession

* Test success case for requestLicense

* Errors

* Error

* ok there's license almost done

* some tests

* Tests added

* So far so good

* now throw the right errors

* Added tests, need to update license error returns

* Ok now that's some good error handling

* Finished Cert and license tests

* test app cert request

* no more warnings

* Ok removed TempError

* cleanup a little

* little note

* Cleanup more

* Oops forgot ckc request headers

* refactor: redirect singleton calls to injected dependencies

refactor: place AVContentKeySession behind a protocol

build: fix build issues and tests

test setup

fix test

inject correctly

remove empty extension and avoid docc style comments for internal methods

remove optionals

* Rename abbreviated identifiers and split apart protocols

* Remove test session delegate

* turns out we do not need this

* refactor: minimize implicit singleton calls

* test: validate DRM registration when drm token provided

* Non-public API, use extension to initialize URL

* avoid tripping up docc for internal extensions

* cleaner test

* route calls to one chokepoint for simplicity

* We can use generics instead I think

* add a few comments

* some comments

* some comments

* Need to set ContentKeyDelegate

* Tests for ContentKeySessionDelegate + Testability Tweaks (#44)

* Extract AVContentKeyRequest protocol

* remove ContentKeyDelegate methods we're not using

* Hook in KeyRequest

* record some mocks

* ok this is what we can do

* here is something

* Something more

* now we are somewhere

* lol

* setting up

* now we have something goin

* errors

* there we go

* tests

* more error

* more tests

* Content key path

* happy path

* more

* Now that works

* now we are somewhere

* PR Comment: back to one SessionManager

* PR Comments: back to SessionMangaer

* And the tests

* PR comments: make some stuff optional

* nit

---------

Co-authored-by: AJ Lauer Barinov <abarinov@mux.com>

Remove region-check for staging

Beta notice for DRM

chore: merge v1.0.0 changes (#46)

* feat: expose API for configuring existing player view controllers (#41)

* feat: expose API for configuring existing player view controllers

to match what is provided for AVPlayerLayer

* docs: fixup grammar

* fix: remove rendition order ascending (#43)

* docs: fixups (#42)

* Fix up AVPlayerLayer too

* docs: typos

* docs: monitoring options improvements

* feat: HLS proxy server and URLCache integration (#24)

* fix: expose initializers (#26)

* feat: reverse proxy server

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: emit SDK diagnostics into unified logging system (#30)

* fix: Add basic cmaf support. (#31)

* fix: invert API for the smart cache (#32)

* fix: add extra percent encoding to avoid origin url truncation (#37)

* fix: add extra percent encoding to avoid origin url truncation

* fix tests

* fix: cache error fallback (#38)

* build: update Data SDK

* [NFC] reverse proxy cleanup

* use Foundation APIs to extract origin URL query value

* Squashed commit of the following:

commit d83a9aca216c77ea8997bd6111165c6cf5019e4e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:48 2024 -0700

    fix customer data passthrough to data

commit 8048f53fde6f32552835e159a46f641b55b161cb
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:27 2024 -0700

    fix asc

commit 4e673dec1858d0b8f08160abfed0873370da0396
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Mon May 6 19:28:15 2024 -0700

    experiments

commit cff3c873a33182755eff6326bdfa1250a4b0b191
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 14:41:32 2024 -0700

    configurable playback modifiers when testing cache

commit 2e3d21e
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri May 3 13:42:44 2024 -0700

    configrable playback modifiers in example

commit e013cc3
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Thu May 2 14:02:09 2024 -0700

    fix: cache error fallback (#38)

    * build: update Data SDK

    * [NFC] reverse proxy cleanup

    * use Foundation APIs to extract origin URL query value

commit a642a87
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Apr 26 12:19:43 2024 -0700

    fix: add extra percent encoding to avoid origin url truncation (#37)

    * fix: add extra percent encoding to avoid origin url truncation

    * fix tests

commit 47cfaf7
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Fri Feb 23 16:24:39 2024 -0800

    fix: invert API for the smart cache (#32)

commit efdeee0
Author: Christian Pillsbury <cjpillsbury@gmail.com>
Date:   Fri Feb 16 08:50:51 2024 -0800

    fix: Add basic cmaf support. (#31)

commit f03a419
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 14:45:59 2024 -0800

    chore: emit SDK diagnostics into unified logging system (#30)

commit 4d56d11
Author: AJ Lauer Barinov <abarinov@mux.com>
Date:   Tue Feb 13 11:54:41 2024 -0800

    feat: HLS proxy server and URLCache integration (#24)

    * fix: expose initializers (#26)

    * feat: reverse proxy server

    * test: add additional ui for testing

    * use URLCache built-in as storage

    * chore: add basic ABR observation

    * chore: extract manifest processing to separate class, log cache size and segment size

    * chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

    * test: account for percent encoding when checking URLs in query params

    ---------

    Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: example cleanup

* chore: update version

* chore: remove debug view

* ci: add documentation generation scripts

* remove debug view controller

* feat: gate smart cache to single rendition playlists

* docs: release instructions

* docs: fixup single rendition enum descriptions

* docs: add the actual release steps

* build: update to AVPlayer Data SDK with privacy manifest

* start-up reverse proxy only when required

include additional examples

* SingleResolutionTier -> SingleRenditionResolutionTier

* Update installation version in README

* remove readme callout and create consolidated script for docs regeneration

* fix example

* fix capitalization

* disable diagnostics logging when in release mode

* Separate initialization method for single renditions

To help with example in guide. A separate init method rather than a
default parameter helps with discoverability of the enableSmartCache
option

* test: improve tests

* chore: expose environment variable accessors

* docs: add DRM example scaffolding

* add TODO

* restart player when example menu options change

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

fix: avoid setting empty custom domain in example (#47)

fix: initialize player item only once (#48)

chore: content key internal improvements (#49)

* additional environment variables

* chore: add a content key logger

* refactor: centralize URL construction inputs

* refactor: simplify URL construction logic

add recovery for when license or application certificate endpoint URLs
fail to be constructed

* fix: silent exception when deserializing empty response

* chore: use logger in content key session delegate

and some minor syntactic clean-up

* chore: emit failure to find playback ID in SKD log in the caller

chore: enable background mode picture in picture playback in the example (#50)

chore: synchronize project/drm with main (#51)

* feat: expose API for configuring existing player view controllers (#41)

* feat: expose API for configuring existing player view controllers

to match what is provided for AVPlayerLayer

* docs: fixup grammar

* fix: remove rendition order ascending (#43)

* docs: fixups (#42)

* Fix up AVPlayerLayer too

* docs: typos

* docs: monitoring options improvements

* v1.0.0 (#45)

* feat: HLS proxy server and URLCache integration (#24)

* test: add additional ui for testing

* use URLCache built-in as storage

* chore: add basic ABR observation

* chore: extract manifest processing to separate class, log cache size and segment size

* chore: rename playlist parsing to reflect technical definitions and purpose (including tests) (#27)

* test: account for percent encoding when checking URLs in query params

---------

Co-authored-by: Christian Pillsbury <cjpillsbury@gmail.com>

* chore: emit SDK diagnostics into unified logging system (#30)

* fix: Add basic cmaf support. (#31)

* fix: invert API for the smart cache (#32)

* fix: add extra percent encoding to avoid origin url truncation (#37)

* fix: cache error fallback (#38)

* build: update Data SDK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants