/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠB os ch . IO ĠGmbH Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġorg . oss review toolkit . clients . nexus iq Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġcom . fasterxml . jackson . databind . json . Json Mapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ Ċ import Ġjava . net . URI Ċ import Ġjava . util . UUID Ċ Ċ import Ġokhttp 3 . Credentials Ċ import Ġokhttp 3 . Ok HttpClient Ċ Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . jackson . Jack son Converter Factory Ċ import Ġretrofit 2 . http . Body Ċ import Ġretrofit 2 . http . POST Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġthe ĠN exus IQ ĠREST ĠAPI , Ġbased Ġon Ġthe Ġdocumentation Ġfrom Ċ Ġ* Ġhttps :// help . son atype . com / iq server / autom ating / rest - apis . Ċ Ġ*/ Ċ interface ĠN exus Iq Service Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa ĠN exus IQ Ġservice Ġinstance Ġfor Ġcommunic ating Ġwith Ġa Ġserver Ġrunning Ġat Ġthe Ġgiven Ġ[ url ], ĊĠĠĠĠĠĠĠĠ Ġ* Ġoptionally Ġusing Ġa Ġpre - built ĠOk Http Ġ[ client ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient : ĠOk HttpClient ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ): ĠN exus Iq Service Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn exus Iq Client Ġ= Ġ( client Ġ?: ĠOk HttpClient ()). newBuilder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= Ġrequest . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" X - CSRF - TOKEN ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Cookie ", Ġ" CL M - CSRF - TOKEN =$ token ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull Ġ&& Ġpassword Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Builder . header (" Authorization ", ĠCredentials . basic ( user , Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( nexus Iq Client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Jack son Converter Factory . create ( Json Mapper (). register Kotlin Module ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( N exus Iq Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠComponent Details Wrapper ( ĊĠĠĠĠĠĠĠ Ġval Ġcomponent Details : ĠList < Component Details > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) ĊĠĠĠ Ġdata Ġclass ĠComponent Details ( ĊĠĠĠĠĠĠĠ Ġval Ġcomponent : ĠComponent , ĊĠĠĠĠĠĠĠ Ġval Ġsecurity Data : ĠSecurity Data ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠSecurity Data ( ĊĠĠĠĠĠĠĠ Ġval Ġsecurity Issues : ĠList < Security Issue > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) ĊĠĠĠ Ġdata Ġclass ĠSecurity Issue ( ĊĠĠĠĠĠĠĠ Ġval Ġreference : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġseverity : ĠFloat , ĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠURI ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠComponents Wrapper ( ĊĠĠĠĠĠĠĠ Ġval Ġcomponents : ĠList < Component > ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) ĊĠĠĠ Ġdata Ġclass ĠComponent ( ĊĠĠĠĠĠĠĠ Ġval Ġpackage Url : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġthe Ġdetails Ġfor Ġmultiple Ġ[ components ]. ĊĠĠĠĠ Ġ* ĠSee Ġhttps :// help . son atype . com / iq server / autom ating / rest - apis / component - details - rest - api --- v 2 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ POST (" api / v 2 / components / details ") ĊĠĠĠ Ġsuspend Ġfun Ġget Component Details (@ Body Ġcomponents : ĠComponents Wrapper ): ĠComponent Details Wrapper Ċ } Ċ