Skip to content

Commit da3f06e

Browse files
Make reusable base url paths to all query builders, added new constants and queries.
1 parent 464dd21 commit da3f06e

File tree

3 files changed

+80
-66
lines changed

3 files changed

+80
-66
lines changed

app/src/main/java/com/developerbreach/developerbreach/repository/network/NetworkService.kt

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,35 @@
11
package com.developerbreach.developerbreach.repository.network
22

33
import com.developerbreach.developerbreach.model.*
4-
import java.io.IOException
54
import java.net.URL
65

76

8-
fun getArticles(): List<Article> {
9-
val response = NetworkResponse.articleResponse()
7+
fun getArticles(
8+
totalPostsToDoRunQueryOn: Int
9+
): List<Article> {
10+
val response = NetworkResponse.articleResponse(totalPostsToDoRunQueryOn)
1011
return JsonRemoteData.fetchArticleJsonData(response)
1112
}
1213

13-
fun getArticleDetails(articleId: Int): ArticleDetail {
14+
fun getArticleDetails(
15+
articleId: Int
16+
): ArticleDetail {
1417
val response = NetworkResponse.articleDetailResponse(articleId)
1518
return JsonRemoteData.fetchArticleJsonDataById(response)
1619
}
1720

18-
fun getSearchableArticles(): List<Search> {
19-
val response = NetworkResponse.searchResponse()
21+
fun getSearchableArticles(
22+
totalPostsToDoRunQueryOn: Int
23+
): List<Search> {
24+
val response = NetworkResponse.searchResponse(totalPostsToDoRunQueryOn)
2025
return JsonRemoteData.fetchSearchableArticlesJsonData(response)
2126
}
2227

23-
fun getArticlesByCategory(
24-
categoryId: Int
28+
fun getArticlesByCategoryId(
29+
categoryId: Int,
30+
postsPage: Int
2531
): List<Article> {
26-
val response = NetworkResponse.articleResponseByCategoryId(categoryId)
32+
val response = NetworkResponse.articleResponseByCategoryId(categoryId, postsPage)
2733
return JsonRemoteData.fetchArticleJsonData(response)
2834
}
2935

@@ -44,54 +50,53 @@ fun getAuthorById(
4450
return JsonRemoteData.fetchAuthorDataById(response)
4551
}
4652

47-
// TODO verify Exception essentials
48-
object NetworkResponse {
53+
internal object NetworkResponse {
4954

50-
@Throws(IOException::class)
51-
fun articleResponse(): String {
52-
val uriString: String = QueryBuilder.articleBuilder(8)
55+
fun articleResponse(
56+
totalPostsToDoRunQueryOn: Int
57+
): String {
58+
val uriString: String = QueryBuilder.articleBuilder(totalPostsToDoRunQueryOn)
5359
val requestUrl: URL = createUrl(uriString)
5460
return getResponseFromHttpUrl(requestUrl)
5561
}
5662

57-
@Throws(IOException::class)
58-
fun articleDetailResponse(articleId: Int): String {
63+
fun articleDetailResponse(
64+
articleId: Int
65+
): String {
5966
val uriString: String = QueryBuilder.articleByIdBuilder(articleId)
6067
val requestUrl: URL = createUrl(uriString)
6168
return getResponseFromHttpUrl(requestUrl)
6269
}
6370

64-
@Throws(IOException::class)
65-
fun searchResponse(): String {
66-
val uriString: String = QueryBuilder.articleBuilder(28)
71+
fun searchResponse(
72+
totalPostsToDoRunQueryOn: Int
73+
): String {
74+
val uriString: String = QueryBuilder.articleBuilder(totalPostsToDoRunQueryOn)
6775
val requestUrl: URL = createUrl(uriString)
6876
return getResponseFromHttpUrl(requestUrl)
6977
}
7078

71-
@Throws(IOException::class)
7279
fun articleResponseByCategoryId(
73-
categoryId: Int
80+
categoryId: Int,
81+
postsPage: Int
7482
): String {
75-
val uriString: String = QueryBuilder.articlesByCategoryBuilder(categoryId)
83+
val uriString: String = QueryBuilder.articlesByCategoryBuilder(categoryId, postsPage)
7684
val requestUrl: URL = createUrl(uriString)
7785
return getResponseFromHttpUrl(requestUrl)
7886
}
7987

80-
@Throws(IOException::class)
8188
fun categoryResponse(): String {
8289
val uriString: String = QueryBuilder.categoryBuilder()
8390
val requestUrl: URL = createUrl(uriString)
8491
return getResponseFromHttpUrl(requestUrl)
8592
}
8693

87-
@Throws(IOException::class)
8894
fun authorResponse(): String {
8995
val uriString: String = QueryBuilder.authorBuilder()
9096
val requestUrl: URL = createUrl(uriString)
9197
return getResponseFromHttpUrl(requestUrl)
9298
}
9399

94-
@Throws(IOException::class)
95100
fun authorResponseById(authorId: Int): String {
96101
val uriString: String = QueryBuilder.authorBuilderById(authorId)
97102
val requestUrl: URL = createUrl(uriString)

app/src/main/java/com/developerbreach/developerbreach/repository/network/QueryBuilder.kt

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,79 +11,90 @@ import com.developerbreach.developerbreach.utils.*
1111
*/
1212
object QueryBuilder {
1313

14+
private const val NUMBER_OF_POSTS_PER_PAGE = 5.toString()
15+
1416
/**
15-
* https://developersbreach.com/wp-json/wp/v2/{posts}
16-
* [numberOfPostsPerPage] updates list with new content.
17+
* https://developersbreach.com/wp-json/wp/v2/posts?per_page=5
1718
*/
18-
fun articleBuilder(numberOfPostsPerPage: Int): String {
19-
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
20-
val uriBuilder: Uri.Builder = baseUri.buildUpon()
21-
uriBuilder.appendPath(APPEND_PATH)
22-
uriBuilder.appendPath(APPEND_ENDPOINT_POSTS)
23-
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_PER_PAGE, "$numberOfPostsPerPage")
19+
fun articleBuilder(
20+
numberOfPosts: Int
21+
): String {
22+
val uriBuilder: Uri.Builder = baseUriBuilder()
23+
uriBuilder.appendPath(APPEND_PATH_POSTS)
24+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_PER_PAGE, numberOfPosts.toString())
2425
return uriBuilder.build().toString()
2526
}
2627

2728
/**
2829
* https://developersbreach.com/wp-json/wp/v2/posts?include={10920}
2930
* [articleId] updates list with new content.
3031
*/
31-
fun articleByIdBuilder(articleId: Int): String {
32-
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
33-
val uriBuilder: Uri.Builder = baseUri.buildUpon()
34-
uriBuilder.appendPath(APPEND_PATH)
35-
uriBuilder.appendPath(APPEND_ENDPOINT_POSTS)
36-
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POST_INCLUDE_ID, "$articleId")
32+
fun articleByIdBuilder(
33+
articleId: Int
34+
): String {
35+
val uriBuilder: Uri.Builder = baseUriBuilder()
36+
uriBuilder.appendPath(APPEND_PATH_POSTS)
37+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POST_INCLUDE_ID, articleId.toString())
3738
return uriBuilder.build().toString()
3839
}
3940

4041
/**
4142
* https://developersbreach.com/wp-json/wp/v2/{posts}
4243
* [categoryId] updates articles list with based on selected category Id.
44+
*
4345
* https://developersbreach.com/wp-json/wp/v2/posts?categories=2713721
46+
* https://developersbreach.com/wp-json/wp/v2/posts?per_page=2&page=1&categories=2713553&orderby=date
4447
*/
4548
fun articlesByCategoryBuilder(
46-
categoryId: Int
49+
categoryId: Int,
50+
postsPage: Int
4751
): String {
48-
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
49-
val uriBuilder: Uri.Builder = baseUri.buildUpon()
50-
uriBuilder.appendPath(APPEND_PATH)
51-
uriBuilder.appendPath(APPEND_ENDPOINT_POSTS)
52-
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_BY_CATEGORY, "$categoryId")
52+
val uriBuilder: Uri.Builder = baseUriBuilder()
53+
uriBuilder.appendPath(APPEND_PATH_POSTS)
54+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_PER_PAGE, NUMBER_OF_POSTS_PER_PAGE)
55+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_PAGE, postsPage.toString())
56+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_BY_CATEGORY, categoryId.toString())
57+
uriBuilder.appendQueryParameter(QUERY_PARAMETER_POSTS_ORDER, ORDER_BY_DATE)
5358
return uriBuilder.build().toString()
5459
}
5560

5661
/**
5762
* https://developersbreach.com/wp-json/wp/v2/{categories}
5863
*/
5964
fun categoryBuilder(): String {
60-
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
61-
val uriBuilder: Uri.Builder = baseUri.buildUpon()
62-
uriBuilder.appendPath(APPEND_PATH)
63-
uriBuilder.appendPath("categories")
65+
val uriBuilder: Uri.Builder = baseUriBuilder()
66+
uriBuilder.appendPath(APPEND_PATH_CATEGORIES)
6467
return uriBuilder.build().toString()
6568
}
6669

6770
/**
6871
* https://developersbreach.com/wp-json/wp/v2/{users}
6972
*/
7073
fun authorBuilder(): String {
71-
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
72-
val uriBuilder: Uri.Builder = baseUri.buildUpon()
73-
uriBuilder.appendPath(APPEND_PATH)
74-
uriBuilder.appendPath("users")
74+
val uriBuilder: Uri.Builder = baseUriBuilder()
75+
uriBuilder.appendPath(APPEND_PATH_USERS)
7576
return uriBuilder.build().toString()
7677
}
7778

7879
/**
7980
* https://developersbreach.com/wp-json/wp/v2/users/{107376512}
8081
*/
81-
fun authorBuilderById(authorId: Int): String {
82+
fun authorBuilderById(
83+
authorId: Int
84+
): String {
85+
val uriBuilder: Uri.Builder = baseUriBuilder()
86+
uriBuilder.appendPath(APPEND_PATH_USERS)
87+
uriBuilder.appendPath(authorId.toString())
88+
return uriBuilder.build().toString()
89+
}
90+
91+
/**
92+
* https://developersbreach.com/wp-json/wp/v2
93+
*/
94+
private fun baseUriBuilder(): Uri.Builder {
8295
val baseUri: Uri = Uri.parse(SCHEME_AUTHORITY)
8396
val uriBuilder: Uri.Builder = baseUri.buildUpon()
8497
uriBuilder.appendPath(APPEND_PATH)
85-
uriBuilder.appendPath(APPEND_USERS_PATH)
86-
uriBuilder.appendPath(authorId.toString())
87-
return uriBuilder.build().toString()
98+
return uriBuilder
8899
}
89100
}

app/src/main/java/com/developerbreach/developerbreach/utils/Constants.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,14 @@ object Preferences {
4545

4646
const val SCHEME_AUTHORITY = "https://developersbreach.com"
4747
const val APPEND_PATH = "wp-json/wp/v2"
48-
const val APPEND_USERS_PATH = "users"
4948

50-
// ?per_page=21
51-
const val APPEND_ENDPOINT_POSTS = "posts"
49+
const val APPEND_PATH_USERS = "users"
50+
const val APPEND_PATH_CATEGORIES = "categories"
51+
const val APPEND_PATH_POSTS = "posts"
52+
5253
const val QUERY_PARAMETER_POSTS_PER_PAGE = "per_page"
54+
const val QUERY_PARAMETER_POSTS_PAGE = "page"
5355
const val QUERY_PARAMETER_POSTS_BY_CATEGORY = "categories"
5456
const val QUERY_PARAMETER_POST_INCLUDE_ID = "include"
55-
56-
// Get multiple articles by id's
57-
// const val ARTICLES_ID = "https://developersbreach.com/wp-json/wp/v2/posts?include=8432,7787"
58-
59-
// Get categories list
60-
// const val CATEGORIES = "https://developersbreach.com/wp-json/wp/v2/categories"
57+
const val QUERY_PARAMETER_POSTS_ORDER = "orderby"
58+
const val ORDER_BY_DATE = "date"

0 commit comments

Comments
 (0)