66 lines
2.2 KiB
Kotlin
66 lines
2.2 KiB
Kotlin
package pl.edu.amu.wmi.socialaggregator.socialplatforms
|
|
|
|
import android.content.Context
|
|
import android.graphics.Bitmap
|
|
import android.util.Log
|
|
import pl.edu.amu.wmi.socialaggregator.utils.InternalStorage
|
|
import java.io.ByteArrayOutputStream
|
|
import java.io.File
|
|
|
|
class FacebookMock : SocialPlatform {
|
|
|
|
companion object {
|
|
val TAG = FacebookMock::class.java.canonicalName
|
|
}
|
|
|
|
override fun getName(): String = "Facebook"
|
|
|
|
override fun login(context: Context) {
|
|
val loginsDir = InternalStorage.getFileOrDir(context, "logins")
|
|
loginsDir?.mkdir()
|
|
if (loginsDir != null) {
|
|
val loginFile = File(loginsDir, "facebook")
|
|
loginFile.createNewFile()
|
|
} else {
|
|
Log.e(TAG, "Could not create logins directory")
|
|
}
|
|
}
|
|
|
|
override fun logout(context: Context) {
|
|
InternalStorage.getFileOrDir(context, "logins/facebook")?.delete()
|
|
}
|
|
|
|
override fun isLoggedIn(context: Context): Boolean {
|
|
return InternalStorage.getFileOrDir(context, "logins/facebook")?.exists() ?: false
|
|
}
|
|
|
|
override fun addPost(context: Context, text: String, images: List<Bitmap>) {
|
|
val postsDir = InternalStorage.getFileOrDir(context, "posts/facebook")
|
|
if (postsDir != null) {
|
|
val postDir = File(postsDir, System.currentTimeMillis().toString())
|
|
postDir.mkdirs()
|
|
|
|
val textFile = File(postDir, "content")
|
|
textFile.createNewFile()
|
|
textFile.writeText(text)
|
|
|
|
images.forEachIndexed { index, image ->
|
|
val imageFile = File(postDir, "image$index")
|
|
imageFile.createNewFile()
|
|
|
|
ByteArrayOutputStream().use { stream ->
|
|
image.compress(Bitmap.CompressFormat.JPEG, 100, stream)
|
|
imageFile.writeBytes(stream.toByteArray())
|
|
}
|
|
}
|
|
|
|
} else {
|
|
Log.e(TAG, "Could not create posts directory")
|
|
}
|
|
}
|
|
|
|
override fun getPosts(context: Context): List<String> {
|
|
val postsDir = InternalStorage.getFileOrDir(context, "posts/facebook")
|
|
return postsDir?.listFiles()?.map { it.name }?.toList() ?: emptyList()
|
|
}
|
|
} |