Skip to content
This repository was archived by the owner on Aug 18, 2021. It is now read-only.

Commit 90a0737

Browse files
committed
add: get Everythings and Sources
1 parent 09f1412 commit 90a0737

8 files changed

Lines changed: 289 additions & 55 deletions

File tree

app/src/main/java/com/frogobox/newsapi/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class MainActivity : AppCompatActivity() {
2020
null,
2121
null,
2222
"id",
23+
null,
24+
null,
2325
object : NewsResultCallback<ArticleResponse> {
2426
override fun getResultData(data: ArticleResponse) {}
2527

frogonewsapi/src/main/java/com/frogobox/frogonewsapi/ConsumeNewsApi.kt

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.frogobox.frogonewsapi
33
import android.content.Context
44
import com.frogobox.frogonewsapi.callback.NewsResultCallback
55
import com.frogobox.frogonewsapi.data.response.ArticleResponse
6+
import com.frogobox.frogonewsapi.data.response.SourceResponse
67
import com.frogobox.frogonewsapi.data.source.NewsDataSource
78
import com.frogobox.frogonewsapi.data.source.NewsRemoteDataSource
89
import com.frogobox.frogonewsapi.data.source.NewsRepository
@@ -37,6 +38,8 @@ class ConsumeNewsApi(private val apiKey: String) : ConsumeNewsApiView {
3738
sources: String?,
3839
category: String?,
3940
country: String?,
41+
pageSize: Int?,
42+
page: Int?,
4043
callback: NewsResultCallback<ArticleResponse>
4144
) {
4245
newsRepository.getTopHeadline(
@@ -45,6 +48,8 @@ class ConsumeNewsApi(private val apiKey: String) : ConsumeNewsApiView {
4548
sources,
4649
category,
4750
country,
51+
pageSize,
52+
page,
4853
object : NewsDataSource.GetRemoteCallback<ArticleResponse> {
4954
override fun onSuccess(data: ArticleResponse) {
5055
callback.getResultData(data)
@@ -64,4 +69,81 @@ class ConsumeNewsApi(private val apiKey: String) : ConsumeNewsApiView {
6469

6570
})
6671
}
72+
73+
override fun getEverythings(
74+
q: String?,
75+
from: String?,
76+
to: String?,
77+
qInTitle: String?,
78+
sources: String?,
79+
domains: String?,
80+
excludeDomains: String?,
81+
language: String?,
82+
sortBy: String?,
83+
pageSize: Int?,
84+
page: Int?,
85+
callback: NewsResultCallback<ArticleResponse>
86+
) {
87+
newsRepository.getEverythings(
88+
apiKey,
89+
q,
90+
from,
91+
to,
92+
qInTitle,
93+
sources,
94+
domains,
95+
excludeDomains,
96+
language,
97+
sortBy,
98+
pageSize,
99+
page,
100+
object : NewsDataSource.GetRemoteCallback<ArticleResponse>{
101+
override fun onSuccess(data: ArticleResponse) {
102+
callback.getResultData(data)
103+
}
104+
105+
override fun onFailed(statusCode: Int, errorMessage: String?) {
106+
callback.failedResult(statusCode, errorMessage)
107+
}
108+
109+
override fun onShowProgress() {
110+
callback.onShowProgress()
111+
}
112+
113+
override fun onHideProgress() {
114+
callback.onHideProgress()
115+
}
116+
}
117+
)
118+
}
119+
120+
override fun getSources(
121+
language: String,
122+
country: String,
123+
category: String,
124+
callback: NewsResultCallback<SourceResponse>
125+
) {
126+
newsRepository.getSources(
127+
apiKey,
128+
language,
129+
country,
130+
category,
131+
object : NewsDataSource.GetRemoteCallback<SourceResponse> {
132+
override fun onSuccess(data: SourceResponse) {
133+
callback.getResultData(data)
134+
}
135+
136+
override fun onFailed(statusCode: Int, errorMessage: String?) {
137+
callback.failedResult(statusCode, errorMessage)
138+
}
139+
140+
override fun onShowProgress() {
141+
callback.onShowProgress()
142+
}
143+
144+
override fun onHideProgress() {
145+
callback.onHideProgress()
146+
}
147+
})
148+
}
67149
}

frogonewsapi/src/main/java/com/frogobox/frogonewsapi/ConsumeNewsApiView.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.frogobox.frogonewsapi
33
import android.content.Context
44
import com.frogobox.frogonewsapi.callback.NewsResultCallback
55
import com.frogobox.frogonewsapi.data.response.ArticleResponse
6+
import com.frogobox.frogonewsapi.data.response.SourceResponse
67

78
/**
89
* Created by Faisal Amir
@@ -32,7 +33,33 @@ interface ConsumeNewsApiView {
3233
sources: String?,
3334
category: String?,
3435
country: String?,
36+
pageSize: Int?,
37+
page: Int?,
3538
callback: NewsResultCallback<ArticleResponse>
3639
)
3740

41+
// Get Everythings
42+
fun getEverythings(
43+
q: String?,
44+
from: String?,
45+
to: String?,
46+
qInTitle: String?,
47+
sources: String?,
48+
domains: String?,
49+
excludeDomains: String?,
50+
language: String?,
51+
sortBy: String?,
52+
pageSize: Int?,
53+
page: Int?,
54+
callback: NewsResultCallback<ArticleResponse>
55+
)
56+
57+
// Get Sources
58+
fun getSources(
59+
language: String,
60+
country: String,
61+
category: String,
62+
callback: NewsResultCallback<SourceResponse>
63+
)
64+
3865
}

frogonewsapi/src/main/java/com/frogobox/frogonewsapi/data/source/NewsApiService.kt

Lines changed: 29 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.frogobox.frogonewsapi.data.source
22

33
import android.content.Context
44
import com.frogobox.frogonewsapi.data.response.ArticleResponse
5+
import com.frogobox.frogonewsapi.data.response.SourceResponse
56
import com.frogobox.frogonewsapi.util.NewsConstant
67
import com.frogobox.frogonewsapi.util.NewsUrl
78
import com.readystatesoftware.chuck.ChuckInterceptor
@@ -34,68 +35,43 @@ import java.util.concurrent.TimeUnit
3435
*/
3536
interface NewsApiService {
3637

37-
// Get Top Headline From Country
38-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
39-
fun getTopHeadlineByCountry(
40-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
41-
@Query(NewsConstant.QUERY_COUNTRY) country: String
42-
): Observable<ArticleResponse>
43-
44-
// Get Top Headline From Country and Category
45-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
46-
fun getTopHeadlineByCountry(
47-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
48-
@Query(NewsConstant.QUERY_COUNTRY) country: String,
49-
@Query(NewsConstant.QUERY_CATEGORY) category: String
50-
): Observable<ArticleResponse>
51-
52-
// Get Top Headline From Source
53-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
54-
fun getTopHeadlineBySource(
55-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
56-
@Query(NewsConstant.QUERY_SOURCES) sources: String
57-
): Observable<ArticleResponse>
58-
59-
// Get Top Headline From Source and Category
60-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
61-
fun getTopHeadlineBySource(
62-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
63-
@Query(NewsConstant.QUERY_SOURCES) sources: String,
64-
@Query(NewsConstant.QUERY_CATEGORY) category: String
65-
): Observable<ArticleResponse>
66-
67-
// Get Top Headline From q
68-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
69-
fun getTopHeadlineByQ(
70-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
71-
@Query(NewsConstant.QUERY_Q) q: String
72-
): Observable<ArticleResponse>
73-
74-
// Get Top Headline From q
75-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
76-
fun getTopHeadlineByQ(
77-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
78-
@Query(NewsConstant.QUERY_Q) q: String,
79-
@Query(NewsConstant.QUERY_CATEGORY) category: String
80-
): Observable<ArticleResponse>
81-
82-
// Get Top Headline From Category
83-
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
84-
fun getTopHeadlineByCategory(
85-
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
86-
@Query(NewsConstant.QUERY_CATEGORY) category: String
87-
): Observable<ArticleResponse>
88-
8938
// Get Top Headline
9039
@GET(NewsUrl.NEWS_URL_TOP_HEADLINE)
9140
fun getTopHeadline(
9241
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
9342
@Query(NewsConstant.QUERY_Q) q: String?,
9443
@Query(NewsConstant.QUERY_SOURCES) sources: String?,
9544
@Query(NewsConstant.QUERY_CATEGORY) category: String?,
96-
@Query(NewsConstant.QUERY_COUNTRY) country: String?
45+
@Query(NewsConstant.QUERY_COUNTRY) country: String?,
46+
@Query(NewsConstant.QUERY_PAGE_SIZE) pageSize: Int?,
47+
@Query(NewsConstant.QUERY_PAGE) page: Int?
48+
): Observable<ArticleResponse>
49+
50+
// Get Everythings
51+
@GET(NewsUrl.NEWS_URL_EVERYTHING)
52+
fun getEverythings(
53+
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
54+
@Query(NewsConstant.QUERY_Q) q: String?,
55+
@Query(NewsConstant.QUERY_FROM) from: String?,
56+
@Query(NewsConstant.QUERY_TO) to: String?,
57+
@Query(NewsConstant.QUERY_Q_IN_TITLE) qInTitle: String?,
58+
@Query(NewsConstant.QUERY_SOURCES) sources: String?,
59+
@Query(NewsConstant.QUERY_DOMAINS) domains: String?,
60+
@Query(NewsConstant.QUERY_EXCLUDE_DOMAINS) excludeDomains: String?,
61+
@Query(NewsConstant.QUERY_LANGUAGE) language: String?,
62+
@Query(NewsConstant.QUERY_SORT_BY) sortBy: String?,
63+
@Query(NewsConstant.QUERY_PAGE_SIZE) pageSize: Int?,
64+
@Query(NewsConstant.QUERY_PAGE) page: Int?
9765
): Observable<ArticleResponse>
9866

67+
// Get Sources
68+
@GET(NewsUrl.NEWS_URL_SOURCES)
69+
fun getSources(
70+
@Query(NewsConstant.QUERY_API_KEY) apiKey: String,
71+
@Query(NewsConstant.QUERY_LANGUAGE) language: String,
72+
@Query(NewsConstant.QUERY_COUNTRY) country: String,
73+
@Query(NewsConstant.QUERY_CATEGORY) category: String
74+
): Observable<SourceResponse>
9975

10076
companion object Factory {
10177

frogonewsapi/src/main/java/com/frogobox/frogonewsapi/data/source/NewsDataSource.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.frogobox.frogonewsapi.data.source
33
import android.content.Context
44
import com.frogobox.frogonewsapi.base.BaseNewsDataSource
55
import com.frogobox.frogonewsapi.data.response.ArticleResponse
6+
import com.frogobox.frogonewsapi.data.response.SourceResponse
67

78
/**
89
* Created by Faisal Amir
@@ -33,9 +34,37 @@ interface NewsDataSource {
3334
sources: String?,
3435
category: String?,
3536
country: String?,
37+
pageSize: Int?,
38+
page: Int?,
3639
callback: GetRemoteCallback<ArticleResponse>
3740
)
3841

42+
// Get Everythings
43+
fun getEverythings(
44+
apiKey: String,
45+
q: String?,
46+
from: String?,
47+
to: String?,
48+
qInTitle: String?,
49+
sources: String?,
50+
domains: String?,
51+
excludeDomains: String?,
52+
language: String?,
53+
sortBy: String?,
54+
pageSize: Int?,
55+
page: Int?,
56+
callback: GetRemoteCallback<ArticleResponse>
57+
)
58+
59+
// Get Sources
60+
fun getSources(
61+
apiKey: String,
62+
language: String,
63+
country: String,
64+
category: String,
65+
callback: GetRemoteCallback<SourceResponse>
66+
)
67+
3968
// Response Callback
4069
interface GetRemoteCallback<T> : BaseNewsDataSource.ResponseCallback<T>
4170

0 commit comments

Comments
 (0)