package Ġnet . ad ri ant od t . not ion api . impl . model Ċ Ċ import Ġcom . gr ack . nano json . JsonArray Ċ import Ġcom . gr ack . nano json . JsonObject Ċ import Ġnet . ad ri ant od t . not ion api . model . page . Page Ċ import Ġnet . ad ri ant od t . not ion api . model . page . Page Parent Ċ import Ġnet . ad ri ant od t . not ion api . model . page . PropertyValue Ċ import Ġjava . time . Offset DateTime Ċ Ċ data Ġclass ĠPage Impl ( ĊĠĠĠ Ġoverride Ġval Ġid : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcreated Time : ĠOffset DateTime , ĊĠĠĠ Ġoverride Ġval Ġlast Edited Time : ĠOffset DateTime , ĊĠĠĠ Ġoverride Ġval Ġarchived : ĠBoolean , ĊĠĠĠ Ġoverride Ġval Ġproperties : ĠMap < String , ĠProperty Value >, ĊĠĠĠ Ġoverride Ġval Ġparent : ĠPage Parent Ċ ) Ġ: ĠPage Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Response ( raw : ĠAny ?): ĠPage Impl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( raw Ġis ĠJsonObject ) Ġ{ Ġ" Response Ġbody Ġis Ġnot Ġa ĠJsonObject " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom JsonObject ( raw ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom JsonArray ( array : ĠJson Array ): ĠList < Page Impl > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( array . all Ġ{ Ġit Ġis ĠJsonObject Ġ}) Ġ{ Ġ" Invalid Ġinput , Ġarray Ġshould Ġonly Ġcontain ĠJson Objects ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarray . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < JsonObject >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġfrom JsonObject ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom JsonObject ( obj : ĠJsonObject ): ĠPage Impl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( obj . getString (" object ") Ġ== Ġ" page ") Ġ{ Ġ" Object Ġis Ġnot Ġa Ġpage " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPage Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . getString (" id ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . getString (" created _ time ") !!. to Offset DateTime (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . getString (" last _ edited _ time ") !!. to Offset DateTime (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj . getBoolean (" arch ived "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Value Impl . from JsonObject Map ( obj . getObject (" properties ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent From JsonObject ( obj . getObject (" parent ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġparent From JsonObject ( obj : ĠJsonObject ): ĠPage Parent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġtype Ġ= Ġobj . getString (" type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" database _ id " Ġ-> ĠPage Parent . Database ( obj . getString (" database _ id ") !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" page _ id " Ġ-> ĠPage Parent . Page ( obj . getString (" page _ id ") !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" workspace " Ġ-> ĠPage Parent . Workspace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Illegal Ġtype Ġ'$ type '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ