// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . plugins . github . authentication . util Ċ Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġorg . jetbrains . plugins . github . api .* Ċ import Ġorg . jetbrains . plugins . github . api . data . Github Authenticated User Ċ Ċ object ĠGH Security Util Ġ{ ĊĠ Ġprivate Ġconst Ġval ĠRE PO _ SCOPE Ġ= Ġ" repo " ĊĠ Ġprivate Ġconst Ġval ĠG IST _ SCOPE Ġ= Ġ" gist " ĊĠ Ġprivate Ġconst Ġval ĠREAD _ ORG _ SCOPE Ġ= Ġ" read : org " ĊĠ Ġval ĠMASTER _ SCOPES Ġ= ĠlistOf ( REPO _ SCOPE , ĠG IST _ SCOPE , ĠREAD _ ORG _ SCOPE ) ĊĊĠ Ġconst Ġval ĠDEFAULT _ CLIENT _ NAME Ġ= Ġ" Github ĠIntegration ĠPlugin " ĊĊĠ Ġ@ Jvm Static ĊĠ Ġinternal Ġfun Ġload CurrentUser With Scopes ( executor : ĠGithub ApiRequest Executor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Indicator : ĠProgress Indicator , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserver : ĠGithub Server Path ): ĠPair < Github Authenticated User , ĠString ?> Ġ{ ĊĠĠĠ Ġvar Ġscopes : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġval Ġdetails Ġ= Ġexecutor . execute ( progress Indicator , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠGithub ApiRequest . Get . Json < Github Authenticated User >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGithub Api Requests . getUrl ( server , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGithub Api Requests . CurrentUser . url Suffix ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGithub Authenticated User :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġextract Result ( response : ĠGithub ApiResponse ): ĠGithub Authenticated User Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscopes Ġ= Ġresponse . find Header (" X - OAuth - Scopes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . extract Result ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. with Operation Name (" get Ġprofile Ġinformation ")) ĊĠĠĠ Ġreturn Ġdetails Ġto Ġscopes ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Static ĊĠ Ġinternal Ġfun Ġis En ough Scopes ( gr anted Scopes : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġscopes Array Ġ= Ġgranted Scopes . split (", Ġ") ĊĠĠĠ Ġif Ġ( scopes Array . isEmpty ()) Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ(! scopes Array . contains ( REPO _ SCOPE )) Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ(! scopes Array . contains ( G IST _ SCOPE )) Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ( scopes Array . none Ġ{ Ġit . endsWith (": org ") Ġ}) Ġreturn Ġfalse ĊĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} Ċ }