[Video] Properly get the service auth aud from the session (#5025)

zio/stable
Hailey 2024-08-29 13:44:47 -07:00 committed by GitHub
parent 91fe41670f
commit 69e896c221
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 34 additions and 6 deletions

View File

@ -339,3 +339,21 @@ export function shortLinkToHref(url: string): string {
return url
}
}
export function getHostnameFromUrl(url: string): string | null {
let urlp
try {
urlp = new URL(url)
} catch (e) {
return null
}
return urlp.hostname
}
export function getServiceAuthAudFromUrl(url: string): string | null {
const hostname = getHostnameFromUrl(url)
if (!hostname) {
return null
}
return `did:web:${hostname}`
}

View File

@ -7,6 +7,7 @@ import {cancelable} from '#/lib/async/cancelable'
import {CompressedVideo} from '#/lib/media/video/compress'
import {createVideoEndpointUrl} from '#/state/queries/video/util'
import {useAgent, useSession} from '#/state/session'
import {getServiceAuthAudFromUrl} from 'lib/strings/url-helpers'
export const useUploadVideoMutation = ({
onSuccess,
@ -30,14 +31,18 @@ export const useUploadVideoMutation = ({
name: `${nanoid(12)}.mp4`, // @TODO what are we limiting this to?
})
// a logged-in agent should have this set, but we'll check just in case
if (!agent.pdsUrl) {
if (!currentAccount?.service) {
throw new Error('User is not logged in')
}
const serviceAuthAud = getServiceAuthAudFromUrl(currentAccount.service)
if (!serviceAuthAud) {
throw new Error('Agent does not have a PDS URL')
}
const {data: serviceAuth} = await agent.com.atproto.server.getServiceAuth(
{
aud: `did:web:${agent.pdsUrl.hostname}`,
aud: serviceAuthAud,
lxm: 'com.atproto.repo.uploadBlob',
},
)

View File

@ -6,6 +6,7 @@ import {cancelable} from '#/lib/async/cancelable'
import {CompressedVideo} from '#/lib/media/video/compress'
import {createVideoEndpointUrl} from '#/state/queries/video/util'
import {useAgent, useSession} from '#/state/session'
import {getServiceAuthAudFromUrl} from 'lib/strings/url-helpers'
export const useUploadVideoMutation = ({
onSuccess,
@ -29,14 +30,18 @@ export const useUploadVideoMutation = ({
name: `${nanoid(12)}.mp4`, // @TODO: make sure it's always mp4'
})
// a logged-in agent should have this set, but we'll check just in case
if (!agent.pdsUrl) {
if (!currentAccount?.service) {
throw new Error('User is not logged in')
}
const serviceAuthAud = getServiceAuthAudFromUrl(currentAccount.service)
if (!serviceAuthAud) {
throw new Error('Agent does not have a PDS URL')
}
const {data: serviceAuth} = await agent.com.atproto.server.getServiceAuth(
{
aud: `did:web:${agent.pdsUrl.hostname}`,
aud: serviceAuthAud,
lxm: 'com.atproto.repo.uploadBlob',
},
)