@@ -37,6 +37,7 @@ type ExternalLinkRestHandler interface {
3737 CreateExternalLinks (w http.ResponseWriter , r * http.Request )
3838 GetExternalLinkMonitoringTools (w http.ResponseWriter , r * http.Request )
3939 GetExternalLinks (w http.ResponseWriter , r * http.Request )
40+ GetExternalLinksV2 (w http.ResponseWriter , r * http.Request )
4041 UpdateExternalLink (w http.ResponseWriter , r * http.Request )
4142 DeleteExternalLink (w http.ResponseWriter , r * http.Request ) // Update is_active to false link
4243}
@@ -134,6 +135,7 @@ func (impl ExternalLinkRestHandlerImpl) GetExternalLinkMonitoringTools(w http.Re
134135 }
135136 common .WriteJsonResp (w , err , res , http .StatusOK )
136137}
138+
137139func (impl ExternalLinkRestHandlerImpl ) GetExternalLinks (w http.ResponseWriter , r * http.Request ) {
138140 userId , err := impl .userService .GetLoggedInUser (r )
139141 if userId == 0 || err != nil {
@@ -146,6 +148,65 @@ func (impl ExternalLinkRestHandlerImpl) GetExternalLinks(w http.ResponseWriter,
146148 linkType := v .Get ("type" )
147149 identifier := v .Get ("identifier" )
148150
151+ token := r .Header .Get ("token" )
152+ if len (identifier ) == 0 && len (linkType ) == 0 && len (clusterId ) == 0 {
153+ if ok := impl .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionGet , "*" ); ! ok {
154+ common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
155+ return
156+ }
157+ clusterIdNumber := 0
158+ res , err := impl .externalLinkService .FetchAllActiveLinksByLinkIdentifier (nil , clusterIdNumber )
159+ if err != nil {
160+ impl .logger .Errorw ("service err, FetchAllActive" , "err" , err )
161+ common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
162+ return
163+ }
164+ common .WriteJsonResp (w , err , res , http .StatusOK )
165+ return
166+
167+ } else if len (identifier ) != 0 && len (linkType ) != 0 { //api to get external links from app-level external links tab and from app-details page
168+ clusterIdNumber := 0
169+ if len (clusterId ) != 0 { //api call from app-detail page
170+ clusterIdNumber , err = strconv .Atoi (clusterId )
171+ if err != nil {
172+ impl .logger .Errorw ("error occurred while parsing cluster_id" , "clusterId" , clusterId , "err" , err )
173+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
174+ return
175+ }
176+ }
177+ linkIdentifier := & externalLink.LinkIdentifier {
178+ Type : linkType ,
179+ Identifier : identifier ,
180+ ClusterId : 0 ,
181+ }
182+ res , err := impl .externalLinkService .FetchAllActiveLinksByLinkIdentifier (linkIdentifier , clusterIdNumber )
183+ if err != nil {
184+ impl .logger .Errorw ("service err, FetchAllActive" , "err" , err )
185+ common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
186+ return
187+ }
188+ common .WriteJsonResp (w , err , res , http .StatusOK )
189+ return
190+ }
191+
192+ impl .logger .Errorw ("invalid request, FetchAllActive external links" , "err" , err )
193+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
194+ return
195+
196+ }
197+
198+ func (impl ExternalLinkRestHandlerImpl ) GetExternalLinksV2 (w http.ResponseWriter , r * http.Request ) {
199+ userId , err := impl .userService .GetLoggedInUser (r )
200+ if userId == 0 || err != nil {
201+ common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
202+ return
203+ }
204+
205+ v := r .URL .Query ()
206+ clusterId := v .Get ("clusterId" )
207+ linkType := v .Get ("type" )
208+ identifier := v .Get ("identifier" )
209+
149210 externalLinkAndMonitoringTools := externalLink.ExternalLinkAndMonitoringToolDTO {}
150211 externalLinks := []* externalLink.ExternalLinkDto {}
151212
0 commit comments