/* Ċ Ġ* Ġ<!-- Ċ Ġ* ĠĠ ĠNext cloud ĠAndroid Ġclient Ġapplication Ċ Ġ* Ċ Ġ* ĠĠ Ġ@ author ĠT ob ias ĠK amin sky Ċ Ġ* ĠĠ ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠT ob ias ĠK amin sky Ċ Ġ* ĠĠ ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠNext cloud ĠGmbH Ċ Ġ* Ċ Ġ* ĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* ĠĠ Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . ĠSee Ġthe Ċ Ġ* ĠĠ ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠ Ġalong Ġwith Ġthis Ġprogram . ĠIf Ġnot , Ġsee Ġ< https :// www . gnu . org / licenses />. Ċ Ġ* Ġ--> Ċ Ġ*/ Ċ package Ġcom . next cloud . android . lib . resources . search Ċ Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . next cloud . common . Next cloud Client Ċ import Ġcom . next cloud . operations . GetMethod Ċ import Ġcom . own cloud . android . lib . common . SearchResult Ċ import Ġcom . own cloud . android . lib . common . operations . Remote Operation Result Ċ import Ġcom . own cloud . android . lib . common . utils . Log _ OC Ċ import Ġcom . own cloud . android . lib . ocs . Server Response Ċ import Ġcom . own cloud . android . lib . resources . O CS Remote Operation Ċ import Ġorg . apache . commons . http client . HttpStatus Ċ import Ġjava . net . URL Encoder Ċ Ċ /** Ċ Ġ* ĠGet Ġsearch Ġresult Ġby Ġa Ġspecific Ġunified Ġsearch Ġprovider Ċ Ġ*/ Ċ @ Suppress (" Too Generic Exception Ca ught ") Ċ class ĠUn ified Search Remote Operation ( ĊĠĠĠ Ġ@ NonNull Ġval Ġprovider : ĠString , ĊĠĠĠ Ġ@ NonNull Ġval Ġquery : ĠString , ĊĠĠĠ Ġval Ġcursor : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġlimit : ĠInt Ġ= Ġ 5 Ċ ) Ġ: ĊĠĠĠ ĠO CS Remote Operation < SearchResult >() Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠUn ified Search Remote Operation :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEND POINT Ġ= Ġ"/ ocs / v 2 . php / search / providers /" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSEARCH _ TERM Ġ= Ġ"/ search ? term =" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠJSON _ FORMAT Ġ= Ġ"& format = json " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLIMIT Ġ= Ġ"& limit =% d " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCUR SOR Ġ= Ġ"& cursor =% d " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun ( client : ĠNext cloud Client ): ĠRemote Operation Result < SearchResult > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( query . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRemote Operation Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIllegalArgumentException (" Query Ġmay Ġnot Ġbe Ġempty Ġor Ġblank !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠRemote Operation Result < SearchResult > ĊĠĠĠĠĠĠĠ Ġvar Ġget Method : ĠGet Method ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuri Ġ= Ġclient . base Uri . toString () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEND POINT Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSEARCH _ TERM Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURL Encoder . encode ( query , Ġ" UTF - 8 ") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJSON _ FORMAT Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLIMIT . format ( limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ+= ĠCUR SOR . format ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Method Ġ= ĠGet Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremote Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Method . add Request Header ( O CS _ API _ HEADER , ĠO CS _ API _ HEADER _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġclient . execute ( getMethod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== ĠHttpStatus . SC _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Providers Ġ= Ġget Server Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Token < Server Response < SearchResult > ?> () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. ocs ?. data ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( search Providers Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠRemote Operation Result ( true , Ġget Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result Data Ġ= Ġsearch Providers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠRemote Operation Result ( false , Ġget Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠRemote Operation Result ( false , Ġget Method ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠRemote Operation Result ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog _ OC . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Search Ġwith Ġ" Ġ+ Ġquery Ġ+ Ġ" Ġto Ġ" Ġ+ Ġprovider Ġ+ Ġ" Ġfailed :" Ġ+ Ġresult . log Message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Method ?. release Connection () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ