Ċ /* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġpak isan Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ċ Ġ* Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe Ċ Ġ* ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ċ Ġ* Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ċ Ġ* Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ċ Ġ* Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ċ Ġ* Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL Ċ Ġ* ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġpak isan . tele graph cli . requests Ċ Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . nio . charset . Charset Ċ Ċ /** Ċ Ġ* ĠGenerates Ġendpoints Ġfor Ġtele gra . ph Ġapi . Ċ Ġ* Ġhttp :// tele gra . ph / api Ċ Ġ*/ Ċ object ĠTele graph Ġ{ ĊĠĠĠ Ġprivate Ġval Ġendpoint Root Ġ= Ġ" https :// api . tele gra . ph /" ĊĊĠĠĠ Ġconst Ġval ĠSH ORT _ NAME _ MAX _ LENGTH Ġ= Ġ 3 2 ĊĠĠĠ Ġconst Ġval ĠAUTHOR _ NAME _ MAX _ LENGTH Ġ= Ġ 1 2 8 ĊĠĠĠ Ġconst Ġval ĠAUTHOR _ URL _ MAX _ LENGTH Ġ= Ġ 5 1 2 ĊĊĠĠĠ Ġconst Ġval ĠMAX _ PAGE _ TITLE _ LENGTH Ġ= Ġ 2 5 6 ĊĠĠĠ Ġconst Ġval ĠMAX _ CONTENT _ SIZE _ KB Ġ= Ġ 6 4 Ġ* Ġ 1 0 2 4 ĊĊĠĠĠ Ġconst Ġval ĠMIN _ YEAR Ġ= Ġ 2 0 0 0 ĊĠĠĠ Ġconst Ġval ĠMAX _ YEAR Ġ= Ġ 2 1 0 0 ĊĊĠĠĠ Ġconst Ġval ĠURL _ ENCODING Ġ= Ġ" UTF - 8 " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġcreate Ġa Ġnew ĠTele graph Ġaccount . ĠMost Ġusers Ġonly Ġneed Ġone Ġaccount , Ġbut ĊĠĠĠĠ Ġ* Ġthis Ġcan Ġbe Ġuseful Ġfor Ġchannel Ġadministr ators Ġwho Ġwould Ġlike Ġto Ġkeep Ġindividual Ġauthor ĊĠĠĠĠ Ġ* Ġnames Ġand Ġprofile Ġlinks Ġfor Ġeach Ġof Ġtheir Ġchannels . ĠOn Ġsuccess , Ġreturns Ġan ĠAccount Ġobject ĊĠĠĠĠ Ġ* Ġwith Ġthe Ġregular Ġfields Ġand Ġan Ġadditional Ġaccess _ token Ġfield . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġshort Name ĠRequired . ĠAccount Ġname , Ġhelps Ġusers Ġwith Ġseveral Ġaccounts Ġremember Ġwhich ĊĠĠĠĠ Ġ* Ġthey Ġare Ġcurrently Ġusing . ĠDisplay ed Ġto Ġthe Ġuser Ġabove Ġthe Ġ" Edit / Publish " Ġbutton Ġon ĠTele gra . ph , ĊĠĠĠĠ Ġ* Ġother Ġusers Ġdon 't Ġsee Ġthis Ġname . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Name Ġauthor _ name ĠDefault Ġauthor Ġname Ġused Ġwhen Ġcreating Ġnew Ġarticles . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Url ĠDefault Ġprofile Ġlink , Ġopened Ġwhen Ġusers Ġclick Ġon Ġthe Ġauthor 's Ġname Ġbelow Ġthe Ġtitle . ĊĠĠĠĠ Ġ* ĠCan Ġbe Ġany Ġlink , Ġnot Ġnecessarily Ġto Ġa ĠTelegram Ġprofile Ġor Ġchannel . ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġcreate Account ( short Name : ĠString , Ġauthor Name : ĠString Ġ= Ġ"", Ġauthor Url : ĠString Ġ= Ġ"") : ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Account Params ( short Name , Ġauthor Name , Ġauthor Url ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } create Account ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" short _ name =${ URL Encoder . encode ( short Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġif Ġ( author Name . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ name =${ URL Encoder . encode ( author Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Url . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ url =$ author Url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Account Params ( short Name : ĠString , Ġauthor Name : ĠString , Ġauthor Url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( short Name . isBlank () Ġ|| Ġshort Name . length Ġ> ĠSH ORT _ NAME _ MAX _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" short Name Ġcan 't Ġbe Ġempty Ġor Ġblank Ġand Ġmust Ġbe Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" short er Ġthan Ġ$ SHORT _ NAME _ MAX _ LENGTH Ġsymbols ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Name . length Ġ> ĠAUTHOR _ NAME _ MAX _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" author Name Ġmust Ġbe Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" short er Ġthan Ġ$ AUTHOR _ NAME _ MAX _ LENGTH Ġsymbols ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Url . length Ġ> ĠAUTHOR _ URL _ MAX _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" author Name Ġmust Ġbe Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" short er Ġthan Ġ$ AUTHOR _ URL _ MAX _ LENGTH Ġsymbols ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġupdate Ġinformation Ġabout Ġa ĠTele graph Ġaccount . ĠPass Ġonly Ġthe Ġparameters ĊĠĠĠĠ Ġ* Ġthat Ġyou Ġwant Ġto Ġedit . ĠOn Ġsuccess , Ġreturns Ġan ĠAccount Ġobject Ġwith Ġthe Ġdefault Ġfields . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* Ġ@ param Ġshort Name ĠNew Ġaccount Ġname . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Name ĠNew Ġdefault Ġauthor Ġname Ġused Ġwhen Ġcreating Ġnew Ġarticles . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Url ĠNew Ġdefault Ġprofile Ġlink , Ġopened Ġwhen Ġusers Ġclick Ġon Ġthe Ġauthor 's Ġname ĊĠĠĠĠ Ġ* Ġbelow Ġthe Ġtitle . ĠCan Ġbe Ġany Ġlink , Ġnot Ġnecessarily Ġto Ġa ĠTelegram Ġprofile Ġor Ġchannel . ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġedit Account Info ( accessToken : ĠString , Ġshort Name : ĠString , Ġauthor Name : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Url : ĠString Ġ= Ġ"") : ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Account Params ( short Name , Ġauthor Name , Ġauthor Url ) ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } edit Account Info ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" access _ token =${ URL Encoder . encode ( accessToken , Ġ" UTF - 8 ") }") ĊĠĠĠĠĠĠĠ Ġif Ġ( short Name . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& short _ name =${ URL Encoder . encode ( short Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Name . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ name =${ URL Encoder . encode ( author Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Url . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ url =$ author Url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Token ( accessToken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( accessToken . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" accessToken Ġcan 't Ġbe Ġblank ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġget Ġinformation Ġabout Ġa ĠTele graph Ġaccount . ĠReturns Ġan ĠAccount Ġobject Ġon Ġsuccess . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* Ġ@ param Ġfields Ġ( Array Ġof ĠString , Ġdefault Ġ= Ġ[ âĢľ short _ name âĢĿ, âĢľ author _ name âĢĿ, âĢľ author _ url âĢĿ ]) ĠList Ġof Ġaccount ĊĠĠĠĠ Ġ* Ġfields Ġto Ġreturn . ĠAvailable Ġfields : Ġshort _ name , Ġauthor _ name , Ġauthor _ url , Ġauth _ url , Ġpage _ count . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Account Info ( accessToken : ĠString , Ġfields : ĠArray < String > Ġ= ĠarrayOf ()): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } get Account Info ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" access _ token =${ URL Encoder . encode ( accessToken , ĠURL _ ENCODING )} ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( fields . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandled Fields Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfields . forEach Ġ{ Ġhandled Fields . add ("\" ${ URL Encoder . encode ( it , ĠURL _ ENCODING )} \" ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& fields =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( handled Fields . join ToString (",", Ġ"[", Ġ"] ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġre voke Ġaccess _ token Ġand Ġgenerate Ġa Ġnew Ġone , Ġfor Ġexample , Ġif Ġthe Ġuser Ġwould ĊĠĠĠĠ Ġ* Ġlike Ġto Ġreset Ġall Ġconnected Ġsessions , Ġor Ġyou Ġhave Ġreasons Ġto Ġbelieve Ġthe Ġtoken Ġwas Ġcomp romise d . ĊĠĠĠĠ Ġ* ĠOn Ġsuccess , Ġreturns Ġan ĠAccount Ġobject Ġwith Ġnew Ġaccess _ token Ġand Ġauth _ url Ġfields . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġre voke AccessToken ( accessToken : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } revoke AccessToken ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" access _ token =${ URL Encoder . encode ( accessToken , ĠURL _ ENCODING )} ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġcreate Ġa Ġnew ĠTele graph Ġpage . ĠOn Ġsuccess , Ġreturns Ġa ĠPage Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* Ġ@ param Ġtitle ĠRequired . ĠPage Ġtitle . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Name ĠAuthor Ġname , Ġdisplayed Ġbelow Ġthe Ġarticle 's Ġtitle . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Url ĠProfile Ġlink , Ġopened Ġwhen Ġusers Ġclick Ġon Ġthe Ġauthor 's Ġname Ġbelow Ġthe Ġtitle . ĊĠĠĠĠ Ġ* ĠCan Ġbe Ġany Ġlink , Ġnot Ġnecessarily Ġto Ġa ĠTelegram Ġprofile Ġor Ġchannel . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent ĠRequired . ĠContent Ġof Ġthe Ġpage . ĊĠĠĠĠ Ġ* Ġ@ param Ġreturn Content ĠIf Ġtrue , Ġa Ġcontent Ġfield Ġwill Ġbe Ġreturned Ġin Ġthe ĠPage Ġobject ĊĠĠĠĠ Ġ* Ġ( see : Ġhttp :// tele gra . ph / api # Content - format ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġcreate Page ( accessToken : ĠString , Ġtitle : ĠString , Ġauthor Name : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Url : ĠString Ġ= Ġ"", Ġcontent : ĠString , Ġreturn Content : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġvalidate Account Params (" plug ", Ġauthor Name , Ġauthor Url ) ĊĠĠĠĠĠĠĠ Ġvalidate Page Params ( title , Ġcontent , Ġ" plug ") ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } create Page ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" access _ token =${ URL Encoder . encode ( accessToken , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& title =${ URL Encoder . encode ( title , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġif Ġ( author Name . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ name =${ URL Encoder . encode ( author Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Url . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ url =$ author Url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġendpoint . append ("& content =$ content ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& return _ content =$ return Content ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Page Params ( title : ĠString , Ġcontent : ĠString , Ġpath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( title . isBlank () Ġ|| Ġtitle . length Ġ> ĠMAX _ PAGE _ TITLE _ LENGTH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" title Ġcan 't Ġbe Ġblank Ġand Ġmust Ġbe Ġshorter Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" than Ġ$ MAX _ PAGE _ TITLE _ LENGTH ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( content . isBlank () Ġ|| Ġ(( content . toByteArray ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCharset . forName ( URL _ ENCODING )). size Ġ* Ġ 1 0 2 4 ) Ġ> ĠMAX _ CONTENT _ SIZE _ KB )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" content Ġcan 't Ġbe Ġblank Ġand Ġmust Ġbe Ġless Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" than Ġ$ MAX _ CONTENT _ SIZE _ KB Ġkb ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( path . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" path Ġcan 't Ġbe Ġblank ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġedit Ġan Ġexisting ĠTele graph Ġpage . ĠOn Ġsuccess , Ġreturns Ġa ĠPage Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath ĠRequired . ĠPath Ġto Ġthe Ġpage . ĊĠĠĠĠ Ġ* Ġ@ param Ġtitle ĠRequired . ĠPage Ġtitle . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent ĠRequired . ĠContent Ġof Ġthe Ġpage . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Name ĠAuthor Ġname , Ġdisplayed Ġbelow Ġthe Ġarticle 's Ġtitle . ĊĠĠĠĠ Ġ* Ġ@ param Ġauthor Url ĠProfile Ġlink , Ġopened Ġwhen Ġusers Ġclick Ġon Ġthe Ġauthor 's Ġname Ġbelow Ġthe Ġtitle . ĊĠĠĠĠ Ġ* ĠCan Ġbe Ġany Ġlink , Ġnot Ġnecessarily Ġto Ġa ĠTelegram Ġprofile Ġor Ġchannel . ĊĠĠĠĠ Ġ* Ġ@ param Ġreturn Content ĠIf Ġtrue , Ġa Ġcontent Ġfield Ġwill Ġbe Ġreturned Ġin Ġthe ĠPage Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġedit Page ( accessToken : ĠString , Ġpath : ĠString , Ġtitle : ĠString , Ġcontent : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Name : ĠString Ġ= Ġ"", Ġauthor Url : ĠString Ġ= Ġ"", Ġreturn Content : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġvalidate Page Params ( title , Ġcontent , Ġpath ) ĊĠĠĠĠĠĠĠ Ġvalidate Account Params (" plug ", Ġauthor Name , Ġauthor Url ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } edit Page /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? access _ token =${ URL Encoder . encode ( accessToken , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& title =${ URL Encoder . encode ( title , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġif Ġ( author Name . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ name =${ URL Encoder . encode ( author Name , ĠURL _ ENCODING )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( author Url . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġendpoint . append ("& author _ url =$ author Url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġendpoint . append ("& content =$ content ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& return _ content =$ return Content ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġget Ġa ĠTele graph Ġpage . ĠReturns Ġa ĠPage Ġobject Ġon Ġsuccess . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpath ĠRequired . ĠPath Ġto Ġthe ĠTele graph Ġpage Ġ( in Ġthe Ġformat ĠTitle - 1 2 - 3 1 , Ġi . e . Ġeverything ĊĠĠĠĠ Ġ* Ġthat Ġcomes Ġafter Ġhttp :// tele gra . ph /). ĊĠĠĠĠ Ġ* Ġ@ param Ġreturn Content ĠIf Ġtrue , Ġcontent Ġfield Ġwill Ġbe Ġreturned Ġin ĠPage Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Page ( path : ĠString , Ġreturn Content : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Page Params (" plug ", Ġ" plug ", Ġpath ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } getPage /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? return _ content =$ return Content ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġget Ġa Ġlist Ġof Ġpages Ġbelong ing Ġto Ġa ĠTele graph Ġaccount . ĠReturns Ġa ĠPage List ĊĠĠĠĠ Ġ* Ġobject , Ġsorted Ġby Ġmost Ġrecently Ġcreated Ġpages Ġfirst . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaccessToken ĠRequired . ĠAccess Ġtoken Ġof Ġthe ĠTele graph Ġaccount . ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĠSequential Ġnumber Ġof Ġthe Ġfirst Ġpage Ġto Ġbe Ġreturned . ĊĠĠĠĠ Ġ* Ġ@ param Ġlimit ĠLim its Ġthe Ġnumber Ġof Ġpages Ġto Ġbe Ġretrieved . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Page List ( accessToken : ĠString , Ġoffset : ĠInt Ġ= Ġ 0 , Ġlimit : ĠInt Ġ= Ġ 5 0 ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Token ( accessToken ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } getPage List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? access _ token =$ accessToken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& offset =$ offset ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& limit =$ limit ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġto Ġget Ġthe Ġnumber Ġof Ġviews Ġfor Ġa ĠTele graph Ġarticle . ĠReturns Ġa ĠPage Views Ġobject ĊĠĠĠĠ Ġ* Ġon Ġsuccess . ĠBy Ġdefault , Ġthe Ġtotal Ġnumber Ġof Ġpage Ġviews Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpath ĠRequired . ĠPath Ġto Ġthe ĠTele graph Ġpage Ġ( in Ġthe Ġformat ĠTitle - 1 2 - 3 1 , Ġwhere Ġ 1 2 Ġis Ġthe ĊĠĠĠĠ Ġ* Ġmonth Ġand Ġ 3 1 Ġthe Ġday Ġthe Ġarticle Ġwas Ġfirst Ġpublished ). ĊĠĠĠĠ Ġ* Ġ@ param Ġyear ĠThe Ġnumber Ġof Ġpage Ġviews Ġfor Ġthe Ġrequested Ġyear Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth ĠThe Ġnumber Ġof Ġpage Ġviews Ġfor Ġthe Ġrequested Ġmonth Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* Ġ@ param Ġday ĠThe Ġnumber Ġof Ġpage Ġviews Ġfor Ġthe Ġrequested Ġday Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* Ġ@ param Ġhour ĠIf Ġpassed , Ġthe Ġnumber Ġof Ġpage Ġviews Ġfor Ġthe Ġrequested Ġhour Ġwill Ġbe Ġreturned . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġin Ġcase Ġwhen Ġfields Ġare Ġincorrect . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠString , Ġwhich Ġcontains Ġurl Ġto Ġendpoint Ġwith Ġgiven Ġparameters . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Views ( path : ĠString , Ġyear : ĠInt , Ġmonth : ĠInt , Ġday : ĠInt , Ġhour : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Page Params (" plug ", Ġ" plug ", Ġpath ) ĊĠĠĠĠĠĠĠ Ġvalidate Time Units ( year , Ġmonth , Ġday , Ġhour ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } get Views /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? year =$ year ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& month =$ month ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& day =$ day ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& hour =$ hour ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Views ( path : ĠString , Ġhour : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Page Params (" plug ", Ġ" plug ", Ġpath ) ĊĠĠĠĠĠĠĠ Ġvalidate Time Units ( null , Ġnull , Ġnull , Ġhour ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } get Views /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? hour =$ hour ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Views ( path : ĠString , Ġday : ĠInt , Ġhour : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Page Params (" plug ", Ġ" plug ", Ġpath ) ĊĠĠĠĠĠĠĠ Ġvalidate Time Units ( null , Ġnull , Ġday , Ġhour ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } get Views /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? day =$ day ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& hour =$ hour ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġget Views ( path : ĠString , Ġmonth : ĠInt , Ġday : ĠInt , Ġhour : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Page Params (" plug ", Ġ" plug ", Ġpath ) ĊĠĠĠĠĠĠĠ Ġvalidate Time Units ( null , Ġmonth , Ġday , Ġhour ) ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġendpoint . append ("${ endpoint Root } get Views /$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ? month =$ month ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& day =$ day ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("& hour =$ hour ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġendpoint . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Year ( year : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( year Ġ! in Ġ 2 0 0 0 .. 2 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" year Ġmust Ġbe Ġbetween Ġ$ MIN _ YEAR Ġand Ġ$ MAX _ YEAR ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Month ( month : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( month Ġ! in Ġ 1 .. 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" month Ġmust Ġbe Ġbetween Ġ 1 Ġand Ġ 1 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Day ( day : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( day Ġ! in Ġ 1 .. 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" day Ġmust Ġbe Ġbetween Ġ 1 Ġand Ġ 1 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Hour ( hour : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hour Ġ! in Ġ 0 .. 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" hour Ġmust Ġbe Ġbetween Ġ 0 Ġand Ġ 2 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġvalidate Time Units ( year : ĠInt ? Ġ= Ġnull , Ġmonth : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday : ĠInt ? Ġ= Ġnull , Ġhour : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( year Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Year ( year ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( month Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Month ( month ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( day Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Day ( day ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvalidate Hour ( hour ) ĊĠĠĠ Ġ} Ċ Ċ }