@@ -4,7 +4,10 @@ import com.fasterxml.jackson.databind.ObjectMapper
44import com .fasterxml .jackson .module .scala .DefaultScalaModule
55import com .sksamuel .elastic4s .requests .searches .SearchIterator
66import com .sksamuel .elastic4s .{ElasticClient , ElasticProperties }
7+ import org .apache .http .auth .{AuthScope , UsernamePasswordCredentials }
78import org .apache .http .client .config .RequestConfig
9+ import org .apache .http .impl .client .BasicCredentialsProvider
10+ import org .apache .http .impl .nio .client .HttpAsyncClientBuilder
811import org .occidere .githubwatcher .logger .GithubWatcherLogger
912import org .occidere .githubwatcher .vo ._
1013
@@ -19,13 +22,23 @@ import scala.util.Try
1922 */
2023object ElasticService extends GithubWatcherLogger {
2124 private lazy val MAPPER = new ObjectMapper ().registerModule(DefaultScalaModule )
25+
26+ private val esUsername = sys.env.get(" gw_es_username" )
27+ private val esPassword = sys.env.get(" gw_es_password" )
28+
2229 private lazy val client = ElasticClient (
2330 com.sksamuel.elastic4s.http.JavaClient (
2431 ElasticProperties (s " http:// ${sys.env.getOrElse(" gw_es_endpoint" , " localhost:9200" )}" ),
2532 (requestConfigBuilder : RequestConfig .Builder ) => requestConfigBuilder
2633 .setSocketTimeout(60000 )
2734 .setConnectTimeout(10000 )
28- .setConnectionRequestTimeout(10000 )
35+ .setConnectionRequestTimeout(10000 ),
36+ // Set credentials if exist
37+ (httpClientBuilder : HttpAsyncClientBuilder ) => httpClientBuilder.setDefaultCredentialsProvider(
38+ new BasicCredentialsProvider () {
39+ if (hasCredentials) setCredentials(AuthScope .ANY , new UsernamePasswordCredentials (esUsername.get, esPassword.get))
40+ }
41+ )
2942 )
3043 )
3144
@@ -77,6 +90,8 @@ object ElasticService extends GithubWatcherLogger {
7790
7891 def close (): Unit = client.close()
7992
93+ private def hasCredentials = esUsername.isDefined && esPassword.isDefined;
94+
8095 private def scrollFilterSearch [T ](index : String , queryString : String , dataType : Class [T ]): List [T ] = SearchIterator .hits(client,
8196 search(index)
8297 .bool(boolQuery().filter(query(queryString)))
0 commit comments