package Ġcom . code path . apps . rest client template Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġcom . code path . apps . rest client template . models . Tweet Ċ import Ġcom . code path . as yn ch ttp client . callback . Json HttpResponse Handler Ċ import Ġokhttp 3 . Headers Ċ Ċ class ĠCompose Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġet Compose Ġ: ĠEditText ĊĠĠĠ Ġlateinit Ġvar Ġbtn Tweet Ġ: ĠButton ĊĠĠĠĠ Ġlateinit Ġvar Ġclient : ĠTwitter Client ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ compose ) ĊĊĠĠĠĠĠĠĠ Ġet Compose Ġ= ĠfindViewById ( R . id . et Tweet Compose ) ĊĠĠĠĠĠĠĠ Ġbtn Tweet = ĠfindViewById ( R . id . btn Tweet ) ĊĠĠĠĠĠĠĠ Ġclient = ĠTwitter Application . get RestClient ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// hand ing Ġthe Ġuser Ġclick Ġon Ġtweet Ġbutton ĊĠĠĠĠĠĠĠ Ġbtn Tweet . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 st Ġthing Ġwe Ġneed Ġto Ġgrab Ġthe Ġcontent Ġof Ġthe Ġedit Text ( et Compose ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠTweet Content Ġ= Ġet Compose . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Make Ġsure Ġthe Ġtweet Ġis Ġnot Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Tweet Content . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Empty ĠT weets Ġare Ġnot Ġallowed ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// make Ġsure Ġthe Ġtweet Ġis Ġunder Ġch are ct er Ġcount ĊĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( Tweet Content . length Ġ> 1 4 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Tweet Ġis Ġtoo Ġlong Ġ! ĠLimit Ġis Ġ 1 4 0 Ġch are ct ers ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . publish Tweet ( Tweet Content , object Ġ: Json HttpResponse Handler (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders : ĠHeaders ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable : ĠThrowable ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Failed ", throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( statusCode : ĠInt , Ġheaders : ĠHeaders ?, Ġjson : ĠJSON ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// back Ġto Ġtimeline Ġactivity Ġto Ġshow Ġthe Ġtweets ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG ," Published ĠT weets Ġ! ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtweet Ġ= ĠTweet . fromJson ( json . jsonObject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" tweet ", Ġtweet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Grab Ġthe ĠAPI Ġcall Ġto Ġpublish Ġtweet ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Ġ" Compose Activity " ĊĠĠĠ Ġ} Ċ } ĊĊ