1+ import { group } from '@angular/animations' ;
12import { Component , Inject , OnInit , ChangeDetectionStrategy , ChangeDetectorRef } from '@angular/core' ;
23import { TAB_URL } from '../../providers/tab-url.provider' ;
34
5+ export interface linkElement {
6+ url : string ,
7+ name : string
8+ }
9+
410@Component ( {
511 selector : 'app-api' ,
612 templateUrl : 'api.component.html' ,
@@ -11,8 +17,7 @@ export class ApiComponent implements OnInit {
1117 message : string ;
1218 mist_url : string = "" ;
1319
14- api_url_obj : string = "" ;
15- api_url_stats_obj : string = "" ;
20+ quick_links : linkElement [ ] = [ ]
1621
1722 org_id : string = "" ;
1823 site_id : string = "" ;
@@ -41,151 +46,239 @@ export class ApiComponent implements OnInit {
4146 ////////////
4247 // API URL
4348 ////////////
44- forgeOrg ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : string {
49+ forgeOrg ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : void {
4550 let url = "" ;
46- this . obj_name = obj . substr ( 0 , obj . length - 1 ) . toUpperCase ( ) ;
4751 if ( groups . detail ) {
52+ // set IDS
4853 this . obj_id = groups . uuid_1 ;
54+ // set QUICK LINK
4955 url = "https://api." + groups . host + "/api/v1/orgs/" + groups . org_id + "/" + obj + "/" + groups . uuid_1 ;
56+ this . quick_links . push ( { url : url , name : this . obj_name } )
5057 } else {
58+ // set QUICK LINK
5159 url = "https://api." + groups . host + "/api/v1/orgs/" + groups . org_id + "/" + obj ;
5260 if ( extra_param ) url += "?" + extra_param
61+ if ( this . obj_name == "switch" ) {
62+ this . obj_name = "switches"
63+ } else {
64+ this . obj_name += "s"
65+ }
66+ this . quick_links . push ( { url : url , name : this . obj_name } )
5367 }
54- return url ;
5568 }
56- forgeOrgStats ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : string {
69+ forgeOrgStats ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : void {
5770 let url = "" ;
5871 if ( groups . detail && groups . detail != "new" ) {
72+ // set IDS
5973 this . obj_id = groups . uuid_1 ;
74+ // set QUICK LINK
6075 url = "https://api." + groups . host + "/api/v1/orgs/" + groups . org_id + "/stats/" + obj + "/" + groups . uuid_1 ;
76+ this . quick_links . push ( { url : url , name : this . obj_name + " STATS" } )
6177 }
62- return url ;
6378 }
64- forgeSite ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : string {
79+ forgeSite ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : void {
6580 let url = "" ;
66- this . obj_name = obj . substr ( 0 , obj . length - 1 ) . toUpperCase ( ) ;
6781 if ( groups . detail && groups . detail != "new" ) {
82+ // set IDS
6883 this . obj_id = groups . uuid_1 ;
6984 this . site_id = groups . uuid_2 ;
85+ // set QUICK LINK
7086 url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_2 + "/" + obj + "/" + groups . uuid_1 ;
87+ this . quick_links . push ( { url : url , name : this . obj_name } )
88+ if ( this . obj_name == "switch" ) {
89+ this . quick_links . push ( { url : url + "/config_cmd" , name : this . obj_name + " CMDS" } )
90+ }
7191 } else {
92+ // set IDS
7293 this . site_id = groups . uuid_1 ;
94+ // set QUICK LINK
7395 url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_1 + "/" + obj ;
74- if ( extra_param ) url += "?" + extra_param
96+ if ( extra_param ) url += "?" + extra_param
97+ if ( this . obj_name == "switch" ) {
98+ this . obj_name = "switches"
99+ } else {
100+ this . obj_name += "s"
101+ }
102+ this . quick_links . push ( { url : url , name : this . obj_name } )
75103 }
76- return url ;
77104 }
78- forgeSiteStats ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : string {
105+ forgeSiteStats ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : void {
79106 let url = "" ;
80- this . obj_name = obj . substr ( 0 , obj . length - 1 ) . toUpperCase ( ) ;
81107 if ( groups . detail && groups . detail != "new" ) {
108+ // set IDS
82109 this . obj_id = groups . uuid_1 ;
83110 this . site_id = groups . uuid_2 ;
111+ // set QUICK LINK
84112 url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_2 + "/stats/" + obj + "/" + groups . uuid_1 ;
113+ this . quick_links . push ( { url : url , name : this . obj_name + " STATS" } )
85114 } else {
115+ // set IDS
86116 this . site_id = groups . uuid_1 ;
117+ // set QUICK LINK
87118 url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_1 + "/stats/" + obj ;
88119 if ( extra_param ) url += "?" + extra_param
120+ this . quick_links . push ( { url : url , name : this . obj_name + " STATS" } )
121+ }
122+ }
123+
124+ forgeDeviceEvents ( groups : { [ key : string ] : string ; } , obj : string , extra_param : string ) : void {
125+ let url = "" ;
126+ if ( groups . detail && groups . detail != "new" ) {
127+ // MAC
128+ const splitted_uuid = groups . uuid_1 . split ( "-" )
129+ const mac = splitted_uuid [ splitted_uuid . length - 1 ]
130+ // set QUICK LINK
131+ url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_2 + "/devices/events/search?limit=1000&device_type=switch&duration=1d&mac=" + mac
132+ this . quick_links . push ( { url : url , name : this . obj_name + " EVENTS" } )
133+ } else {
134+ url = "https://api." + groups . host + "/api/v1/sites/" + groups . uuid_1 + "/devices/events/search?limit=1000&device_type=switch&duration=1d&device_type=" + obj
135+ this . quick_links . push ( { url : url , name : this . obj_name + " EVENTS" } )
89136 }
90- return url ;
91137 }
92138
139+
93140 generateApiUrl ( ) {
94- this . api_url_obj = "" ;
95- this . api_url_stats_obj = "" ;
96141 const re = / h t t p s : \/ \/ m a n a g e \. (?< host > [ a - z 0 - 1 . ] * m i s t \. c o m ) \/ a d m i n \/ \? o r g _ i d = (?< org_id > [ 0 - 9 a - f - ] * ) # ! (?< obj > [ a - z ] + ) \/ ? (?< detail > d e t a i l | t e m p l a t e | s i t e | r f T e m p l a t e | a d m i n | e d g e d e t a i l | c l u s t e r d e t a i l | n e w ) ? \/ ? ( [ 0 - 9 ] ) * ?\/ ? (?< uuid_1 > [ 0 - 9 a - f - ] * ) ? \/ ? (?< uuid_2 > [ 0 - 9 a - f - ] * ) ? / gi;
97142 let res = re . exec ( this . tabUrl ) ;
98143 if ( res ) {
99144 this . org_id = res . groups . org_id ;
100- if ( res . groups . host && res . groups . org_id && res . groups . obj ) {
145+ if ( res . groups . host && res . groups . org_id && res . groups . obj ) {
101146 switch ( res . groups . obj . toLowerCase ( ) ) {
102147 // SITE
103148 case "ap" :
104149 case "switch" :
105150 case "gateway" :
106- this . api_url_obj = this . forgeSite ( res . groups , "devices" , "type=" + res . groups . obj ) ;
107- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , "devices" , "type=" + res . groups . obj ) ;
151+ this . obj_name = res . groups . obj ;
152+ this . forgeSite ( res . groups , "devices" , "type=" + res . groups . obj ) ;
153+ this . forgeSiteStats ( res . groups , "devices" , "type=" + res . groups . obj ) ;
154+ this . forgeDeviceEvents ( res . groups , "devices" , "type=" + res . groups . obj ) ;
108155 break ;
109156 case "assets" :
110- this . api_url_obj = this . forgeSite ( res . groups , res . groups . obj , null ) ;
111- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , res . groups . obj , null ) ;
157+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
158+ this . forgeSite ( res . groups , res . groups . obj , null ) ;
159+ this . forgeSiteStats ( res . groups , res . groups . obj , null ) ;
112160 break ;
113161 case "wlan" :
114- this . api_url_obj = this . forgeSite ( res . groups , "wlans" , null ) ;
162+ this . obj_name = res . groups . obj ;
163+ this . forgeSite ( res . groups , "wlans" , null ) ;
115164 break ;
116165 case "tags" :
117- this . api_url_obj = this . forgeSite ( res . groups , "wxtags" , null ) ;
166+ this . obj_name = "wxtag" ;
167+ this . forgeSite ( res . groups , "wxtags" , null ) ;
118168 break ;
119169 case "psk" :
120- this . api_url_obj = this . forgeSite ( res . groups , "psks" , null ) ;
170+ this . obj_name = res . groups . obj ;
171+ this . forgeSite ( res . groups , "psks" , null ) ;
121172 break ;
122173 // case "siteedge":
123- // this.api_url_obj = this. forgeSite(res.groups, "mxedges", null);
124- // this.api_url_stats_obj = this.forgeSiteStats(res.groups, "mxedges", null);
174+ // this.forgeSite(res.groups, "mxedges", null);
175+ // this.forgeSiteStats(res.groups, "mxedges", null);
125176 // break;
126177 case "tunnels" :
127- this . api_url_obj = this . forgeSite ( res . groups , "wxtunnels" , null ) ;
128- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , "wxtunnels" , null ) ;
178+ this . obj_name = "wxtunnel" ;
179+ this . forgeSite ( res . groups , "wxtunnels" , null ) ;
180+ this . forgeSiteStats ( res . groups , "wxtunnels" , null ) ;
129181 break ;
130182 case "clients" :
131183 case "sdkclients" :
132- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , res . groups . obj , null ) ;
184+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
185+ this . forgeSiteStats ( res . groups , res . groups . obj , null ) ;
133186 break ;
134187 case "wxlan" :
135- this . api_url_obj = this . forgeSite ( res . groups , "wxrules" , null ) ;
136- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , "wxrules" , null ) ;
137- break ;
138- case "security" :
139- this . api_url_obj = this . forgeSite ( res . groups , "wxrules" , null ) ;
140- this . api_url_stats_obj = this . forgeSiteStats ( res . groups , "wxrules" , null ) ;
188+ this . obj_name = "wxrule" ;
189+ this . forgeSite ( res . groups , "wxrules" , null ) ;
190+ this . forgeSiteStats ( res . groups , "wxrules" , null ) ;
141191 break ;
192+ // case "security":
193+ // this.forgeSite(res.groups, "wxrules", null);
194+ // this.forgeSiteStats(res.groups, "wxrules", null);
195+ // break;
142196 case "switchconfig" :
143- this . api_url_obj = "https://api." + res . groups . host + "/api/v1/sites/" + res . groups . uuid_1 + "/setting"
197+ this . quick_links . push ( {
198+ url : "https://api." + res . groups . host + "/api/v1/sites/" + res . groups . uuid_1 + "/setting/derived" ,
199+ name : "switchconfig"
200+ } )
144201 break ;
145202 case "pcap" :
146- this . api_url_obj = this . forgeSite ( res . groups , "pcaps" , null ) ;
203+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
204+ this . forgeSite ( res . groups , "pcaps" , null ) ;
147205 break ;
148206 // ORG
149207 case "orgtags" :
150- this . api_url_obj = this . forgeOrg ( res . groups , "wxtags" , null ) ;
208+ this . obj_name = "wxtag" ;
209+ this . forgeOrg ( res . groups , "wxtags" , null ) ;
151210 break ;
152211 case "misttunnels" :
153- this . api_url_obj = this . forgeOrg ( res . groups , "mxtunnels" , null ) ;
212+ this . obj_name = "mxtunnel" ;
213+ this . forgeOrg ( res . groups , "mxtunnels" , null ) ;
154214 break ;
155215 case "switchtemplate" :
156- this . api_url_obj = this . forgeOrg ( res . groups , "networktemplates" , null ) ;
216+ this . obj_name = res . groups . obj ;
217+ this . forgeOrg ( res . groups , "networktemplates" , null ) ;
157218 break ;
158219 case "deviceprofiles" :
159- this . api_url_obj = this . forgeOrg ( res . groups , "deviceprofiles" , null ) ;
220+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
221+ this . forgeOrg ( res . groups , "deviceprofiles" , null ) ;
160222 break ;
161223 case "org" :
162- this . api_url_obj = "https://api." + res . groups . host + "/api/v1/orgs/" + res . groups . org_id + "/setting" ;
224+ this . quick_links . push ( {
225+ url : "https://api." + res . groups . host + "/api/v1/orgs/" + res . groups . org_id + "/setting" ,
226+ name : "org setting"
227+ } , {
228+ url : "https://api." + res . groups . host + "/api/v1/orgs/" + res . groups . org_id + "/stats" ,
229+ name : "org stats"
230+ } )
163231 break ;
164232 case "configuration" :
165- this . api_url_obj = this . forgeOrg ( res . groups , "sites" , null ) ;
233+ this . obj_name = "site"
234+ this . quick_links . push ( {
235+ url : "https://api." + res . groups . host + "/api/v1/sites/" + res . groups . uuid_1 ,
236+ name : "site info"
237+ } , {
238+ url : "https://api." + res . groups . host + "/api/v1/sites/" + res . groups . uuid_1 + "/setting" ,
239+ name : "site setting"
240+ } , {
241+ url : "https://api." + res . groups . host + "/api/v1/sites/" + res . groups . uuid_1 + "/stats" ,
242+ name : "site stats"
243+ } )
166244 break ;
167245 case "rftemplates" :
168246 case "templates" :
169- this . api_url_obj = this . forgeOrg ( res . groups , res . groups . obj , null ) ;
247+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
248+ this . forgeOrg ( res . groups , res . groups . obj , null ) ;
170249 break ;
171250 case "apinventory" :
172- this . api_url_obj = this . forgeOrg ( res . groups , "inventory" , null ) ;
251+ this . obj_name = "inventory" ;
252+ this . forgeOrg ( res . groups , "inventory" , null ) ;
173253 break ;
174254 case "adminconfig" :
175- this . api_url_obj = this . forgeOrg ( res . groups , "admins" , null ) ;
255+ this . obj_name = "admin" ;
256+ this . forgeOrg ( res . groups , "admins" , null ) ;
176257 break ;
177258 case "auditLogs" :
178- this . api_url_obj = this . forgeOrg ( res . groups , "logs" , null ) ;
259+ this . obj_name = res . groups . obj . substr ( 0 , res . groups . obj . length - 1 ) ;
260+ this . forgeOrg ( res . groups , "logs" , null ) ;
179261 break ;
180262 case "subscription" :
181- this . api_url_obj = this . forgeOrg ( res . groups , "licenses" , null ) ;
263+ this . obj_name = res . groups . obj
264+ this . forgeOrg ( res . groups , "licenses" , null ) ;
182265 break ;
183266 case "edge" :
184267 if ( res . groups . detail == "edgedetail" ) {
185- this . api_url_obj = this . forgeOrg ( res . groups , "mxedges" , null ) ;
186- this . api_url_stats_obj = this . forgeOrgStats ( res . groups , "mxedges" , null ) ;
268+ this . obj_name = "mxedge" ;
269+ this . forgeOrg ( res . groups , "mxedges" , null ) ;
270+ this . forgeOrgStats ( res . groups , "mxedges" , null ) ;
187271 } else if ( res . groups . detail == "clusterdetail" ) {
188- this . api_url_obj = this . forgeOrg ( res . groups , "mxclusters" , null ) ;
272+ this . obj_name = "mxcluster" ;
273+ this . forgeOrg ( res . groups , "mxclusters" , null ) ;
274+ } else {
275+ this . quick_links . push ( {
276+ url : "https://api." + res . groups . host + "/api/v1/orgs/" + res . groups . org_id + "/mxedges" ,
277+ name : "mxedges"
278+ } , {
279+ url : "https://api." + res . groups . host + "/api/v1/orgs/" + res . groups . org_id + "/mxclusters" ,
280+ name : "mxclusters"
281+ } )
189282 }
190283 break ;
191284 }
0 commit comments