-
Notifications
You must be signed in to change notification settings - Fork 219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve the error caused in the #792 scenario #807
Improve the error caused in the #792 scenario #807
Conversation
@@ -219,17 +219,29 @@ public UnderlyingWebSocketSession(URI serverUri, Map<String, String> httpHeaders | |||
// FIXME: the proxy settings here may not work | |||
SlackConfig slackConfig = smc.getSlack().getHttpClient().getConfig(); | |||
Map<String, String> proxyHeaders = slackConfig.getProxyHeaders(); | |||
if (proxyHeaders == null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As the getProxyHeaders() method can return null value, we have a null check like we do in the default SocketModeClientTyrusImpl
String proxyUrl = slackConfig.getProxyUrl(); | ||
if (proxyUrl != null) { | ||
if (smc.getLogger().isDebugEnabled()) { | ||
smc.getLogger().debug("The SocketMode client's going to use an HTTP proxy: {}", proxyUrl); | ||
} | ||
ProxyUrlUtil.ProxyUrl parsedProxy = ProxyUrlUtil.parse(proxyUrl); | ||
if (parsedProxy.getUsername() != null && parsedProxy.getPassword() != null) { | ||
// see also: https://github.com/slackapi/java-slack-sdk/issues/792#issuecomment-895961176 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
see also: #806
@@ -48,14 +48,14 @@ public static ProxyUrl parse(String proxyUrl) { | |||
.username(userAndPassword[0]) | |||
.password(userAndPassword[1]) | |||
.host(hostAndPort[0]) | |||
.port(hostAndPort.length == 2 ? Integer.parseInt(hostAndPort[1]) : 80) | |||
.port(hostAndPort.length == 2 ? Integer.parseInt(hostAndPort[1].replace("/", "")) : 80) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found this potential issue while writing unit tests
public void proxyAuth() throws Exception { | ||
SlackConfig config = new SlackConfig(); | ||
config.setMethodsEndpointUrlPrefix(webApiServer.getMethodsEndpointPrefix()); | ||
config.setProxyUrl("http://user:pass@localhost:9000/"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using "http://localhost:9000/" still works. Also, passing static proxyHeaders also works.
@@ -173,7 +173,7 @@ public String issueSocketModeUrl(String appToken) throws IOException { | |||
} catch (SlackApiException e) { | |||
String message = "Failed to connect to the Socket Mode API endpoint. (" + | |||
"status: " + e.getResponse().code() + ", " + | |||
"error: " + e.getError().getError() + | |||
"error: " + (e.getError() != null ? e.getError().getError() : "") + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
e.getError()
cannot be null in a usual situation... but, just in case, we want to improve this part not to throw NPE (I encountered with the mock proxy sever returning 502 status)
Codecov Report
@@ Coverage Diff @@
## main #807 +/- ##
============================================
+ Coverage 76.75% 77.06% +0.31%
- Complexity 3395 3401 +6
============================================
Files 380 380
Lines 10224 10229 +5
Branches 997 1000 +3
============================================
+ Hits 7847 7883 +36
+ Misses 1800 1762 -38
- Partials 577 584 +7
Continue to review full report at Codecov.
|
InetSocketAddress proxyAddress = new InetSocketAddress(parsedProxy.getHost(), parsedProxy.getPort()); | ||
this.setProxy(new Proxy(Proxy.Type.HTTP, proxyAddress)); | ||
ProxyUrlUtil.setProxyAuthorizationHeader(proxyHeaders, parsedProxy); | ||
} | ||
if (slackConfig.getProxyHeaders() != null) { | ||
if (proxyHeaders != null && !proxyHeaders.isEmpty()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for improvement; proxyHeaders can be passed for other purposes
This pull request improves the developer experience in the scenario described in #792
Category (place an
x
in each of the[ ]
)Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to the those rules.