package Ġme . v icky ch ij w ani . spect re . network Ċ Ċ import Ġcom . google . gson .* Ċ import Ġme . v icky ch ij w ani . spect re . network . entity .* Ċ import Ġme . v icky ch ij w ani . spect re . util . Network Utils Ċ import Ġme . v icky ch ij w ani . spect re . util . log . Log Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġretrofit 2 .* Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ object ĠG host Api Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠG host Api Utils :: class . java . simple Name ĊĊĠĠĠ Ġfun Ġget Ret rofit ( blog Url : ĠString , ĠhttpClient : ĠOk HttpClient ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠbaseUrl Ġ= ĠNetwork Utils . make Absolute Url ( blog Url , Ġ" ghost / api / v 0 . 1 /") ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Date :: class . java , ĠDate Deserializer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Configuration List :: class . java , ĠConfiguration List Deserializer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter Factory ( Post Type Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setField Naming Policy ( Field Naming Policy . LOWER _ CASE _ WITH _ UNDER SCO RES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ex clusion Str ategies ( Realm Ex clusion Strategy (), ĠAnnotation Ex clusion Strategy ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( httpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor ĠHTML Ġoutput Ġ( e . g ., Ġto Ġget Ġthe Ġclient Ġsecret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( String Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġraw ĠJSONObject Ġoutput Ġ( e . g ., Ġfor Ġthe Ġ/ configuration / about Ġcall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( JSONObject Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġdomain Ġobjects ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse Api Errors ( ret rofit : ĠRet rofit , Ġexception : ĠHttp Exception ): ĠApi Error List ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġapi Errors : ĠApi Error List ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexception . response () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Body Ġ= Ġresponse . error Body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Errors Ġ= Ġretrofit . response Body Converter < Any >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApi Error List :: class . java , ĠarrayOf Null s ( 0 )). convert ( error Body !! ) Ġas ĠApi Error List ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Error Ġwhile Ġparsing Ġlogin Ġerrors ! ĠResponse Ġcode Ġ= Ġ% d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception . response (). code ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Error Ġwhile Ġparsing Ġlogin Ġerrors ! ĠResponse Ġcode Ġ= Ġ% d ", Ġexception . response (). code ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġapi Errors ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Only Markdown Card ( mobile doc : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Parser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġmobile doc Json Ġ= Ġjson Parser . parse ( mobile doc ). as JsonObject ĊĠĠĠĠĠĠĠ Ġreturn Ġhas Only Markdown Card ( mobile doc Json ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Only Markdown Card ( mobile doc Json : ĠJsonObject ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcards Json Ġ= Ġmobile doc Json . get (" cards "). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Card Json Ġ= Ġcards Json . get ( 0 ). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Card Name Ġ= Ġfirst Card Json . get ( 0 ). asString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Card Content Ġ= Ġfirst Card Json . get ( 1 ). as JsonObject ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsections Json Ġ= Ġmobile doc Json . get (" sections "). as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore Ġempty Ġsections , Ġonly Ġcheck Ġnon - empty Ġsections ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnon Empty Sections Ġ= Ġmutable ListOf < Json Element >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. ( sections Json . size ()- 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsection Ġ= Ġsections Json . get ( i ). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġempty Ġsections Ġare Ġof Ġthe Ġform Ġ[ 1 , Ġ" p ", Ġ[] ] Ġ- Ġthe Ġ" 1 " Ġindicates Ġit 's Ġa Ġ" markup " Ġsection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / b ust le / mobile doc - kit / blob / master / MOB ILE DOC . md # sections ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Section Empty Ġ= Ġsection . size () Ġ== Ġ 3 Ġ&& Ġsection . get ( 0 ). as Int Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġsection . get ( 2 ). as JsonArray . size () Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Section Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnon Empty Sections . add ( section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Non Empty Section Json Ġ= Ġnon Empty Sections [ 0 ]. as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( cards Json . size () Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġmarkdown Ġcard Ġwas Ġnamed Ġ" card - markdown " Ġbefore ĠKo en ig Ġcame Ġalong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ( first Card Name Ġ== Ġ" markdown " Ġ|| Ġfirst Card Name Ġ== Ġ" card - markdown ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirst Card Content . has (" markdown ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / b ust le / mobile doc - kit / blob / master / MOB ILE DOC . md # sections ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsections : Ġ[[ 1 0 , Ġ 0 ]] Ġi . e ., Ġa Ġsingle Ġcard Ġ( id Ġfor Ġany Ġcard Ġ= Ġ 1 0 ) Ġat Ġindex Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnon Empty Sections . size Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirst Non Empty Section Json . get ( 0 ). as Int Ġ== Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirst Non Empty Section Json . get ( 1 ). as Int Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize Mobile doc (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" version ": Ġ" 0 . 3 . 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mark ups ": Ġ[], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" atoms ": Ġ[], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cards ": Ġ[[ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" card - markdown ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" card Name ": Ġ" card - markdown ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" markdown ": Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ]], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sections ": Ġ[[ 1 0 , Ġ 0 ]] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Markdown Into Mobile doc ( markdown : ĠString , Ġmobile doc : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Parser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġmobile doc Json Ġ= Ġjson Parser . parse ( mobile doc ). as JsonObject ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Ġhas Only Markdown Card ( mobile doc Json )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠKo en ig Post Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmobile doc Json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (" cards "). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( 0 ). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( 1 ). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addProperty (" markdown ", Ġmarkdown ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġmobile doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠKo en ig Post Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmobile doc Json . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmobile doc To Markdown ( mobile doc : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Parser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġmobile doc Json Ġ= Ġjson Parser . parse ( mobile doc ). as JsonObject ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Ġhas Only Markdown Card ( mobile doc Json )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠKo en ig Post Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmobile doc Json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (" cards "). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( 0 ). as JsonArray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( 1 ). as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (" markdown "). asString ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġmobile doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠKo en ig Post Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠKo en ig Post Exception ĊĠĠĠ Ġ: ĠRuntimeException (" This Ġis Ġa ĠKo en ig Ġeditor Ġpost Ġand Ġtherefore Ġcurrently Ġunsupported ") Ċ