package Ġcom . j rk . mood 4 food . model . api . endpoints Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . j rk . mood 4 food . model . api . Backend Ċ import Ġcom . j rk . mood 4 food . model . api . Endpoint Ċ import Ġcom . j rk . mood 4 food . model . api . Endpoints Ċ import Ġcom . j rk . mood 4 food . model . api . entity . Recipe Ċ import Ġkotlin . reflect . K Function 1 Ċ Ċ object ĠRecipe Endpoint : ĠEndpoint Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġendpoint Ġ= ĠEnd points . REC IP ES ĊĊĠĠĠ Ġ// ĠGet Ġall Ġrecipes ĊĠĠĠ Ġfun ĠgetAll ( context : ĠContext , Ġcallback : ĠK Function 1 < List < Any >, ĠUnit >, Ġlimit : ĠInt Ġ= Ġ 5 0 , Ġoffset : ĠInt Ġ= Ġ 0 ){ ĊĠĠĠĠĠĠĠ ĠBackend . get Array ( context , Ġendpoint , Ġmap Of (" limit " Ġto Ġ"" Ġ+ Ġlimit , Ġ" offset " Ġto Ġ"" Ġ+ Ġoffset ), Ġ:: do Array Callback , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet Ġone Ġrecipe ĊĠĠĠ Ġfun Ġget ( context : ĠContext , Ġcallback : ĠK Function 1 < Any , ĠUnit >, Ġrecipe Id : ĠInt ){ ĊĠĠĠĠĠĠĠ ĠBackend . get ( context , Ġendpoint , Ġmap Of (" recipe Id " Ġto Ġ"" Ġ+ Ġrecipe Id ), Ġ:: do Callback , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSearch Ġfor Ġrecipes ĊĠĠĠ Ġfun Ġsearch ( context : ĠContext , Ġcallback : ĠK Function 1 < List < Any >, ĠUnit >, Ġquery : ĠString , Ġlimit : ĠInt Ġ= Ġ 5 0 , Ġoffset : ĠInt Ġ= Ġ 0 ){ ĊĠĠĠĠĠĠĠ ĠBackend . get Array ( context , Ġendpoint , Ġmap Of (" search " Ġto Ġquery , Ġ" limit " Ġto Ġ"" Ġ+ Ġlimit , Ġ" offset " Ġto Ġ"" Ġ+ Ġoffset ), Ġ:: do Array Callback , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet Ġrecipes Ġby Ġingredient Ġrating ĊĠĠĠ Ġfun ĠgetBy Rating ( context : ĠContext , Ġcallback : ĠK Function 1 < List < Any >, ĠUnit >, Ġlikes : ĠList < String >, Ġdis likes : ĠList < String >, Ġlimit : ĠInt Ġ= Ġ 5 0 , Ġoffset : ĠInt Ġ= Ġ 0 ){ ĊĠĠĠĠĠĠĠ Ġval Ġlike Ġ= Ġlikes . join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠ Ġval Ġdis like Ġ= Ġdis likes . join ToString ( separator Ġ= Ġ", ") ĊĠĠĠĠĠĠĠ ĠBackend . get Array ( context , Ġendpoint , Ġmap Of (" like " Ġto Ġlike , Ġ" dis like " Ġto Ġdis like , Ġ" limit " Ġto Ġ"" Ġ+ Ġlimit , Ġ" offset " Ġto Ġ"" Ġ+ Ġoffset ), Ġ:: do Array Callback , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconvert ( jsonObject : ĠJsonObject ): ĠRecipe Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġreturn Ġgson . fromJson ( jsonObject , ĠRecipe :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġconvert Array ( json Array : ĠJson Array ): ĠList < Recipe > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġreturn Ġgson . fromJson ( json Array , ĠArray < Recipe >:: class . java ). toList () ĊĠĠĠ Ġ} Ċ Ċ } Ċ