package Ġcom . ins om ni ac g ks . new movies and shows . backend Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġcom . ins om ni ac g ks . new movies and shows . models . Show Model Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ Ċ class ĠFetch Shows ( private Ġvar Ġlink : ĠString ) Ġ: ĠAsync Task < Void , ĠVoid , ĠArrayList < Show Model >>() Ġ{ ĊĊĠĠĠ Ġvar Ġdelegate : ĠFetch Shows . Async Response ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠAsync Response Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess Finish ( output : ĠArrayList < Show Model >, Ġtotal _ pages : ĠInt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġvoid s : ĠVoid ): ĠArrayList < Show Model >? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġshows : ĠArrayList < Show Model >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . request Method Ġ= Ġ" GET " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( InputStream Reader ( client . inputStream )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġreader . readLine () Ġ?: Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshows Ġ= Ġget Shows ( builder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġshows ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( JSONException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget Shows ( JSON str : ĠString ): ĠArrayList < Show Model >? Ġ{ ĊĠĠĠĠĠĠĠ Ġtotal _ pages Ġ= ĠJSONObject ( JSON str ). getInt (" total _ pages ") ĊĠĠĠĠĠĠĠ Ġval Ġresult Array Ġ= ĠJSONObject ( JSON str ). get JSONArray (" results ") ĊĠĠĠĠĠĠĠ Ġvar Ġshows : ĠArrayList < Show Model >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( result Array . length () Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshows Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresult Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġresult Array . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . getString (" original _ language ") Ġ== Ġ" en ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen res Ġ= Ġitem . get JSONArray (" genre _ ids ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen res List Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġgen res . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen res List . add ( genres . getInt ( j )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshows . add ( Show Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . getInt (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . getString (" original _ name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . getString (" first _ air _ date "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . getString (" overview "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . getDouble (" vote _ average "). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . BASE _ POST ER _ PATH Ġ+ Ġitem . getString (" poster _ path "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . BASE _ BACK DROP _ PATH Ġ+ Ġitem . getString (" backdrop _ path "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen res List )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġshows ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Execute ( show Models : ĠArrayList < Show Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Execute ( show Models ) ĊĠĠĠĠĠĠĠ Ġdelegate !!. process Finish ( show Models , Ġtotal _ pages ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtotal _ pages : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ }