Skip to content

Commit 045b648

Browse files
committed
Add demo for uploading images
update README
1 parent e1ae585 commit 045b648

File tree

6 files changed

+68
-30
lines changed

6 files changed

+68
-30
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ To use this library, add the following to your `.gradle` file:
1717

1818
```gradle
1919
dependencies {
20-
implementation 'com.codepath.libraries:asynchttpclient:0.0.8'
20+
implementation 'com.codepath.libraries:asynchttpclient:0.0.9'
2121
}
2222
```
2323

apikey.properties

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
api_key="DEMO-API-KEY"

example/build.gradle

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
apply plugin: 'com.android.application'
22

3+
def apikeyPropertiesFile = rootProject.file("apikey.properties")
4+
def apikeyProperties = new Properties()
5+
apikeyProperties.load(new FileInputStream(apikeyPropertiesFile))
6+
37
android {
48
compileSdkVersion 29
59
defaultConfig {
@@ -9,6 +13,8 @@ android {
913
versionCode 1
1014
versionName "1.0"
1115
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
16+
// look inside apikey.properties
17+
buildConfigField("String", "api_key", apikeyProperties['api_key'])
1218
}
1319
buildTypes {
1420
release {

example/src/main/java/com/codepath/example/TestActivity.java

+35-12
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@
1313
import com.codepath.asynchttpclient.callback.JsonHttpResponseHandler;
1414
import com.codepath.asynchttpclient.callback.TextHttpResponseHandler;
1515

16+
import java.io.IOException;
1617
import okhttp3.Headers;
18+
import okhttp3.MediaType;
19+
import okhttp3.MultipartBody;
20+
import okhttp3.RequestBody;
21+
import okio.BufferedSource;
22+
import okio.ByteString;
23+
import okio.Okio;
1724

1825
public class TestActivity extends AppCompatActivity {
1926

@@ -26,6 +33,8 @@ protected void onCreate(Bundle savedInstanceState) {
2633
public void onTest(View view) {
2734
AsyncHttpClient client = new AsyncHttpClient();
2835
// Basic GET calls
36+
37+
// Sending no headers with API key
2938
client.get("https://api.thecatapi.com/v1/images/search", new TextHttpResponseHandler() {
3039
@Override
3140
public void onSuccess(int statusCode, Headers headers, String response) {
@@ -41,8 +50,10 @@ public void onFailure(int statusCode, @Nullable Headers headers, String errorRes
4150
RequestParams params = new RequestParams();
4251
params.put("limit", "5");
4352
params.put("page", 0);
53+
RequestHeaders requestHeaders = new RequestHeaders();
54+
requestHeaders.put("x-api-key", BuildConfig.api_key);
4455

45-
client.get("https://api.thecatapi.com/v1/images/search", params, new JsonHttpResponseHandler() {
56+
client.get("https://api.thecatapi.com/v1/images/search", requestHeaders, params, new JsonHttpResponseHandler() {
4657
@Override
4758
public void onSuccess(int statusCode, Headers headers, JSON json) {
4859
Log.d("DEBUG", json.jsonArray.toString());
@@ -51,23 +62,35 @@ public void onSuccess(int statusCode, Headers headers, JSON json) {
5162

5263
@Override
5364
public void onFailure(int statusCode, Headers headers, String response, Throwable throwable) {
54-
65+
Log.d("DEBUG", response);
5566
}
5667
});
5768

69+
BufferedSource bufferedSource = Okio.buffer(Okio.source(getResources().openRawResource(R.raw.cat)));
70+
try {
71+
ByteString source = bufferedSource.readByteString();
72+
RequestBody body = RequestBody.create(source.toByteArray(), MediaType.get("image/jpg"));
73+
RequestBody requestBody = new MultipartBody.Builder()
74+
.setType(MultipartBody.FORM)
75+
.addFormDataPart("file", "cat.jpg", body)
76+
.build();
5877

59-
client.post("https://api.thecatapi.com/v1/images/search", new JsonHttpResponseHandler() {
60-
@Override
61-
public void onSuccess(int statusCode, Headers headers, JSON json) {
62-
Log.d("DEBUG", json.toString());
78+
client.post("https://api.thecatapi.com/v1/images/upload", requestHeaders, params, requestBody, new JsonHttpResponseHandler() {
79+
@Override
80+
public void onSuccess(int statusCode, Headers headers, JSON json) {
81+
Log.d("DEBUG", json.toString());
6382

64-
}
83+
}
6584

66-
@Override
67-
public void onFailure(int statusCode, Headers headers, String response, Throwable throwable) {
85+
@Override
86+
public void onFailure(int statusCode, Headers headers, String response, Throwable throwable) {
87+
Log.d("DEBUG", response);
88+
}
89+
});
90+
}
91+
catch (IOException e) {
6892

69-
}
70-
});
93+
}
7194

7295
client.post("https://api.thecatapi.com/v1/images/search", "test", new JsonHttpResponseHandler() {
7396
@Override
@@ -78,7 +101,7 @@ public void onSuccess(int statusCode, Headers headers, JSON json) {
78101

79102
@Override
80103
public void onFailure(int statusCode, Headers headers, String response, Throwable throwable) {
81-
104+
Log.d("DEBUG", response);
82105
}
83106
});
84107

library/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ext {
1111
POM_DESC = "Async Http Client wrapper using OkHttp"
1212
POM_SCM_URL = 'https://github.com/codepath/AsyncHttpClient'
1313
BASE_VERSION = 1
14-
VERSION_NAME = "0.0.8"
14+
VERSION_NAME = "0.0.9"
1515
}
1616

1717
version = VERSION_NAME

library/src/main/java/com/codepath/asynchttpclient/AsyncHttpClient.java

+24-16
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
import okhttp3.OkHttpClient;
1313
import okhttp3.Request;
1414
import okhttp3.RequestBody;
15+
import okio.BufferedSource;
16+
import okio.ByteString;
1517

1618
// todo: pre/post events, progress events
1719

1820
public class AsyncHttpClient {
1921

2022
private OkHttpClient okHttpClient;
21-
public static MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json");
23+
public static String MEDIA_TYPE_JSON = "application/json";
2224

2325
public AsyncHttpClient() {
2426
okHttpClient = new OkHttpClient.Builder()
@@ -70,24 +72,30 @@ public void get(String url, AbsCallback callback) {
7072
get(url, null, callback);
7173
}
7274

73-
public void post(String url, RequestParams requestParams, RequestHeaders requestHeaders, String body, AbsCallback callback) {
75+
public void post(String url, RequestHeaders requestHeaders, RequestParams requestParams, RequestBody requestBody, AbsCallback callback) {
7476
url = createUrlWithRequestParams(url, requestParams);
7577

7678
Request.Builder requestBuilder = createBuilderWithHeaders(url, requestHeaders);
7779

78-
RequestBody requestBody = RequestBody.create(MEDIA_TYPE_JSON, body);
79-
8080
Request request = requestBuilder.post(requestBody).build();
8181
okHttpClient.newCall(request).enqueue(callback);
8282
}
8383

84-
public void post(String url, RequestParams requestParams, RequestHeaders requestHeaders, File file, AbsCallback callback) {
85-
Request.Builder requestBuilder = createBuilderWithHeaders(url, requestHeaders);
84+
public void post(String url, RequestHeaders requestHeaders, RequestParams requestParams, String body, AbsCallback callback) {
85+
RequestBody requestBody = RequestBody.create(body, MediaType.get(MEDIA_TYPE_JSON));
86+
this.post(url, requestHeaders, requestParams, requestBody, callback);
87+
}
8688

87-
RequestBody requestBody = RequestBody.create(MEDIA_TYPE_JSON, file);
89+
public void post(String url, RequestHeaders requestHeaders, RequestParams requestParams, File file, MediaType mediaType, AbsCallback callback) {
90+
RequestBody requestBody = RequestBody.create(file, mediaType);
8891

89-
Request request = requestBuilder.post(requestBody).build();
90-
okHttpClient.newCall(request).enqueue(callback);
92+
this.post(url, requestHeaders, requestParams, requestBody, callback);
93+
}
94+
95+
public void post(String url, RequestHeaders requestHeaders, RequestParams requestParams, ByteString source, MediaType mediaType, AbsCallback callback) {
96+
RequestBody requestBody = RequestBody.create(source, mediaType);
97+
98+
this.post(url, requestHeaders, requestParams, requestBody, callback);
9199
}
92100

93101
public void post(String url, AbsCallback callback) {
@@ -98,22 +106,22 @@ public void post(String url, String body, AbsCallback callback) {
98106
this.post(url, null, null, body, callback);
99107
}
100108

101-
public void post(String url, File body, AbsCallback callback) {
102-
this.post(url, null, null, body, callback);
109+
public void post(String url, File file, MediaType mediaType, AbsCallback callback) {
110+
this.post(url, null, null, file, mediaType, callback);
103111
}
104112

105113
public void post(String url, RequestParams requestParams, String body, AbsCallback callback) {
106-
this.post(url, requestParams, null, body, callback);
114+
this.post(url, null, requestParams, body, callback);
107115
}
108116

109-
public void post(String url, RequestParams requestParams, File body, AbsCallback callback) {
110-
this.post(url, requestParams, null, body, callback);
117+
public void post(String url, RequestParams requestParams, File body, MediaType mediaType, AbsCallback callback) {
118+
this.post(url, null, requestParams, body, mediaType, callback);
111119
}
112120

113121
public void delete(String url, RequestHeaders requestHeaders, String body, AbsCallback callback) {
114122
Request.Builder requestBuilder = createBuilderWithHeaders(url, requestHeaders);
115123

116-
RequestBody requestBody = RequestBody.create(MEDIA_TYPE_JSON, body);
124+
RequestBody requestBody = RequestBody.create(body, MediaType.get(MEDIA_TYPE_JSON));
117125

118126
Request request = requestBuilder.delete(requestBody).build();
119127
okHttpClient.newCall(request).enqueue(callback);
@@ -122,7 +130,7 @@ public void delete(String url, RequestHeaders requestHeaders, String body, AbsCa
122130
public void patch(String url, RequestHeaders requestHeaders, String body, AbsCallback callback) {
123131
Request.Builder requestBuilder = createBuilderWithHeaders(url, requestHeaders);
124132

125-
RequestBody requestBody = RequestBody.create(MEDIA_TYPE_JSON, body);
133+
RequestBody requestBody = RequestBody.create(body, MediaType.get(MEDIA_TYPE_JSON));
126134

127135
Request request = requestBuilder.patch(requestBody).build();
128136
okHttpClient.newCall(request).enqueue(callback);

0 commit comments

Comments
 (0)