objective categorical abstract machine language personal data server
65
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix incorrectly extracting permission-set from lexicon doc

futurGH 0ea4f753 9bbf2a3c

+22 -10
+22 -10
pegasus/lib/lexicon_resolver.ml
··· 16 16 ; permissions: permission list } 17 17 [@@deriving yojson {strict= false}] 18 18 19 - type lexicon_value = 20 - { type_: string [@key "$type"] 19 + type lexicon_def = 20 + { type_: string [@key "type"] 21 21 ; title: string option [@default None] 22 22 ; detail: string option [@default None] 23 23 ; permissions: permission list option [@default None] } ··· 77 77 ) ) 78 78 with exn -> Lwt.return_error (Printexc.to_string exn) 79 79 80 + (* extract defs.main from a lexicon schema document *) 81 + let extract_main_def record = 82 + match Yojson.Safe.Util.(member "defs" record |> member "main") with 83 + | `Null -> 84 + Error "lexicon has no defs.main" 85 + | main -> ( 86 + match lexicon_def_of_yojson main with 87 + | Error e -> 88 + Error ("failed to parse defs.main: " ^ e) 89 + | Ok def -> 90 + Ok def ) 91 + 80 92 (* parse lexicon record into permission_set *) 81 93 let parse_permission_set record = 82 - match lexicon_value_of_yojson record with 94 + match extract_main_def record with 83 95 | Error e -> 84 - Error ("failed to parse lexicon record: " ^ e) 85 - | Ok record -> ( 86 - if record.type_ <> "permission-set" then 87 - Error ("not a permission-set lexicon: " ^ record.type_) 96 + Error e 97 + | Ok def -> ( 98 + if def.type_ <> "permission-set" then 99 + Error ("not a permission-set lexicon: " ^ def.type_) 88 100 else 89 - match record.permissions with 101 + match def.permissions with 90 102 | None -> 91 103 Error "permission-set has no permissions" 92 104 | Some permissions -> 93 105 Ok 94 - { title= record.title 106 + { title= def.title 95 107 ; title_lang= None (* skip localized titles for now *) 96 - ; detail= record.detail 108 + ; detail= def.detail 97 109 ; detail_lang= None (* skip localized details for now *) 98 110 ; permissions } ) 99 111