package Ġru . ci an . hu awei . publish . service Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . apache . http . entity . String Entity Ċ import Ġorg . apache . http . entity . mime . Multipart Entity Builder Ċ import Ġorg . apache . http . entity . mime . content . File Body Ċ import Ġru . ci an . hu awei . publish . models . request . AccessToken Request Ċ import Ġru . ci an . hu awei . publish . models . request . FileInfo Request Ċ import Ġru . ci an . hu awei . publish . models . request . Update App FileInfo Request Ċ import Ġru . ci an . hu awei . publish . models . response . AccessToken Response Ċ import Ġru . ci an . hu awei . publish . models . response . AppId Response Ċ import Ġru . ci an . hu awei . publish . models . response . App Info Ċ import Ġru . ci an . hu awei . publish . models . response . File Server O ri Result Response Ċ import Ġru . ci an . hu awei . publish . models . response . Submit Response Ċ import Ġru . ci an . hu awei . publish . models . response . Update App FileInfo Response Ċ import Ġru . ci an . hu awei . publish . models . response . Upload Url Response Ċ import Ġjava . io . File Ċ import Ġjava . lang . IllegalStateException Ċ import Ġjava . nio . charset . Charset Ċ Ċ private Ġconst Ġval ĠDO MAIN _ URL Ġ= Ġ" https :// connect - api . cloud . hu awei . com / api " Ċ private Ġconst Ġval ĠP UB L ISH _ API _ URL Ġ= Ġ"$ DOMAIN _ URL / publish / v 2 " Ċ private Ġconst Ġval ĠG RAN T _ TYPE Ġ= Ġ" client _ credentials " Ċ Ċ internal Ġclass ĠHu awei ServiceImpl Ġ: ĠHu awei Service Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĠĠĠ Ġprivate Ġval ĠhttpClient Ġ= ĠHttpClient Helper () ĊĊĠĠĠ Ġoverride Ġfun ĠgetToken ( ĊĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġclient Secret : ĠString ĊĠĠĠ Ġ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Request Ġ= ĠAccess Token Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠclientId Ġ= ĠclientId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Secret Ġ= Ġclient Secret , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Type Ġ= ĠG RAN T _ TYPE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġgson . toJson ( body Request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠString Entity ( body , ĠCharset . forName (" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġentity . setContent Encoding (" UTF - 8 ") ĊĠĠĠĠĠĠĠ Ġentity . set ContentType (" application / json ") ĊĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Response Ġ= ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"$ DOMAIN _ URL / oauth 2 / v 1 / token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġentity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠAccess Token Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠaccessToken Response . accessToken ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget App ID ( ĊĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ ĠpackageName : ĠString ĊĠĠĠ Ġ): ĠApp Info Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ token " ĊĠĠĠĠĠĠĠ Ġheaders [" client _ id "] Ġ= ĠclientId ĊĊĠĠĠĠĠĠĠ Ġval ĠappId Response Ġ= ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . GET , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"$ PUBL ISH _ API _ URL / appid - list ? packageName =$ packageName ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠApp Id Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( appId Response . app ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" ` app ids ` Ġmust Ġnot Ġbe Ġempty ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠappId Response . app ids [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Upload A pk Url ( ĊĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ ĠappId : ĠString ĊĠĠĠ Ġ): ĠUpload Url Response Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ token " ĊĠĠĠĠĠĠĠ Ġheaders [" client _ id "] Ġ= ĠclientId ĊĊĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . GET , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"$ PUBL ISH _ API _ URL / upload - url ? appId =$ appId & suffix = apk ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠUpload Url Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupload A pk File ( ĊĠĠĠĠĠĠĠ Ġupload Url : ĠString , ĊĠĠĠĠĠĠĠ Ġauth Code : ĠString , ĊĠĠĠĠĠĠĠ Ġapk File : ĠFile ĊĠĠĠ Ġ): ĠFile Server O ri Result Response Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Body Ġ= ĠFile Body ( apk File ) ĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠMultip art Entity Builder . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Part (" file ", Ġfile Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Text Body (" auth Code ", Ġauth Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Text Body (" file Count ", Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Text Body (" parse Type ", Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġheaders [" accept "] Ġ= Ġ" application / json " ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġupload Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġentity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠFile Server O ri Result Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . result . result Code Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" AP K Ġfile Ġuploading Ġis Ġfailed !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate App File Information ( ĊĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ ĠappId : ĠString , ĊĠĠĠĠĠĠĠ Ġfile Info Request List : ĠList < FileInfo Request > ĊĠĠĠ Ġ): ĠUpdate App FileInfo Response Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ token " ĊĠĠĠĠĠĠĠ Ġheaders [" client _ id "] Ġ= ĠclientId ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Request Ġ= ĠUpdate App FileInfo Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlang Ġ= Ġ" ru - RU ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileType Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles Ġ= Ġfile Info Request List ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġgson . toJson ( body Request ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentity Ġ= ĠString Entity ( body , ĠCharset . forName (" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġentity . setContent Encoding (" UTF - 8 ") ĊĠĠĠĠĠĠĠ Ġentity . set ContentType (" application / json ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . PUT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"$ PUBL ISH _ API _ URL / app - file - info ? appId =$ appId ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġentity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠUpdate App FileInfo Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . ret . code Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Update ĠApp ĠFile ĠInfo Ġis Ġfailed . ĠResponse : Ġ$ result ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubmit Publication ( ĊĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ ĠappId : ĠString ĊĠĠĠ Ġ): ĠSubmit Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable Map Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ token " ĊĠĠĠĠĠĠĠ Ġheaders [" client _ id "] Ġ= ĠclientId ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠhttpClient . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Method Ġ= ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ"$ PUBL ISH _ API _ URL / app - submit ? appId =$ appId ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġheaders , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= ĠSubmit Response :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result . ret . code Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( result . ret . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }