Source file mime.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(*****************************************************************************)
(*                                                                           *)
(*  Copyright (C) 2026 Yves Ndiaye                                           *)
(*                                                                           *)
(* This Source Code Form is subject to the terms of the Mozilla Public       *)
(* License, v. 2.0. If a copy of the MPL was not distributed with this       *)
(* file, You can obtain one at https://mozilla.org/MPL/2.0/.                 *)
(*                                                                           *)
(*****************************************************************************)

let extension path =
  let extension =
    let ext = Filename.extension path in
    match String.starts_with ~prefix:"." ext with
    | false ->
        ext
    | true ->
        String.sub ext 1 (String.length ext - 1)
  in
  Mime_types.map_extension extension

let lookup path =
  let extra = [ (".dsf", "audio/x-dsf"); (".ape", "audio/x-ape") ] in
  let extension = Filename.extension path in
  match List.assoc_opt extension extra with
  | None ->
      Magic_mime.lookup path
  | Some p ->
      p

let reverse_lookup mime_type =
  match mime_type with
  | "audio/x-dsf" ->
      [ "dsf" ]
  | "audio/x-ape" ->
      [ "ape" ]
  | x ->
      Magic_mime.reverse_lookup x