/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠBy ĠG eek s ĠEmp ire . Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠE li as ĠF azel Ċ Ġ* ĠLast Ġmodified Ġ 4 / 1 2 / 2 1 Ġ 8 : 5 0 ĠAM Ċ Ġ* Ċ Ġ* ĠLicensed ĠUnder ĠMIT ĠLicense . Ċ Ġ* Ġhttps :// opensource . org / licenses / MIT Ċ Ġ*/ Ċ Ċ package Ġnet . ge ek semp ire . ready . keep . notes . Content Contexts . Network Operations Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġandroidx . work . work Data Of Ċ import Ġcom . google . firebase . firestore . k tx . firestore Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Content Contexts . Data Structure . Tags Data Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Content Contexts . Data Structure . Text Razor Parameters Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Content Contexts . Endpoints . Natural Language Processing Endpoints Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Database . Data Structure . Notes Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Database . Json . Json IO Ċ import Ġnet . ge ek semp ire . ready . keep . notes . Database . Network Endpoints . Database Endpoints Ċ import Ġnet . ge ek semp ire . ready . keep . notes . R Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . Data OutputStream Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . URL Ċ import Ġjava . nio . charset . Charset Ċ import Ġjavax . net . ssl . Https URLConnection Ċ Ċ class ĠContent Context Process ( app Context : ĠContext , Ġval Ġworker Params : ĠWorker Parameters ) Ġ: ĠCor outine Worker ( app Context , Ġworker Params ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Endpoints Ġ= ĠDatabase Endpoints () ĊĊĠĠĠ Ġprivate Ġval Ġjson IO Ġ= ĠJson IO () ĊĊĠĠĠ Ġprivate Ġvar Ġworker Result : ĠResult Ġ= ĠResult . failure () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work () Ġ: ĠResult Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġworker Params . input Data . get ByteArray (" Request _ Body ") ?. let Ġ{ ĠString ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfirebase UserId Ġ= Ġworker Params . input Data . get ByteArray (" Firebase UserId ") ?. let Ġ{ ĠString ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfirebase Document Id Ġ= Ġworker Params . input Data . get ByteArray (" Firebase Document Id ") ?. let Ġ{ ĠString ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Connection Ġ= ĠURL ( Natural Language Processing Endpoints . Text Razor Endpoint ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Body Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirebase UserId Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirebase Document Id Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttps Connection Ġ= Ġurl Connection . open Connection () Ġas ĠHttp s URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttps Connection . request Method Ġ= Ġ" POST " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttps Connection . setRequest Property (" accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttps Connection . setRequest Property (" x - tex tr azor - key ", Ġapplication Context . getString ( R . string . text Razor Key )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttps Connection . do Output Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttps Connection . connect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata OutputStream Ġ= ĠData OutputStream ( https Connection . output Stream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream . write Bytes ( request Body ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata OutputStream . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Reader Ġ= ĠBufferedReader ( InputStream Reader ( https Connection . inputStream )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinput Line : ĠString ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠStringBuffer () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( buffer Reader . readLine (). also Ġ{ Ġinput Line Ġ= Ġit Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . append ( input Line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer Reader . close () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomplete JsonObject Ġ= ĠJSONObject ( response . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall JsonResponse Array Ġ= Ġ( complete JsonObject . get ( Text Razor Parameters . Response ) Ġas ĠJSONObject )[ Text Razor Parameters . Extract ors Entities ] Ġas ĠJSONArray ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Tags Ġ= ĠArrayList < Tags Data >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġall JsonResponse Array . length ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġall JsonResponse Array [ i ] Ġas ĠJSONObject ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Wiki Data Id Ġ= ĠjsonObject [ Text Razor Parameters . Wiki Data Id ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Wiki Link Ġ= ĠjsonObject [ Text Razor Parameters . Wiki Link ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Tag Ġ= ĠjsonObject [ Text Razor Parameters . Analy zed Text ]. toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Tags . add ( Tags Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwiki Data Id Ġ= Ġa Wiki Data Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwiki Link Ġ= Ġa Wiki Link , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Tag Ġ= Ġa Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase . firestore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( database Endpoints . general Endpoints ( firebase UserId ) Ġ+ Ġ"/" Ġ+ Ġfirebase Document Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotes . Notes Tags , Ġjson IO . write Tags Data ( all Tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). add On Success Listener Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Output Data Ġ= Ġwork Data Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Document _ Id " Ġto Ġfirebase Document Id . toByteArray ( Charset . default Charset ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Note _ Tags " Ġto Ġall Tags . toString (). toByteArray ( Charset . default Charset ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Result Ġ= ĠResult . success ( work Output Data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġworker Result Ġ= ĠResult . failure () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġworker Result ĊĠĠĠ Ġ} Ċ Ċ }