Loading app/src/main/java/io/eelo/appinstaller/api/AppDetailRequest.kt 0 → 100644 +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 app/src/main/java/io/eelo/appinstaller/api/HomeRequest.kt 0 → 100644 +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 app/src/main/java/io/eelo/appinstaller/categories/category/model/Loader.kt→app/src/main/java/io/eelo/appinstaller/api/ListApplicationsRequest.kt +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 app/src/main/java/io/eelo/appinstaller/categories/model/Loader.kt→app/src/main/java/io/eelo/appinstaller/api/ListCategoriesRequest.kt +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 app/src/main/java/io/eelo/appinstaller/application/model/PackageNameFinder.kt→app/src/main/java/io/eelo/appinstaller/api/PackageNameSearchRequest.kt +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 } Loading @@ -26,5 +31,4 @@ constructor(@JsonProperty("pages") val pages: Int, return null } } } No newline at end of file Loading
app/src/main/java/io/eelo/appinstaller/api/AppDetailRequest.kt 0 → 100644 +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
app/src/main/java/io/eelo/appinstaller/api/HomeRequest.kt 0 → 100644 +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
app/src/main/java/io/eelo/appinstaller/categories/category/model/Loader.kt→app/src/main/java/io/eelo/appinstaller/api/ListApplicationsRequest.kt +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
app/src/main/java/io/eelo/appinstaller/categories/model/Loader.kt→app/src/main/java/io/eelo/appinstaller/api/ListCategoriesRequest.kt +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
app/src/main/java/io/eelo/appinstaller/application/model/PackageNameFinder.kt→app/src/main/java/io/eelo/appinstaller/api/PackageNameSearchRequest.kt +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 } Loading @@ -26,5 +31,4 @@ constructor(@JsonProperty("pages") val pages: Int, return null } } } No newline at end of file