Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
apollo
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
apollo
Commits
553d7814
Unverified
Commit
553d7814
authored
Mar 23, 2019
by
张乐
Committed by
GitHub
Mar 23, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2072 from kezhenxu94/feature/openapi-get-apps-info
Add OpenAPI to get application information
parents
21e76b3d
1361ed2c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
176 additions
and
14 deletions
+176
-14
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/client/ApolloOpenApiClient.java
.../framework/apollo/openapi/client/ApolloOpenApiClient.java
+17
-1
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/client/service/AppOpenApiService.java
...work/apollo/openapi/client/service/AppOpenApiService.java
+19
-0
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenAppDTO.java
...va/com/ctrip/framework/apollo/openapi/dto/OpenAppDTO.java
+81
-0
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/OpenApiBeanUtils.java
...ctrip/framework/apollo/openapi/util/OpenApiBeanUtils.java
+36
-8
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/AppController.java
...framework/apollo/openapi/v1/controller/AppController.java
+23
-5
No files found.
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/client/ApolloOpenApiClient.java
View file @
553d7814
...
...
@@ -6,6 +6,7 @@ import com.ctrip.framework.apollo.openapi.client.service.ItemOpenApiService;
import
com.ctrip.framework.apollo.openapi.client.service.NamespaceOpenApiService
;
import
com.ctrip.framework.apollo.openapi.client.service.ReleaseOpenApiService
;
import
com.ctrip.framework.apollo.openapi.dto.NamespaceReleaseDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppNamespaceDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenEnvClusterDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenItemDTO
;
...
...
@@ -17,12 +18,13 @@ import com.google.common.base.Strings;
import
com.google.common.collect.Lists
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
java.util.List
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.message.BasicHeader
;
import
java.util.List
;
/**
* This class contains collections of methods to access Apollo Open Api.
* <br />
...
...
@@ -58,6 +60,20 @@ public class ApolloOpenApiClient {
return
appService
.
getEnvClusterInfo
(
appId
);
}
/**
* Get all App information
*/
public
List
<
OpenAppDTO
>
getAllApps
()
{
return
appService
.
getAppsInfo
(
null
);
}
/**
* Get App information by app ids
*/
public
List
<
OpenAppDTO
>
getAppsByIds
(
List
<
String
>
appIds
)
{
return
appService
.
getAppsInfo
(
appIds
);
}
/**
* Get the namespaces
*/
...
...
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/client/service/AppOpenApiService.java
View file @
553d7814
package
com
.
ctrip
.
framework
.
apollo
.
openapi
.
client
.
service
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenEnvClusterDTO
;
import
com.google.common.base.Joiner
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
java.lang.reflect.Type
;
...
...
@@ -12,6 +14,8 @@ import org.apache.http.util.EntityUtils;
public
class
AppOpenApiService
extends
AbstractOpenApiService
{
private
static
final
Type
OPEN_ENV_CLUSTER_DTO_LIST_TYPE
=
new
TypeToken
<
List
<
OpenEnvClusterDTO
>>()
{
}.
getType
();
private
static
final
Type
OPEN_APP_DTO_LIST_TYPE
=
new
TypeToken
<
List
<
OpenAppDTO
>>()
{
}.
getType
();
public
AppOpenApiService
(
CloseableHttpClient
client
,
String
baseUrl
,
Gson
gson
)
{
super
(
client
,
baseUrl
,
gson
);
...
...
@@ -28,4 +32,19 @@ public class AppOpenApiService extends AbstractOpenApiService {
throw
new
RuntimeException
(
String
.
format
(
"Load env cluster information for appId: %s failed"
,
appId
),
ex
);
}
}
public
List
<
OpenAppDTO
>
getAppsInfo
(
List
<
String
>
appIds
)
{
String
path
=
"apps"
;
if
(
appIds
!=
null
&&
!
appIds
.
isEmpty
())
{
String
param
=
Joiner
.
on
(
","
).
join
(
appIds
);
path
=
String
.
format
(
"apps?appIds=%s"
,
escapeParam
(
param
));
}
try
(
CloseableHttpResponse
response
=
get
(
path
))
{
return
gson
.
fromJson
(
EntityUtils
.
toString
(
response
.
getEntity
()),
OPEN_APP_DTO_LIST_TYPE
);
}
catch
(
Throwable
ex
)
{
throw
new
RuntimeException
(
String
.
format
(
"Load app information for appIds: %s failed"
,
appIds
),
ex
);
}
}
}
apollo-openapi/src/main/java/com/ctrip/framework/apollo/openapi/dto/OpenAppDTO.java
0 → 100644
View file @
553d7814
package
com
.
ctrip
.
framework
.
apollo
.
openapi
.
dto
;
public
class
OpenAppDTO
extends
BaseDTO
{
private
String
name
;
private
String
appId
;
private
String
orgId
;
private
String
orgName
;
private
String
ownerName
;
private
String
ownerEmail
;
public
String
getAppId
()
{
return
appId
;
}
public
String
getName
()
{
return
name
;
}
public
String
getOrgId
()
{
return
orgId
;
}
public
String
getOrgName
()
{
return
orgName
;
}
public
String
getOwnerEmail
()
{
return
ownerEmail
;
}
public
String
getOwnerName
()
{
return
ownerName
;
}
public
void
setAppId
(
String
appId
)
{
this
.
appId
=
appId
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
void
setOrgId
(
String
orgId
)
{
this
.
orgId
=
orgId
;
}
public
void
setOrgName
(
String
orgName
)
{
this
.
orgName
=
orgName
;
}
public
void
setOwnerEmail
(
String
ownerEmail
)
{
this
.
ownerEmail
=
ownerEmail
;
}
public
void
setOwnerName
(
String
ownerName
)
{
this
.
ownerName
=
ownerName
;
}
@Override
public
String
toString
()
{
final
StringBuilder
sb
=
new
StringBuilder
(
"OpenAppDTO{"
);
sb
.
append
(
"name='"
).
append
(
name
).
append
(
'\''
);
sb
.
append
(
", appId='"
).
append
(
appId
).
append
(
'\''
);
sb
.
append
(
", orgId='"
).
append
(
orgId
).
append
(
'\''
);
sb
.
append
(
", orgName='"
).
append
(
orgName
).
append
(
'\''
);
sb
.
append
(
", ownerName='"
).
append
(
ownerName
).
append
(
'\''
);
sb
.
append
(
", ownerEmail='"
).
append
(
ownerEmail
).
append
(
'\''
);
sb
.
append
(
", dataChangeCreatedBy='"
).
append
(
dataChangeCreatedBy
).
append
(
'\''
);
sb
.
append
(
", dataChangeLastModifiedBy='"
).
append
(
dataChangeLastModifiedBy
).
append
(
'\''
);
sb
.
append
(
", dataChangeCreatedTime="
).
append
(
dataChangeCreatedTime
);
sb
.
append
(
", dataChangeLastModifiedTime="
).
append
(
dataChangeLastModifiedTime
);
sb
.
append
(
'}'
);
return
sb
.
toString
();
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/OpenApiBeanUtils.java
View file @
553d7814
package
com
.
ctrip
.
framework
.
apollo
.
openapi
.
util
;
import
com.ctrip.framework.apollo.common.dto.
*
;
import
com.ctrip.framework.apollo.
openapi.dto.*
;
import
com.
google.common.base.Preconditions
;
import
com.
google.common.reflect.TypeToken
;
import
com.
google.gson.Gson
;
import
com.ctrip.framework.apollo.common.dto.
GrayReleaseRuleDTO
;
import
com.ctrip.framework.apollo.
common.dto.GrayReleaseRuleItemDTO
;
import
com.
ctrip.framework.apollo.common.dto.ItemDTO
;
import
com.
ctrip.framework.apollo.common.dto.NamespaceLockDTO
;
import
com.
ctrip.framework.apollo.common.dto.ReleaseDTO
;
import
com.ctrip.framework.apollo.common.entity.App
;
import
com.ctrip.framework.apollo.common.entity.AppNamespace
;
import
com.ctrip.framework.apollo.common.utils.BeanUtils
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppNamespaceDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenGrayReleaseRuleDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenGrayReleaseRuleItemDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenItemDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenNamespaceDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenNamespaceLockDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenReleaseDTO
;
import
com.ctrip.framework.apollo.portal.entity.bo.ItemBO
;
import
com.ctrip.framework.apollo.portal.entity.bo.NamespaceBO
;
import
com.google.common.base.Preconditions
;
import
com.google.common.reflect.TypeToken
;
import
com.google.gson.Gson
;
import
org.springframework.util.CollectionUtils
;
import
java.lang.reflect.Type
;
import
java.util.*
;
import
java.util.Collections
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
public
class
OpenApiBeanUtils
{
...
...
@@ -134,4 +148,18 @@ public class OpenApiBeanUtils {
return
grayReleaseRuleDTO
;
}
public
static
List
<
OpenAppDTO
>
transformFromApps
(
final
List
<
App
>
apps
)
{
if
(
CollectionUtils
.
isEmpty
(
apps
))
{
return
Collections
.
emptyList
();
}
return
apps
.
stream
()
.
map
(
OpenApiBeanUtils:
:
transformFromApp
)
.
collect
(
Collectors
.
toList
());
}
public
static
OpenAppDTO
transformFromApp
(
final
App
app
)
{
Preconditions
.
checkArgument
(
app
!=
null
);
return
BeanUtils
.
transform
(
OpenAppDTO
.
class
,
app
);
}
}
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/AppController.java
View file @
553d7814
package
com
.
ctrip
.
framework
.
apollo
.
openapi
.
v1
.
controller
;
import
com.ctrip.framework.apollo.common.dto.ClusterDTO
;
import
com.ctrip.framework.apollo.common.entity.App
;
import
com.ctrip.framework.apollo.common.utils.BeanUtils
;
import
com.ctrip.framework.apollo.core.enums.Env
;
import
com.ctrip.framework.apollo.openapi.dto.OpenAppDTO
;
import
com.ctrip.framework.apollo.openapi.dto.OpenEnvClusterDTO
;
import
com.ctrip.framework.apollo.openapi.util.OpenApiBeanUtils
;
import
com.ctrip.framework.apollo.portal.component.PortalSettings
;
import
com.ctrip.framework.apollo.portal.service.AppService
;
import
com.ctrip.framework.apollo.portal.service.ClusterService
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.google.common.collect.Sets
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -20,10 +24,14 @@ public class AppController {
private
final
PortalSettings
portalSettings
;
private
final
ClusterService
clusterService
;
private
final
AppService
appService
;
public
AppController
(
final
PortalSettings
portalSettings
,
final
ClusterService
clusterService
)
{
public
AppController
(
final
PortalSettings
portalSettings
,
final
ClusterService
clusterService
,
final
AppService
appService
)
{
this
.
portalSettings
=
portalSettings
;
this
.
clusterService
=
clusterService
;
this
.
appService
=
appService
;
}
@GetMapping
(
value
=
"/apps/{appId}/envclusters"
)
...
...
@@ -46,4 +54,14 @@ public class AppController {
}
@GetMapping
(
"/apps"
)
public
List
<
OpenAppDTO
>
findApps
(
@RequestParam
(
value
=
"appIds"
,
required
=
false
)
String
appIds
)
{
final
List
<
App
>
apps
=
new
ArrayList
<>();
if
(
StringUtils
.
isEmpty
(
appIds
))
{
apps
.
addAll
(
appService
.
findAll
());
}
else
{
apps
.
addAll
(
appService
.
findByAppIds
(
Sets
.
newHashSet
(
appIds
.
split
(
","
))));
}
return
OpenApiBeanUtils
.
transformFromApps
(
apps
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment