Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19b21cd7 authored by jo's avatar jo
Browse files

big_changes

parent 825fae3b
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
package io.eelo.appinstaller.api

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import io.eelo.appinstaller.application.model.data.FullData
import io.eelo.appinstaller.utils.Constants
import java.net.URL

class AppDetailRequest(private val id: String) {

    companion object {
        private val reader = ObjectMapper().readerFor(Result::class.java)
    }

    fun request(): FullData {
        return reader.readValue<Result>(URL(Constants.BASE_URL + "apps?action=app_detail&id=$id")).app
    }

    class Result @JsonCreator
    constructor(@JsonProperty("app") val app: FullData,
                @JsonProperty("success") private val success: Boolean)
}
 No newline at end of file
+79 −0
Original line number Diff line number Diff line
package io.eelo.appinstaller.api

import android.content.Context
import com.fasterxml.jackson.annotation.JsonAnySetter
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import io.eelo.appinstaller.application.model.Application
import io.eelo.appinstaller.application.model.InstallManager
import io.eelo.appinstaller.application.model.data.FullData
import io.eelo.appinstaller.utils.ApplicationParser
import io.eelo.appinstaller.utils.Constants
import java.net.URL

class HomeRequest {

    companion object {
        private val reader = ObjectMapper().readerFor(HomeResult::class.java)
    }

    fun request(): HomeResult {
        return reader.readValue(URL(Constants.BASE_URL + "apps?action=list_home"))
    }

    class HomeResult @JsonCreator
    constructor(@JsonProperty("success") private val success: Boolean,
                @JsonProperty("home") private val home: SubHomeResult) {

        fun getBannerApps(installManager: InstallManager, context: Context): ArrayList<Application> {
            return ApplicationParser.parseToApps(installManager, context, home.bannerApps)
        }

        fun getApps(installManager: InstallManager, context: Context): HashMap<String, ArrayList<Application>> {
            val apps = HashMap<String, ArrayList<Application>>()
            home.apps.forEach { category, appsData ->
                apps[category] = ApplicationParser.parseToApps(installManager, context, appsData.toTypedArray())
            }
            return apps
        }

    }

    class SubHomeResult @JsonCreator
    constructor(@JsonProperty("banner_apps") val bannerApps: Array<FullData>) {

        val apps = HashMap<String, ArrayList<FullData>>()

        @JsonAnySetter
        fun append(key: String, value: Any) {
            val apps = value as ArrayList<*>
            val appsData = ArrayList<FullData>()
            apps.forEach {
                val data = it as LinkedHashMap<*, *>
                val appData = FullData(
                        data["package_name"] as String,
                        data["_id"] as String,
                        data["name"] as String,
                        data["last_modified"] as String,
                        data["latest_version"] as String,
                        data["author"] as String,
                        data["icon_image_path"] as String,
                        (data["other_images_path"] as List<String>).toTypedArray(),
                        data["category"] as String,
                        data["created_on"] as String,
                        data["source"] as String,
                        data["description"] as String,
                        data["app_link"] as String,
                        data["licence"] as String)
                for (pair in data) {
                    appData.jsonCreator(pair.key as String, pair.value)
                }
                appsData.add(appData)
            }
            this.apps[key] = appsData
        }

    }

}
 No newline at end of file
+34 −0
Original line number Diff line number Diff line
package io.eelo.appinstaller.categories.category.model
package io.eelo.appinstaller.api

import android.content.Context
import android.os.AsyncTask
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import io.eelo.appinstaller.application.model.Application
import io.eelo.appinstaller.application.model.ApplicationData
import io.eelo.appinstaller.application.model.InstallManager
import io.eelo.appinstaller.application.model.data.FullData
import io.eelo.appinstaller.utils.ApplicationParser
import io.eelo.appinstaller.utils.Constants
import java.net.URL

class Loader(private val page: Int, private val categoryModel: CategoryModel) : AsyncTask<Context, Any, ArrayList<Application>>() {
class ListApplicationsRequest(private val category: String, private val page: Int, private val resultsPerPage: Int) {

    companion object {
        private val jsonReader = ObjectMapper().readerFor(CategoryApplicationsResult::class.java)
        private val reader = ObjectMapper().readerFor(ListApplicationsResult::class.java)
    }

    override fun doInBackground(vararg params: Context): ArrayList<Application> {
        val context = params[0]
        val result = jsonReader.readValue<CategoryApplicationsResult>(URL(Constants.BASE_URL + "apps?action=list_apps&category=" + categoryModel.category + "&nres=" + Constants.RESULTS_PER_PAGE + "&page=" + page))
        return ApplicationParser.parseToApps(categoryModel.installManager, context, result.apps)
    fun request(): ListApplicationsResult {
        return reader.readValue(URL(Constants.BASE_URL + "apps?action=list_apps&category=$category&nres=$resultsPerPage&page=$page"))
    }

    override fun onPostExecute(result: ArrayList<Application>) {
        categoryModel.categoryApplicationsList.value = result
    class ListApplicationsResult @JsonCreator
    constructor(@JsonProperty("pages") val pages: Int,
                @JsonProperty("apps") private val apps: Array<FullData>) {

        fun getApplications(installManager: InstallManager, context: Context): ArrayList<Application> {
            return ApplicationParser.parseToApps(installManager, context, apps)
        }
    }

    class CategoryApplicationsResult @JsonCreator
    constructor(@JsonProperty("pages") val pages: Int,
                @JsonProperty("apps") val apps: Array<ApplicationData>)

}
 No newline at end of file
+23 −0
Original line number Diff line number Diff line
package io.eelo.appinstaller.categories.model
package io.eelo.appinstaller.api

import android.os.AsyncTask
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import io.eelo.appinstaller.utils.Constants
import java.net.URL

class Loader(private val categoriesModel: CategoriesModel) : AsyncTask<Any, Any, Loader.ListCategoriesResult>() {
class ListCategoriesRequest {

    companion object {
        private val jsonReader = ObjectMapper().readerFor(ListCategoriesResult::class.java)
        private val reader = ObjectMapper().readerFor(ListCategoriesResult::class.java)
    }

    override fun doInBackground(vararg params: Any): ListCategoriesResult {
        return jsonReader.readValue<ListCategoriesResult>(URL(Constants.BASE_URL + "apps?action=list_cat"))
    }

    override fun onPostExecute(result: ListCategoriesResult) {
        val applicationsCategoriesList = ArrayList<Category>()
        val gamesCategoriesList = ArrayList<Category>()
        result.appsCategories.forEach { id ->
            applicationsCategoriesList.add(Category(null, id))
        }
        result.gamesCategories.forEach { id ->
            gamesCategoriesList.add(Category(null, id))
        }
        categoriesModel.applicationsCategoriesList.value = applicationsCategoriesList
        categoriesModel.gamesCategoriesList.value = gamesCategoriesList
    fun request(): ListCategoriesResult {
        return reader.readValue<ListCategoriesResult>(URL(Constants.BASE_URL + "apps?action=list_cat"))
    }

    class ListCategoriesResult @JsonCreator
    constructor(@JsonProperty("apps") val appsCategories: Array<String>,
                @JsonProperty("games") val gamesCategories: Array<String>)
}

}
 No newline at end of file
+34 −0
Original line number Diff line number Diff line
package io.eelo.appinstaller.application.model
package io.eelo.appinstaller.api

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.ObjectMapper
import io.eelo.appinstaller.application.model.data.FullData
import io.eelo.appinstaller.utils.Constants
import java.net.URL

class PackageNameFinder @JsonCreator
constructor(@JsonProperty("pages") val pages: Int,
            @JsonProperty("numberOfResults") val numberOfResults: Int,
            @JsonProperty("apps") val apps: Array<ApplicationData>) {
class PackageNameSearchRequest(private val packageName: String) {

    companion object {
        private val reader = ObjectMapper().readerFor(PackageNameFinder::class.java)
        private val reader = ObjectMapper().readerFor(SearchResult::class.java)
    }

    fun request(): SearchResult {
        return reader.readValue(URL(Constants.BASE_URL + "apps?action=search&keyword=$packageName&by=package_name"))
    }

        fun find(packageName: String): ApplicationData? {
            val url = URL(Constants.BASE_URL + "apps?action=search&by=package_name&keyword=$packageName")
            val result = reader.readValue<PackageNameFinder>(url.openStream())
            result.apps.forEach {
                println(url)
    class SearchResult @JsonCreator
    constructor(@param:JsonProperty("pages") val pages: Int,
                @param:JsonProperty("numberOfResults") val resultsNumber: Int,
                @param:JsonProperty("apps") val appResults: Array<FullData>) {

        fun findOneAppData(packageName: String): FullData? {
            appResults.forEach {
                if (it.packageName == packageName) {
                    return it
                }
@@ -26,5 +31,4 @@ constructor(@JsonProperty("pages") val pages: Int,
            return null
        }
    }

}
 No newline at end of file
Loading