package Ġorg . jetbrains . plugins . http x . json Ċ Ċ import Ġcom . intellij . httpClient . http . request . psi . Http Message Body Ċ import Ġcom . intellij . httpClient . http . request . psi . HttpRequest Ċ import Ġcom . intellij . json . Json FileType Ċ import Ġcom . intellij . json . psi . Json File Ċ import Ġcom . intellij . lang . injection . Inject ed Language Manager Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . test Framework . Light Virtual File Ċ import Ġcom . jetbrains . json Schema . extension . Content Aware Json Schema File Provider Ċ import Ġorg . jetbrains . plugins . http x . rest Client . execution . aliyun . Products Ċ Ċ @ Suppress (" Un stable Api Usage ") Ċ class ĠAli yun Request Action Json Schema Provider Factory Ġ: ĠContent Aware Json Schema File Provider Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Store Ġ= ĠHashMap < String , ĠVirtual File >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Schema File ( psi File : ĠPsi File ): ĠVirtual File ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( psi File Ġis ĠJson File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinjected Language Manager Ġ= ĠInject ed Language Manager . getInstance ( psi File . project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Language Injection Host Ġ= Ġinjected Language Manager . get Injection Host ( psi File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( psi Language Injection Host Ġis ĠHttp Message Body ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Message Body : ĠHttp Message Body Ġ= Ġpsi Language Injection Host ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠhttpRequest Ġ= ĠPsi Tree Util . getParent OfType ( http Message Body , ĠHttpRequest :: class . java ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( httpRequest . http Method Ġ== Ġ" ALI Y UN ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Target Ġ= ĠhttpRequest . request Target ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Target Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhost Ġ= Ġrequest Target . host !!. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Param Ġ= Ġrequest Target . query !!. query Parameter List . find Ġ{ Ġit . query Parameter Key . text Ġ== Ġ" Action " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Param Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Name Ġ= Ġaction Param . query Parameter Value !!. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Json Schema ( host , Ġaction Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Json Schema ( host : ĠString , Ġaction Name : ĠString ): ĠVirtual File ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ"${ host }-${ action Name }" ĊĠĠĠĠĠĠĠ Ġif Ġ( schema Store . contains ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġschema Store [ key ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġjson Schema FileName Ġ= Ġ" schema -${ key }. json " ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠProducts . instance (). find Product By Host ( host ) ĊĠĠĠĠĠĠĠ Ġif Ġ( product Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġproduct . find Action ( action Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Schema Ġ= Ġaction . convert ToJson Schema ( product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Schema File Ġ= ĠLight Virtual File ( json Schema FileName , ĠJson FileType . INSTANCE , Ġjson Schema ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschema Store [ key ] Ġ= Ġjson Schema File ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson Schema File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ }