Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
佳 邓
Gitlab4j Api
Commits
eac251a8
Commit
eac251a8
authored
6 years ago
by
Greg Messner
Browse files
Options
Download
Email Patches
Plain Diff
Initial commit for support of the Applications API (#338).
parent
15e3818f
main
5.0.x
5.0.x.jdk17
6.x
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/main/java/org/gitlab4j/api/ApplicationsApi.java
+99
-0
src/main/java/org/gitlab4j/api/ApplicationsApi.java
src/main/java/org/gitlab4j/api/models/Application.java
+41
-0
src/main/java/org/gitlab4j/api/models/Application.java
src/test/java/org/gitlab4j/api/TestApplications.java
+117
-0
src/test/java/org/gitlab4j/api/TestApplications.java
src/test/resources/org/gitlab4j/api/applications.json
+8
-0
src/test/resources/org/gitlab4j/api/applications.json
with
265 additions
and
0 deletions
+265
-0
src/main/java/org/gitlab4j/api/ApplicationsApi.java
0 → 100644
+
99
-
0
View file @
eac251a8
package
org.gitlab4j.api
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
javax.ws.rs.core.GenericType
;
import
javax.ws.rs.core.Response
;
import
org.gitlab4j.api.models.Application
;
/**
* This class implements the client side API for the GitLab Applications API.
* See <a href="https://docs.gitlab.com/ce/api/applications.html">Applications API at GitLab</a> for more information.
*/
public
class
ApplicationsApi
extends
AbstractApi
{
public
ApplicationsApi
(
GitLabApi
gitLabApi
)
{
super
(
gitLabApi
);
}
/**
* Get all OATH applications.
*
* @return a List of OAUTH Application instances
* @throws GitLabApiException if any exception occurs
*/
public
List
<
Application
>
getApplications
()
throws
GitLabApiException
{
return
(
getApplications
(
getDefaultPerPage
()).
all
());
}
/**
* Get all OAUTH applications using the specified page and per page setting
*
* @param page the page to get
* @param perPage the number of items per page
* @return a list of OAUTH Applications in the specified range
* @throws GitLabApiException if any exception occurs
*/
public
List
<
Application
>
getApplications
(
int
page
,
int
perPage
)
throws
GitLabApiException
{
Response
response
=
get
(
javax
.
ws
.
rs
.
core
.
Response
.
Status
.
OK
,
getPageQueryParams
(
page
,
perPage
),
"applications"
);
return
(
response
.
readEntity
(
new
GenericType
<
List
<
Application
>>()
{}));
}
/**
* Get a Pager of all OAUTH applications.
*
* @param itemsPerPage the number of items per page
* @return a Pager of Application instances in the specified range
* @throws GitLabApiException if any exception occurs
*/
public
Pager
<
Application
>
getApplications
(
int
itemsPerPage
)
throws
GitLabApiException
{
return
(
new
Pager
<
Application
>(
this
,
Application
.
class
,
itemsPerPage
,
null
,
"applications"
));
}
/**
* Get a Stream of all OAUTH Application instances.
*
* @return a Stream of OAUTH Application instances
* @throws GitLabApiException if any exception occurs
*/
public
Stream
<
Application
>
getApplicationsStream
()
throws
GitLabApiException
{
return
(
getApplications
(
getDefaultPerPage
()).
stream
());
}
/**
* Create an OAUTH Application.
*
* @param name the name for the OAUTH Application
* @param redirectUri the redirect URI for the OAUTH Application
* @param scopes the scopes of the application (api, read_user, sudo, read_repository, openid, profile, email)
* @return the created Application instance
* @throws GitLabApiException if any exception occurs
*/
public
Application
createApplication
(
String
name
,
String
redirectUri
,
List
<
ApplicationScope
>
scopes
)
throws
GitLabApiException
{
if
(
scopes
==
null
||
scopes
.
isEmpty
())
{
throw
new
GitLabApiException
(
"scopes cannot be null or empty"
);
}
String
scopesString
=
scopes
.
stream
().
map
(
ApplicationScope:
:
toString
).
collect
(
Collectors
.
joining
(
","
));
GitLabApiForm
formData
=
new
GitLabApiForm
()
.
withParam
(
"name"
,
name
,
true
)
.
withParam
(
"redirect_uri"
,
redirectUri
,
true
)
.
withParam
(
"scopes"
,
scopesString
,
true
);
Response
response
=
post
(
Response
.
Status
.
CREATED
,
formData
,
"applications"
);
return
(
response
.
readEntity
(
Application
.
class
));
}
/**
* Delete the specified OAUTH Application.
*
* @param applicationId the ID of the OUAUTH Application to delete
* @throws GitLabApiException if any exception occurs
*/
public
void
deleteApplication
(
Integer
applicationId
)
throws
GitLabApiException
{
delete
(
Response
.
Status
.
NO_CONTENT
,
null
,
"applications"
,
applicationId
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/org/gitlab4j/api/models/Application.java
0 → 100644
+
41
-
0
View file @
eac251a8
package
org.gitlab4j.api.models
;
public
class
Application
{
private
Integer
id
;
private
String
applicationId
;
private
String
applicationName
;
private
String
callbackUrl
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getApplicationId
()
{
return
applicationId
;
}
public
void
setApplicationId
(
String
applicationId
)
{
this
.
applicationId
=
applicationId
;
}
public
String
getApplicationName
()
{
return
applicationName
;
}
public
void
setApplicationName
(
String
applicationName
)
{
this
.
applicationName
=
applicationName
;
}
public
String
getCallbackUrl
()
{
return
callbackUrl
;
}
public
void
setCallbackUrl
(
String
callbackUrl
)
{
this
.
callbackUrl
=
callbackUrl
;
}
}
This diff is collapsed.
Click to expand it.
src/test/java/org/gitlab4j/api/TestApplications.java
0 → 100644
+
117
-
0
View file @
eac251a8
/*
* The MIT License (MIT)
*
* Copyright (c) 2017 Greg Messner <greg@messners.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package
org.gitlab4j.api
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertNull
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assume
.
assumeNotNull
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.gitlab4j.api.Constants.ApplicationScope
;
import
org.gitlab4j.api.models.Application
;
import
org.junit.AfterClass
;
import
org.junit.Before
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
org.junit.experimental.categories.Category
;
/**
* In order for these tests to run you must set the following properties in test-gitlab4j.properties
* <p>
* TEST_HOST_URL
* TEST_PRIVATE_TOKEN
* <p>
* If any of the above are NULL, all tests in this class will be skipped.
*/
@Category
(
IntegrationTest
.
class
)
public
class
TestApplications
extends
AbstractIntegrationTest
{
private
static
final
String
TEST_APPLICATION_NAME
=
"Test Application for GitLab4J-API"
;
private
static
final
String
TEST_APPLICATION_REDIRECT
=
"http://example.com/application"
;
private
static
final
List
<
ApplicationScope
>
TEST_APPLICATION_SCOPES
=
Arrays
.
asList
(
ApplicationScope
.
SUDO
,
ApplicationScope
.
EMAIL
);
private
static
GitLabApi
gitLabApi
;
public
TestApplications
()
{
super
();
}
@BeforeClass
public
static
void
setup
()
{
// Must setup the connection to the GitLab test server
gitLabApi
=
baseTestSetup
();
if
(
gitLabApi
!=
null
)
{
try
{
List
<
Application
>
apps
=
gitLabApi
.
getApplicationsApi
().
getApplications
();
for
(
Application
app
:
apps
)
{
if
(
TEST_APPLICATION_NAME
.
equals
(
app
.
getApplicationName
()))
{
gitLabApi
.
getApplicationsApi
().
deleteApplication
(
app
.
getId
());
}
}
}
catch
(
Exception
ignore
)
{}
}
}
@AfterClass
public
static
void
teardown
()
throws
GitLabApiException
{
}
@Before
public
void
beforeMethod
()
{
assumeNotNull
(
gitLabApi
);
}
@Test
public
void
testGetApplications
()
throws
GitLabApiException
{
List
<
Application
>
apps
=
gitLabApi
.
getApplicationsApi
().
getApplications
();
assertNotNull
(
apps
);
}
@Test
public
void
testAddAndDeleteApplication
()
throws
GitLabApiException
{
List
<
Application
>
apps
=
gitLabApi
.
getApplicationsApi
().
getApplications
();
int
appCount
=
apps
.
size
();
Application
app
=
gitLabApi
.
getApplicationsApi
().
createApplication
(
TEST_APPLICATION_NAME
,
TEST_APPLICATION_REDIRECT
,
TEST_APPLICATION_SCOPES
);
assertNotNull
(
app
);
apps
=
gitLabApi
.
getApplicationsApi
().
getApplications
();
assertTrue
(
apps
.
size
()
==
appCount
+
1
);
Application
found
=
apps
.
stream
().
filter
(
a
->
TEST_APPLICATION_NAME
.
equals
(
a
.
getApplicationName
())).
findAny
().
orElse
(
null
);
assertNotNull
(
found
);
gitLabApi
.
getApplicationsApi
().
deleteApplication
(
app
.
getId
());
apps
=
gitLabApi
.
getApplicationsApi
().
getApplications
();
assertTrue
(
apps
.
size
()
==
appCount
);
found
=
apps
.
stream
().
filter
(
a
->
TEST_APPLICATION_NAME
.
equals
(
a
.
getApplicationName
())).
findAny
().
orElse
(
null
);
assertNull
(
found
);
}
}
This diff is collapsed.
Click to expand it.
src/test/resources/org/gitlab4j/api/applications.json
0 → 100644
+
8
-
0
View file @
eac251a8
[
{
"id"
:
1
,
"application_id"
:
"5832fc6e14300a0d962240a8144466eef4ee93ef0d218477e55f11cf12fc3737"
,
"application_name"
:
"MyApplication"
,
"callback_url"
:
"http://redirect.uri"
}
]
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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
Menu
Explore
Projects
Groups
Snippets