Replies (1)

as you can see the HTTP API thing is a bit of a mess but the most common format is`https://<host>/<path/to/repo>/raw/<ref>/<path/to/file>` ```typescript /** most servers will produce a CORS error so a proxy should be used */ export const cloneArrayToReadMeUrls = (clone: string[]): string[] => { const addresses = clone.map(extractRepoAddress) /** * at the time of this commit these urls work for: * self-hosted gitea (or forgejo), gitlab * github.com * bitbucket.org * gitlab.org * gitea.com * codeberg.org (forgejo instance) * sourcehut (git.sr.ht) * launchpad.net * It doesnt work for: * self-hosted gogs (requires branch name repo/raw/master/README.md) * sourceforge.net ( * notabug.org (requires branch name notabug.org/org/repo/raw/master/README.md) */ return [ ...addresses.flatMap((address) => { let prefix = 'raw/HEAD' if (address.includes('sr.ht')) prefix = 'blob/HEAD' if ( address.includes('git.launchpad.net') || address.includes('git.savannah.gnu.org') ) prefix = 'plain' if (address.includes('github.com')) { // raw.githubusercontent.com can be used without CORS error address = address.replace('github.com', 'raw.githubusercontent.com') prefix = 'HEAD' } return ['README.md', 'readme.md'].map( (filename) => `https://${address}/${prefix}/${filename}` ) }), ] } ```