Skip to content

Improvements to URL matching in guessMediaType() #1

@Crissov

Description

@Crissov
function guessMediaType(url) {
  const extensionMatch = url.match(/\.([^/.]+)$/);
  if (extensionMatch === null)
    return 'image';
  const extension = extensionMatch[1];
  // ...
}

That means the plugin is currently looking for a dot . followed by anything but a dot or slash before the end of the URL. If I'm not mistaken, this should yield unwanted results in these example cases:

  • http://example.mov -- match is mov, which could be a recognized video file extension and is a valid TLD
  • video.mp4?t=1m30s -- match is mp4?t=1m30s, not mp4 as intended
  • audio.mp3#chapter4 -- match is mp3#chapter4, not mp3 as intended

I'm not sure if it's usable yet, but URL.pathname should strip out host, query and hash automatically. Otherwise you could also consider them manually.

  const extensionMatch = url.match(/\/.*\.([^/.]+)(?:\?[^?]*)?(?:#[^#]*)?$/);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions