package Ġcom . gen ius . live . Video Player Integration Ċ Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestBody Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġorg . springframework . web . reactive . function . client . Web Client Ċ import Ġreactor . core . publisher . Mono Ċ import Ġjava . util .* Ċ Ċ @ RestController Ċ class ĠVideo Controller Ġ{ ĊĊĠĠĠ Ġ@ PostMapping ("/ streaming Params ") ĊĠĠĠ Ġfun Ġget Streaming Params (@ RequestBody Ġrequest : ĠRequest ): ĠResponseEntity < Video Api Fixture Response > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġoptional Token Ġ= ĠgetToken ( request . auth Params ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( optional Token . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity . status ( HttpStatus . FOR BID DEN ). build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġoptional Token . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptional Fixture Info Ġ= Ġget Fixture Info ( request , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( optional Fixture Info . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity . bad Request (). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponseEntity . ok ( optional Fixture Info . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Fixture Info ( request : ĠRequest , Ġtoken : ĠVideo Api Token Response ): ĠOptional < Video Api Fixture Response > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠapiKey Ġ= Ġrequest . auth Params . apiKey ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġrequest . fixture Request Params . generate Url () ĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġ" https :// api . gen ius sport s . com / Video - v 3 /${ request . env }" ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġhost Ġ+ Ġpath ĊĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠMono . just ( request . fixture RequestBody ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠWeb Client . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Header (" x - api - key ", ĠapiKey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. default Header (" Authorization ", Ġtoken . Id Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( body , ĠFix ture RequestBody :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body To Mono ( Video Api Fixture Response :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. block Optional () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetToken ( auth Params : ĠAuth Params ): ĠOptional < Video Api Token Response > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġ" https :// api . gen ius sport s . com / Auth - v 1 / PRO D / login " ĊĊĠĠĠĠĠĠĠ Ġreturn ĠWeb Client . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( host ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Mono . just ( auth Params ), ĠAuth Params :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. retrieve () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body To Mono ( Video Api Token Response :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. block Optional () ĊĠĠĠ Ġ} Ċ } Ċ