Skip to content

Commit

Permalink
- Updated PLogMQTTProvider.kt
Browse files Browse the repository at this point in the history
  • Loading branch information
umair13adil committed Jul 1, 2020
1 parent 3676c92 commit adb440a
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 9 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ android {
applicationId "com.blackbox.library.plog"
minSdkVersion 16
targetSdkVersion 28
versionCode 20
versionName "1.0.3"
versionCode 21
versionName "1.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
4 changes: 2 additions & 2 deletions plog/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 31
versionName "1.0.3"
versionCode 32
versionName "1.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
Expand Down
16 changes: 14 additions & 2 deletions plog/src/main/java/com/blackbox/plog/mqtt/PLogMQTTProvider.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ package com.blackbox.plog.mqtt

import android.content.Context
import android.support.annotation.RawRes
import android.util.Log
import com.blackbox.plog.mqtt.client.PahoMqqtClient
import com.blackbox.plog.pLogs.impl.PLogImpl
import org.eclipse.paho.android.service.MqttAndroidClient
import org.eclipse.paho.client.mqttv3.MqttClient
import java.io.InputStream

object PLogMQTTProvider {

Expand Down Expand Up @@ -37,7 +40,8 @@ object PLogMQTTProvider {
connectionTimeout: Int = this.connectionTimeout,
isCleanSession: Boolean = this.isCleanSession,
isAutomaticReconnect: Boolean = this.isAutomaticReconnect,
@RawRes certificateRes: Int) {
@RawRes certificateRes: Int? = null,
certificateStream: InputStream? = null) {

this.mqttEnabled = true
this.writeLogsToLocalStorage = writeLogsToLocalStorage
Expand All @@ -54,6 +58,14 @@ object PLogMQTTProvider {

val baseUrl = "ssl://${brokerUrl}:${port}"

androidClient = PahoMqqtClient.instance?.getMqttClient(context, baseUrl, MqttClient.generateClientId(), certificateRes)
if (certificateRes != null) {
androidClient = PahoMqqtClient.instance?.getMqttClient(context, baseUrl, MqttClient.generateClientId(), certificateRes)
} else if (certificateStream != null) {
androidClient = PahoMqqtClient.instance?.getMqttClient(context, baseUrl, MqttClient.generateClientId(), certificateStream)
} else {
if (PLogImpl.getConfig()?.isDebuggable!!) {
Log.e(TAG, "No certificate provided!")
}
}
}
}
45 changes: 42 additions & 3 deletions plog/src/main/java/com/blackbox/plog/mqtt/client/PahoMqqtClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.blackbox.plog.utils.Utils
import org.eclipse.paho.android.service.MqttAndroidClient
import org.eclipse.paho.client.mqttv3.*
import java.io.IOException
import java.io.InputStream
import java.io.UnsupportedEncodingException
import java.security.KeyManagementException
import java.security.KeyStoreException
Expand All @@ -22,8 +23,7 @@ class PahoMqqtClient {
private var connectOptions: MqttConnectOptions? = null
private var isConnected = false

fun getMqttClient(context: Context, brokerUrl: String?, clientId: String?, @RawRes certFile: Int): MqttAndroidClient {

private fun setUpClient(context: Context, brokerUrl: String?, clientId: String?) {
connectOptions = MqttConnectOptions()
connectOptions?.connectionTimeout = PLogMQTTProvider.connectionTimeout
connectOptions?.keepAliveInterval = PLogMQTTProvider.keepAliveIntervalSeconds
Expand Down Expand Up @@ -51,6 +51,11 @@ class PahoMqqtClient {
}
}
})
}

fun getMqttClient(context: Context, brokerUrl: String?, clientId: String?, @RawRes certFile: Int): MqttAndroidClient {

setUpClient(context, brokerUrl, clientId)

val socketFactoryOptions = SocketFactory.SocketFactoryOptions()
socketFactoryOptions.withCaInputStream(context.resources.openRawResource(certFile))
Expand All @@ -70,6 +75,41 @@ class PahoMqqtClient {
} catch (e: UnrecoverableKeyException) {
e.printStackTrace()
}

connect()

return mqttAndroidClient!!
}

fun getMqttClient(context: Context, brokerUrl: String?, clientId: String?, certInputStream: InputStream): MqttAndroidClient {

setUpClient(context, brokerUrl, clientId)

val socketFactoryOptions = SocketFactory.SocketFactoryOptions()
socketFactoryOptions.withCaInputStream(certInputStream)

try {
connectOptions?.socketFactory = SocketFactory(socketFactoryOptions)
} catch (e: KeyStoreException) {
e.printStackTrace()
} catch (e: NoSuchAlgorithmException) {
e.printStackTrace()
} catch (e: IOException) {
e.printStackTrace()
} catch (e: KeyManagementException) {
e.printStackTrace()
} catch (e: CertificateException) {
e.printStackTrace()
} catch (e: UnrecoverableKeyException) {
e.printStackTrace()
}

connect()

return mqttAndroidClient!!
}

private fun connect(){
try {
val token = mqttAndroidClient!!.connect(connectOptions)
token.actionCallback = object : IMqttActionListener {
Expand Down Expand Up @@ -98,7 +138,6 @@ class PahoMqqtClient {
Log.e(TAG, Utils.getStackTrace(e))
}
}
return mqttAndroidClient!!
}

@Throws(MqttException::class)
Expand Down

0 comments on commit adb440a

Please sign in to comment.