Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
佳 邓
Gitlab4j Api
Commits
c6080e4c
Commit
c6080e4c
authored
May 12, 2019
by
Greg Messner
Browse files
Mods to change HookManager into an interface.
parent
27aa5f5b
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/gitlab4j/api/HookManager.java
View file @
c6080e4c
...
...
@@ -4,37 +4,23 @@ package org.gitlab4j.api;
import
javax.servlet.http.HttpServletRequest
;
/**
* This
class
provides a base class handler for processing GitLab Web Hook and System Hook callouts.
* This
interface
provides a base class handler for processing GitLab Web Hook and System Hook callouts.
*/
public
abstract
class
HookManager
{
private
String
secretToken
;
/**
* Create a HookManager to handle GitLab hook events.
*/
public
HookManager
()
{
this
.
secretToken
=
null
;
}
public
interface
HookManager
{
/**
* Create a HookManager to handle GitLab hook events which will be verified
* against the specified secretToken.
*
* @param secretToken the secret token to verify against
* Get the secret token that received hook events should be validated against.
*
* @return the secret token that received hook events should be validated against
*/
public
HookManager
(
String
secretToken
)
{
this
.
secretToken
=
secretToken
;
}
String
getSecretToken
();
/**
* Set the secret token that received hook events should be validated against.
*
* @param secretToken the secret token to verify against
*/
public
void
setSecretToken
(
String
secretToken
)
{
this
.
secretToken
=
secretToken
;
}
void
setSecretToken
(
String
secretToken
);
/**
* Validate the provided secret token against the reference secret token. Returns true if
...
...
@@ -44,8 +30,11 @@ public abstract class HookManager {
* @param secretToken the token to validate
* @return true if the secret token is valid or there is no reference secret token to validate against
*/
public
boolean
isValidSecretToken
(
String
secretToken
)
{
return
(
this
.
secretToken
==
null
||
this
.
secretToken
.
equals
(
secretToken
)
?
true
:
false
);
default
public
boolean
isValidSecretToken
(
String
secretToken
)
{
String
ourSecretToken
=
getSecretToken
();
return
(
ourSecretToken
==
null
||
ourSecretToken
.
trim
().
isEmpty
()
||
ourSecretToken
.
equals
(
secretToken
)
?
true
:
false
);
}
/**
...
...
@@ -56,9 +45,9 @@ public abstract class HookManager {
* @param request the HTTP request to verify the secret token
* @return true if the secret token is valid or there is no reference secret token to validate against
*/
public
boolean
isValidSecretToken
(
HttpServletRequest
request
)
{
default
public
boolean
isValidSecretToken
(
HttpServletRequest
request
)
{
if
(
this
.
s
ecretToken
!=
null
)
{
if
(
getS
ecretToken
()
!=
null
)
{
String
secretToken
=
request
.
getHeader
(
"X-Gitlab-Token"
);
return
(
isValidSecretToken
(
secretToken
));
}
...
...
@@ -73,5 +62,5 @@ public abstract class HookManager {
* @param request the HttpServletRequest to read the Event instance from
* @throws GitLabApiException if the parsed event is not supported
*/
public
abstract
void
handleEvent
(
HttpServletRequest
request
)
throws
GitLabApiException
;
public
void
handleEvent
(
HttpServletRequest
request
)
throws
GitLabApiException
;
}
\ No newline at end of file
src/main/java/org/gitlab4j/api/systemhooks/SystemHookManager.java
View file @
c6080e4c
...
...
@@ -21,7 +21,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* This class provides a handler for processing GitLab System Hook callouts.
*/
public
class
SystemHookManager
ext
en
d
s
HookManager
{
public
class
SystemHookManager
implem
en
t
s
HookManager
{
public
static
final
String
SYSTEM_HOOK_EVENT
=
"System Hook"
;
private
final
static
Logger
LOGGER
=
GitLabApi
.
getLogger
();
...
...
@@ -30,37 +30,69 @@ public class SystemHookManager extends HookManager {
// Collection of objects listening for System Hook events.
private
final
List
<
SystemHookListener
>
systemHookListeners
=
new
CopyOnWriteArrayList
<
SystemHookListener
>();
private
String
secretToken
;
/**
* Create a HookManager to handle GitLab system hook events.
*/
public
SystemHookManager
()
{
super
();
}
/**
* Create a HookManager to handle GitLab system hook events which will be verified
* against the specified secretToken.
*
*
* @param secretToken the secret token to verify against
*/
public
SystemHookManager
(
String
secretToken
)
{
super
(
secretToken
);
}
this
.
secretToken
=
secretToken
;
}
/**
* Get the secret token that received hook events should be validated against.
*
* @return the secret token that received hook events should be validated against
*/
public
String
getSecretToken
()
{
return
(
secretToken
);
}
/**
* Set the secret token that received hook events should be validated against.
*
* @param secretToken the secret token to verify against
*/
public
void
setSecretToken
(
String
secretToken
)
{
this
.
secretToken
=
secretToken
;
}
/**
* Parses and verifies an SystemHookEvent instance from the HTTP request and
* fires it off to the registered listeners.
*
*
* @param request the HttpServletRequest to read the Event instance from
* @throws GitLabApiException if the parsed event is not supported
*/
public
void
handleEvent
(
HttpServletRequest
request
)
throws
GitLabApiException
{
handleRequest
(
request
);
}
/**
* Parses and verifies an SystemHookEvent instance from the HTTP request and
* fires it off to the registered listeners.
*
* @param request the HttpServletRequest to read the Event instance from
* @return the processed SystemHookEvent instance read from the request,null if the request
* not contain a system hook event
* @throws GitLabApiException if the parsed event is not supported
*/
public
SystemHookEvent
handleRequest
(
HttpServletRequest
request
)
throws
GitLabApiException
{
String
eventName
=
request
.
getHeader
(
"X-Gitlab-Event"
);
if
(
eventName
==
null
||
eventName
.
trim
().
isEmpty
())
{
String
message
=
"X-Gitlab-Event header is missing!"
;
LOGGER
.
warning
(
message
);
return
;
return
(
null
)
;
}
if
(!
isValidSecretToken
(
request
))
{
...
...
@@ -126,6 +158,7 @@ public class SystemHookManager extends HookManager {
event
.
setRequestUrl
(
requestUrl
!=
null
?
requestUrl
.
toString
()
:
null
);
event
.
setRequestQueryString
(
request
.
getQueryString
());
fireEvent
(
event
);
return
(
event
);
}
catch
(
Exception
e
)
{
LOGGER
.
warning
(
"Error processing JSON data, exception="
+
...
...
src/main/java/org/gitlab4j/api/webhook/WebHookManager.java
View file @
c6080e4c
...
...
@@ -18,7 +18,7 @@ import org.gitlab4j.api.utils.JacksonJson;
/**
* This class provides a handler for processing GitLab WebHook callouts.
*/
public
class
WebHookManager
ext
en
d
s
HookManager
{
public
class
WebHookManager
implem
en
t
s
HookManager
{
private
final
static
Logger
LOGGER
=
GitLabApi
.
getLogger
();
private
final
JacksonJson
jacksonJson
=
new
JacksonJson
();
...
...
@@ -26,11 +26,12 @@ public class WebHookManager extends HookManager {
// Collection of objects listening for WebHook events.
private
final
List
<
WebHookListener
>
webhookListeners
=
new
CopyOnWriteArrayList
<
WebHookListener
>();
private
String
secretToken
;
/**
* Create a HookManager to handle GitLab webhook events.
*/
public
WebHookManager
()
{
super
();
}
/**
...
...
@@ -40,7 +41,25 @@ public class WebHookManager extends HookManager {
* @param secretToken the secret token to verify against
*/
public
WebHookManager
(
String
secretToken
)
{
super
(
secretToken
);
this
.
secretToken
=
secretToken
;
}
/**
* Get the secret token that received hook events should be validated against.
*
* @return the secret token that received hook events should be validated against
*/
public
String
getSecretToken
()
{
return
(
secretToken
);
}
/**
* Set the secret token that received hook events should be validated against.
*
* @param secretToken the secret token to verify against
*/
public
void
setSecretToken
(
String
secretToken
)
{
this
.
secretToken
=
secretToken
;
}
/**
...
...
@@ -51,11 +70,24 @@ public class WebHookManager extends HookManager {
* @throws GitLabApiException if the parsed event is not supported
*/
public
void
handleEvent
(
HttpServletRequest
request
)
throws
GitLabApiException
{
handleRequest
(
request
);
}
/**
* Parses and verifies an Event instance from the HTTP request and
* fires it off to the registered listeners.
*
* @param request the HttpServletRequest to read the Event instance from
* @return the Event instance that was read from the request body, null if the request
* not contain a webhook event
* @throws GitLabApiException if the parsed event is not supported
*/
public
Event
handleRequest
(
HttpServletRequest
request
)
throws
GitLabApiException
{
String
eventName
=
request
.
getHeader
(
"X-Gitlab-Event"
);
if
(
eventName
==
null
||
eventName
.
trim
().
isEmpty
())
{
LOGGER
.
warning
(
"X-Gitlab-Event header is missing!"
);
return
;
return
(
null
)
;
}
if
(!
isValidSecretToken
(
request
))
{
...
...
@@ -101,6 +133,7 @@ public class WebHookManager extends HookManager {
event
.
setRequestUrl
(
request
.
getRequestURL
().
toString
());
event
.
setRequestQueryString
(
request
.
getQueryString
());
fireEvent
(
event
);
return
(
event
);
}
catch
(
Exception
e
)
{
LOGGER
.
warning
(
"Error parsing JSON data, exception="
+
e
.
getClass
().
getSimpleName
()
+
", error="
+
e
.
getMessage
());
...
...
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