package Ġcom . api . ig db . request Ċ Ċ import Ġcom . api . ig db . exceptions . RequestException Ċ import Ġcom . api . ig db . utils . Endpoint Ċ import Ġcom . github . kit tin un f . fuel . http Post Ċ Ċ /** Ċ Ġ* ĠThe ĠApi Request er Ġobject Ġholds Ġthe ĠAPI ĠKey Ġand Ġuses Ġit Ġto Ġrequest Ġthe ĠIG DB ĠAPI . Ċ Ġ*/ Ċ private Ġconst Ġval ĠIG DB _ API _ URL Ġ= Ġ" https :// api . ig db . com / v 4 " Ċ object ĠIG DB Wrapper Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġrequest Headers : ĠMap < String , ĠAny > Ġ= Ġmap Of (" x - user - agent " Ġto Ġ" ig db - api - jvm ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠSet Ġmethod Ġfor ĠAPI ĠCredentials ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġendpoint ĠThe Ġendpoint Ġthe Ġrequest ĊĠĠĠĠ Ġ* Ġ@ property Ġquery ĠThe ĠApi Ġquery Ġto Ġrequest Ġwith ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġraw ĠByteArray Ġto Ġuse Ġwith Ġgenerated Ġproto Ġfiles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Credentials ( client ID : ĠString , ĠaccessToken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Headers Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" client - id " Ġto Ġclient ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" authorization " Ġto Ġ" Bearer Ġ$ accessToken ", Ġ" x - user - agent " Ġto Ġ" ig db - api - jvm ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠApi Ġrequest Ġfunction Ġfor ĠProtocol ĠBu ffers ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġendpoint ĠThe Ġendpoint Ġthe Ġrequest ĊĠĠĠĠ Ġ* Ġ@ property Ġquery ĠThe ĠApi Ġquery Ġto Ġrequest Ġwith ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġraw ĠByteArray Ġto Ġuse Ġwith Ġgenerated Ġproto Ġfiles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( RequestException :: class ) ĊĠĠĠ Ġfun Ġapi Proto Request ( endpoint : ĠEndpoint , Ġquery : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest URL Ġ= Ġ"$ IG DB _ API _ URL ${ endpoint . url ()}. pb " ĊĠĠĠĠĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġrequest URL . http Post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( request Headers ). body ( query ). response String () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response . statusCode Ġ!= Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRequest Exception ( response . statusCode , Ġrequest , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠApi Ġrequest Ġfunction Ġfor ĠJSON ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġendpoint ĠThe Ġendpoint Ġthe Ġrequest ĊĠĠĠĠ Ġ* Ġ@ property Ġquery ĠThe ĠApi Ġquery Ġto Ġrequest Ġwith ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġraw ĠString Ġresult Ġfrom Ġthe Ġrequest ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( RequestException :: class ) ĊĠĠĠ Ġfun Ġapi Json Request ( endpoint : ĠEndpoint , Ġquery : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest URL Ġ= Ġ"$ IG DB _ API _ URL ${ endpoint . url () }" ĊĠĠĠĠĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġrequest URL . http Post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( request Headers ). body ( query ). response String () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( response . statusCode Ġ!= Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRequest Exception ( response . statusCode , Ġrequest , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult . get () ĊĠĠĠ Ġ} Ċ } Ċ