From 743c3147c1ce56c539feb92dded9de71e41da2d1 Mon Sep 17 00:00:00 2001 From: ivan agosto Date: Sat, 23 Feb 2019 15:14:56 -0600 Subject: [PATCH] Models parse funcion added and channel model added --- app/build.gradle | 2 +- .../org/libre/agosto/p2play/ajax/Actions.kt | 7 ++ .../java/org/libre/agosto/p2play/ajax/Auth.kt | 7 ++ .../org/libre/agosto/p2play/ajax/Channels.kt | 35 +++++++++ .../org/libre/agosto/p2play/ajax/Client.kt | 3 + .../org/libre/agosto/p2play/ajax/Comments.kt | 57 +++----------- .../org/libre/agosto/p2play/ajax/Videos.kt | 75 +++---------------- .../agosto/p2play/models/ChannelModel.kt | 64 ++++++++++++++++ .../agosto/p2play/models/CommentaryModel.kt | 49 +++++++++++- .../libre/agosto/p2play/models/VideoModel.kt | 73 +++++++++++++++++- 10 files changed, 261 insertions(+), 111 deletions(-) create mode 100644 app/src/main/java/org/libre/agosto/p2play/ajax/Channels.kt create mode 100644 app/src/main/java/org/libre/agosto/p2play/models/ChannelModel.kt diff --git a/app/build.gradle b/app/build.gradle index 7cd9331..38bd24a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 27 defaultConfig { - applicationId "mx.agosto182.p2play" + applicationId "org.libre.agosto.p2play" minSdkVersion 21 targetSdkVersion 27 versionCode 4 diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Actions.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Actions.kt index 77b313a..7fb0929 100644 --- a/app/src/main/java/org/libre/agosto/p2play/ajax/Actions.kt +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Actions.kt @@ -21,6 +21,7 @@ class Actions: Client() { response = -1 } + con.disconnect() return response } @@ -38,6 +39,7 @@ class Actions: Client() { response = -1 } + con.disconnect() return response } @@ -61,6 +63,7 @@ class Actions: Client() { } } } + data.close() } } catch (err: Exception){ @@ -68,6 +71,7 @@ class Actions: Client() { isSubscribed = false } + con.disconnect() return isSubscribed } @@ -87,6 +91,7 @@ class Actions: Client() { response = -1 } + con.disconnect() return response } @@ -110,6 +115,7 @@ class Actions: Client() { } } } + con.disconnect() } } catch (err: Exception){ @@ -117,6 +123,7 @@ class Actions: Client() { rating = "none" } + con.disconnect() return rating } diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Auth.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Auth.kt index d281371..fc88bdb 100644 --- a/app/src/main/java/org/libre/agosto/p2play/ajax/Auth.kt +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Auth.kt @@ -35,6 +35,7 @@ class Auth: Client() { } data.endObject() + data.close() token.status = 1 } @@ -47,6 +48,7 @@ class Auth: Client() { token.status = 0 } + con.disconnect() return token } @@ -67,6 +69,7 @@ class Auth: Client() { response = -1 } + con.disconnect() return response } @@ -93,6 +96,7 @@ class Auth: Client() { } data.endObject() + data.close() token.status = 1 } @@ -105,6 +109,7 @@ class Auth: Client() { token.status = 0 } + con.disconnect() return token } @@ -158,6 +163,7 @@ class Auth: Client() { } data.endObject() + data.close() user.status = 1 } @@ -170,6 +176,7 @@ class Auth: Client() { user.status = 0 } + con.disconnect() return user } diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Channels.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Channels.kt new file mode 100644 index 0000000..798fed1 --- /dev/null +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Channels.kt @@ -0,0 +1,35 @@ +package org.libre.agosto.p2play.ajax + +import android.util.JsonReader +import android.util.JsonToken +import org.libre.agosto.p2play.models.ChannelModel +import org.libre.agosto.p2play.models.CommentaryModel +import java.io.InputStreamReader + +class Channels: Client() { + + private fun parseChannel(data: JsonReader): ChannelModel{ + val channel = ChannelModel() + + data.close() + + return channel + } + + fun getChannelInfo(channelId: String): ChannelModel { + val con = this._newCon("video-channels/$channelId", "GET") + var channel = ChannelModel() + try { + if(con.responseCode == 200){ + val response = InputStreamReader(con.inputStream) + val data = JsonReader(response) + channel.parseChannel(data) + data.close() + } + }catch (err: Exception) { + err.printStackTrace() + } + + return channel + } +} \ No newline at end of file diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Client.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Client.kt index 1d4aeaf..815779f 100644 --- a/app/src/main/java/org/libre/agosto/p2play/ajax/Client.kt +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Client.kt @@ -56,10 +56,13 @@ open class Client { } } } + data.close() } } catch(err:Exception){ err.printStackTrace() } + + con.disconnect() return keys } diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Comments.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Comments.kt index 7fd8c97..9cf1190 100644 --- a/app/src/main/java/org/libre/agosto/p2play/ajax/Comments.kt +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Comments.kt @@ -8,7 +8,7 @@ import java.io.InputStreamReader class Comments: Client() { - fun parseCommentaries(data: JsonReader): ArrayList { + private fun parseCommentaries(data: JsonReader): ArrayList { val commentaries = arrayListOf() data.beginObject() while (data.hasNext()){ @@ -17,47 +17,7 @@ class Comments: Client() { data.beginArray() while (data.hasNext()) { val comment = CommentaryModel() - data.beginObject() - while (data.hasNext()) { - val key = data.nextName() - when (key.toString()) { - "id" -> comment.id = data.nextInt() - "threadId" -> comment.threadId = data.nextInt() - "text" -> comment.commentary = data.nextString() - "totalReplies" -> comment.replies = data.nextInt() - "account" -> { - data.beginObject() - while (data.hasNext()){ - val acKey = data.nextName() - when(acKey.toString()){ - "displayName"-> comment.username=data.nextString() - "avatar"-> { - if(data.peek() == JsonToken.BEGIN_OBJECT){ - data.beginObject() - while (data.hasNext()){ - val avKey = data.nextName() - when(avKey){ - "path"-> comment.userImageUrl = data.nextString() - else-> data.skipValue() - } - } - data.endObject() - } - else - data.skipValue() - - } - "uuid" -> comment.userUuid = data.nextString() - "host" -> comment.userHost = data.nextString() - else -> data.skipValue() - } - } - data.endObject() - } - else -> data.skipValue() - } - } - data.endObject() + comment.parseCommentary(data) commentaries.add(comment) } data.endArray() @@ -79,11 +39,12 @@ class Comments: Client() { val response = InputStreamReader(con.inputStream) val data = JsonReader(response) commentaries = parseCommentaries(data) + data.close() } } catch(err:Exception){ err.printStackTrace() } - + con.disconnect() return commentaries } @@ -92,19 +53,25 @@ class Comments: Client() { val params = "text=$text" con.outputStream.write(params.toByteArray()) + var response: Boolean + try { if (con.responseCode == 200) { - return true + con.disconnect() + response = true } else{ Log.d("Status", con.responseMessage) + response = false } } catch (err: Exception){ err.printStackTrace() + response = false } - return false + con.disconnect() + return response } } \ No newline at end of file diff --git a/app/src/main/java/org/libre/agosto/p2play/ajax/Videos.kt b/app/src/main/java/org/libre/agosto/p2play/ajax/Videos.kt index 46d2040..341b786 100644 --- a/app/src/main/java/org/libre/agosto/p2play/ajax/Videos.kt +++ b/app/src/main/java/org/libre/agosto/p2play/ajax/Videos.kt @@ -17,68 +17,7 @@ class Videos: Client() { data.beginArray() while (data.hasNext()) { val video = VideoModel() - data.beginObject() - while (data.hasNext()){ - val key = data.nextName() - when (key.toString()) { - "id"-> video.id = data.nextInt() - "name"->{ - video.name= data.nextString() - } - "description"->{ - if(data.peek() == JsonToken.STRING) - video.description = data.nextString() - else - data.skipValue() - } - "duration"->{ - video.duration = data.nextInt() - } - "thumbnailPath"->{ - video.thumbUrl = data.nextString() - } - "embedPath"->{ - video.embedUrl = data.nextString() - } - "views"->{ - video.views = data.nextInt() - } - "channel"->{ - data.beginObject() - while (data.hasNext()){ - val acKey = data.nextName() - when(acKey.toString()){ - "displayName"-> video.username=data.nextString() - "avatar"-> { - if(data.peek() == JsonToken.BEGIN_OBJECT){ - data.beginObject() - while (data.hasNext()){ - val avKey = data.nextName() - when(avKey){ - "path"-> video.userImageUrl = data.nextString() - else-> data.skipValue() - } - } - data.endObject() - } - else - data.skipValue() - - } - "uuid" -> video.userUuid = data.nextString() - "host" -> video.userHost = data.nextString() - "name" -> video.nameChannel = data.nextString() - else-> data.skipValue() - } - } - data.endObject() - } - else->{ - data.skipValue() - } - } - } - data.endObject() + video.parseVideo(data) videos.add(video) } data.endArray() @@ -104,10 +43,12 @@ class Videos: Client() { val response = InputStreamReader(con.inputStream) val data = JsonReader(response) videos = parseVideos(data) + data.close() } } catch(err:Exception){ err.printStackTrace() } + con.disconnect() return videos } @@ -137,10 +78,13 @@ class Videos: Client() { val response = InputStreamReader(con.inputStream) val data = JsonReader(response) videos = parseVideos(data) + data.close() } } catch(err:Exception){ err.printStackTrace() } + + con.disconnect() return videos } @@ -154,10 +98,13 @@ class Videos: Client() { val response = InputStreamReader(con.inputStream) val data = JsonReader(response) videos = parseVideos(data) + data.close() } } catch(err:Exception){ err.printStackTrace() } + + con.disconnect() return videos } @@ -172,10 +119,12 @@ class Videos: Client() { val response = InputStreamReader(con.inputStream) val data = JsonReader(response) videos = parseVideos(data) + data.close() } } catch(err:Exception){ err.printStackTrace() } + con.disconnect() return videos } @@ -197,12 +146,12 @@ class Videos: Client() { } data.endObject() data.close() - } } catch(err:Exception){ err.printStackTrace() description = "Error!" } + con.disconnect() return description } } \ No newline at end of file diff --git a/app/src/main/java/org/libre/agosto/p2play/models/ChannelModel.kt b/app/src/main/java/org/libre/agosto/p2play/models/ChannelModel.kt new file mode 100644 index 0000000..1966c70 --- /dev/null +++ b/app/src/main/java/org/libre/agosto/p2play/models/ChannelModel.kt @@ -0,0 +1,64 @@ +package org.libre.agosto.p2play.models + +import android.util.JsonReader +import android.util.JsonToken + +class ChannelModel ( + var id: Int = 0, + var url: String = "", + var nameChannel: String = "", + var followers: Int = 0, + var host: String = "", + var name: String = "", + var description: String = "", + var support: String = "", + var channelImg: String = "" +) { + fun getAccount(): String { + return "$nameChannel@$host" + } + + fun parseChannel(data: JsonReader) { + data.beginObject() + + while (data.hasNext()) { + + when(data.nextName()){ + "id" -> this.id = data.nextInt() + "url" -> this.url = data.nextString() + "name" -> this.nameChannel = data.nextString() + "host" -> this.host = data.nextString() + "followersCount" -> this.followers = data.nextInt() + "displayName" -> this.name = data.nextString() + "description" -> { + if(data.peek() == JsonToken.STRING) + this.description = data.nextString() + else + data.skipValue() + } + "support" -> { + if(data.peek() == JsonToken.STRING) + this.support = data.nextString() + else + data.skipValue() + } + "avatar" -> { + if(data.peek() == JsonToken.BEGIN_OBJECT){ + data.beginObject() + while (data.hasNext()){ + when(data.nextName()){ + "path" -> this.channelImg = data.nextString() + else -> data.skipValue() + } + } + data.endObject() + } + else + data.skipValue() + } + else -> data.skipValue() + } + } + data.endObject() + } +} \ No newline at end of file diff --git a/app/src/main/java/org/libre/agosto/p2play/models/CommentaryModel.kt b/app/src/main/java/org/libre/agosto/p2play/models/CommentaryModel.kt index f1b5b47..55543c2 100644 --- a/app/src/main/java/org/libre/agosto/p2play/models/CommentaryModel.kt +++ b/app/src/main/java/org/libre/agosto/p2play/models/CommentaryModel.kt @@ -1,5 +1,8 @@ package org.libre.agosto.p2play.models +import android.util.JsonReader +import android.util.JsonToken + class CommentaryModel ( var id: Int = 0, var threadId: Int = 0, @@ -9,4 +12,48 @@ class CommentaryModel ( var commentary: String = "", var userHost: String = "", var replies: Int = 0 -) \ No newline at end of file +) { + fun parseCommentary(data: JsonReader) { + data.beginObject() + while (data.hasNext()) { + val key = data.nextName() + when (key.toString()) { + "id" -> this.id = data.nextInt() + "threadId" -> this.threadId = data.nextInt() + "text" -> this.commentary = data.nextString() + "totalReplies" -> this.replies = data.nextInt() + "account" -> { + data.beginObject() + while (data.hasNext()){ + val acKey = data.nextName() + when(acKey.toString()){ + "displayName"-> this.username=data.nextString() + "avatar"-> { + if(data.peek() == JsonToken.BEGIN_OBJECT){ + data.beginObject() + while (data.hasNext()){ + val avKey = data.nextName() + when(avKey){ + "path"-> this.userImageUrl = data.nextString() + else-> data.skipValue() + } + } + data.endObject() + } + else + data.skipValue() + + } + "uuid" -> this.userUuid = data.nextString() + "host" -> this.userHost = data.nextString() + else -> data.skipValue() + } + } + data.endObject() + } + else -> data.skipValue() + } + } + data.endObject() + } +} \ No newline at end of file diff --git a/app/src/main/java/org/libre/agosto/p2play/models/VideoModel.kt b/app/src/main/java/org/libre/agosto/p2play/models/VideoModel.kt index e7bfa95..963d2f2 100644 --- a/app/src/main/java/org/libre/agosto/p2play/models/VideoModel.kt +++ b/app/src/main/java/org/libre/agosto/p2play/models/VideoModel.kt @@ -1,5 +1,7 @@ package org.libre.agosto.p2play.models +import android.util.JsonReader +import android.util.JsonToken import java.io.Serializable class VideoModel( @@ -15,4 +17,73 @@ class VideoModel( var userUuid: String = "", var userHost: String = "", var nameChannel: String = "" - ):Serializable \ No newline at end of file +):Serializable { + fun getAccount(): String { + return "$nameChannel@$userHost" + } + + fun parseVideo(data: JsonReader){ + data.beginObject() + while (data.hasNext()){ + val key = data.nextName() + when (key.toString()) { + "id"-> this.id = data.nextInt() + "name"->{ + this.name= data.nextString() + } + "description"->{ + if(data.peek() == JsonToken.STRING) + this.description = data.nextString() + else + data.skipValue() + } + "duration"->{ + this.duration = data.nextInt() + } + "thumbnailPath"->{ + this.thumbUrl = data.nextString() + } + "embedPath"->{ + this.embedUrl = data.nextString() + } + "views"->{ + this.views = data.nextInt() + } + "channel"->{ + data.beginObject() + while (data.hasNext()){ + val acKey = data.nextName() + when(acKey.toString()){ + "displayName"-> this.username=data.nextString() + "avatar"-> { + if(data.peek() == JsonToken.BEGIN_OBJECT){ + data.beginObject() + while (data.hasNext()){ + val avKey = data.nextName() + when(avKey){ + "path"-> this.userImageUrl = data.nextString() + else-> data.skipValue() + } + } + data.endObject() + } + else + data.skipValue() + + } + "uuid" -> this.userUuid = data.nextString() + "host" -> this.userHost = data.nextString() + "name" -> this.nameChannel = data.nextString() + else-> data.skipValue() + } + } + data.endObject() + } + else->{ + data.skipValue() + } + } + } + data.endObject() + } +} \ No newline at end of file