use of com.amazonaws.services.s3.Headers in project GitTest by xiaoxige.
the class MainActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
testView = (TestView) findViewById(R.id.testView);
testView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivityPermissionsDispatcher.showCameraWithPermissionCheck(MainActivity.this);
}
});
try {
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
String appMV = appInfo.metaData.getString("MTA_CHANNEL");
Toast.makeText(MainActivity.this, "appMV = " + appMV, Toast.LENGTH_SHORT).show();
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
simpleDraweeView = (SimpleDraweeView) findViewById(R.id.simpleDraweeView);
testView.setProgress(100, false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
testView.setProgress(3, true);
}
}, 2000);
GenericDraweeHierarchy hierarchy = simpleDraweeView.getHierarchy();
RoundingParams roundingParams = new RoundingParams();
roundingParams.setBorder(Color.RED, 10);
roundingParams.setRoundAsCircle(true);
hierarchy.setRoundingParams(roundingParams);
simpleDraweeView.setHierarchy(hierarchy);
ControllerListener listener = new BaseControllerListener() {
@Override
public void onFinalImageSet(String id, @Nullable Object imageInfo, @Nullable Animatable animatable) {
super.onFinalImageSet(id, imageInfo, animatable);
}
};
DraweeController controller = Fresco.newDraweeControllerBuilder().setUri(new Uri.Builder().scheme(UriUtil.LOCAL_RESOURCE_SCHEME).path(String.valueOf(R.mipmap.ic_launcher)).build()).setOldController(simpleDraweeView.getController()).setControllerListener(listener).build();
simpleDraweeView.setController(controller);
/**
* 网络相关(retrofit+rxjava+rxlife+stetho)
*/
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(5000, TimeUnit.SECONDS).readTimeout(5000, TimeUnit.SECONDS).writeTimeout(5000, TimeUnit.SECONDS).addNetworkInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Headers headers = request.headers();
Headers build = headers.newBuilder().add("version", "1.0").add("token", "xiaoxige").build();
request = request.newBuilder().headers(build).build();
Log.e("TAG", "url = " + request.url().uri().toString());
String method = request.method();
if (method.equals("GET") || method.equals("DELETE")) {
HttpUrl url = request.url();
HttpUrl httpUrl = url.newBuilder().addQueryParameter("xiaoxige", "one").addQueryParameter("zhuxiaoan", "two").build();
request = request.newBuilder().url(httpUrl).build();
} else {
RequestBody body = request.body();
if (body != null) {
Buffer buffer = new Buffer();
body.writeTo(buffer);
String readUtf8 = buffer.readUtf8();
// 可能需要对body进行加密
// TODO: 2017/11/3
RequestBody requestBody = RequestBody.create(body.contentType(), readUtf8);
request = request.newBuilder().method(method, requestBody).build();
}
}
return chain.proceed(request);
}
}).addNetworkInterceptor(new StethoInterceptor()).build();
Retrofit retrofit = new Retrofit.Builder().baseUrl("http://www.baidu.com").addConverterFactory(ScalarsConverterFactory.create()).addConverterFactory(GsonConverterFactory.create()).client(client).build();
final NetApi api = retrofit.create(NetApi.class);
Flowable flowable = Flowable.create(new FlowableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull FlowableEmitter<String> flowableEmitter) throws Exception {
String response = MainActivity.execute(api.getBaiduWeb());
if (TextUtils.isEmpty(response)) {
flowableEmitter.onError(new Exception());
return;
}
flowableEmitter.onNext(response);
flowableEmitter.onComplete();
}
}, BackpressureStrategy.LATEST).compose(bindUntilEvent(ActivityEvent.DESTROY)).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io());
flowable.subscribe(new XXGSubscriber<String>() {
@Override
public void xxgNext(String o) {
super.xxgNext(o);
Log.e("TAG", "o = " + o);
}
@Override
public void xxgError(Throwable t) {
super.xxgError(t);
Log.e("TAG", "t = " + t.getMessage());
}
@Override
public void xxgComplete() {
super.xxgComplete();
Log.e("TAG", "Complete");
}
});
}
use of com.amazonaws.services.s3.Headers in project Varis-Android by dkhmelenko.
the class BuildsDetailsPresenter method startLoadingLog.
/**
* Starts loading log file
*
* @param jobId Job ID
*/
public void startLoadingLog(long jobId) {
mJobId = jobId;
String accessToken = AppSettings.getAccessToken();
Single<String> responseSingle;
if (TextUtils.isEmpty(accessToken)) {
responseSingle = mRawClient.getApiService().getLog(String.valueOf(mJobId));
} else {
String auth = String.format("token %1$s", AppSettings.getAccessToken());
responseSingle = mRawClient.getApiService().getLog(auth, String.valueOf(mJobId));
}
Disposable subscription = responseSingle.subscribeOn(Schedulers.io()).map(s -> mRawClient.getLogUrl(mJobId)).onErrorResumeNext(new Function<Throwable, SingleSource<String>>() {
@Override
public SingleSource<String> apply(@NonNull Throwable throwable) throws Exception {
String redirectUrl = "";
HttpException httpException = (HttpException) throwable;
Headers headers = httpException.response().headers();
for (String header : headers.names()) {
if (header.equals("Location")) {
redirectUrl = headers.get(header);
break;
}
}
return Single.just(redirectUrl);
}
}).retry(LOAD_LOG_MAX_ATTEMPT).observeOn(AndroidSchedulers.mainThread()).subscribe((logUrl, throwable) -> {
if (throwable == null) {
getView().setLogUrl(logUrl);
} else {
getView().showLogError();
getView().showLoadingError(throwable.getMessage());
}
});
mSubscriptions.add(subscription);
}
use of com.amazonaws.services.s3.Headers in project Varis-Android by dkhmelenko.
the class BuildsDetailsPresenter method startLoadingLog.
/**
* Starts loading log file
*
* @param jobId Job ID
*/
public void startLoadingLog(long jobId) {
mJobId = jobId;
String accessToken = mAppSettings.getAccessToken();
Single<String> responseSingle;
if (StringUtils.isEmpty(accessToken)) {
responseSingle = mRawClient.getApiService().getLog(String.valueOf(mJobId));
} else {
String auth = String.format("token %1$s", mAppSettings.getAccessToken());
responseSingle = mRawClient.getApiService().getLog(auth, String.valueOf(mJobId));
}
Disposable subscription = responseSingle.subscribeOn(Schedulers.io()).map(s -> mRawClient.getLogUrl(mJobId)).onErrorResumeNext(new Function<Throwable, SingleSource<String>>() {
@Override
public SingleSource<String> apply(@NonNull Throwable throwable) throws Exception {
String redirectUrl = "";
if (throwable instanceof HttpException) {
HttpException httpException = (HttpException) throwable;
Headers headers = httpException.response().headers();
for (String header : headers.names()) {
if (header.equals("Location")) {
redirectUrl = headers.get(header);
break;
}
}
return Single.just(redirectUrl);
} else {
return Single.error(throwable);
}
}
}).retry(LOAD_LOG_MAX_ATTEMPT).map(mRawClient::singleStringRequest).map(response -> mLogsParser.parseLog(response.blockingGet())).observeOn(AndroidSchedulers.mainThread()).subscribe((log, throwable) -> {
if (throwable == null) {
getView().setLog(log);
} else {
getView().showLogError();
getView().showLoadingError(throwable.getMessage());
}
});
mSubscriptions.add(subscription);
}
use of com.amazonaws.services.s3.Headers in project mobile-sdk-android by meniga.
the class MenigaHttpLogger method intercept.
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (logLevel == LogLevel.NONE) {
return chain.proceed(request);
}
boolean logBody = logType == LogType.BODY_ONLY || logType == LogType.BODY_AND_HEADERS;
boolean logHeaders = logType == LogType.HEADERS_ONLY || logType == LogType.BODY_AND_HEADERS;
RequestBody requestBody = request.body();
boolean hasRequestBody = requestBody != null;
String reqUrl = request.url().toString();
String requestStartMessage = request.method() + REQUEST_START + reqUrl;
if (!logHeaders && hasRequestBody) {
requestStartMessage += " (" + requestBody.contentLength() + "-byte body)";
}
log(requestStartMessage);
if (logHeaders) {
if (hasRequestBody) {
// them to be included (when available) so their values are known.
if (requestBody.contentType() != null) {
log(getHeaderString("Content-Type", requestBody.contentType().toString()));
}
if (requestBody.contentLength() != -1) {
log(getHeaderString("Content-Length", Long.toString(requestBody.contentLength())));
}
}
Headers headers = request.headers();
for (int i = 0, count = headers.size(); i < count; i++) {
String name = headers.name(i);
// Skip headers from the request body as they are explicitly logged above.
if (!"Content-Type".equalsIgnoreCase(name) && !"Content-Length".equalsIgnoreCase(name)) {
log(getHeaderString(name, headers.value(i)));
}
}
}
if (!logBody) {
log(REQUEST_END + request.method());
} else if (!hasRequestBody) {
log(BODY);
log(NO_BODY);
} else if (bodyEncoded(request.headers())) {
log(REQUEST_END + request.method() + " (encoded body omitted)");
} else {
Buffer buffer = new Buffer();
try {
requestBody.writeTo(buffer);
} catch (ConcurrentModificationException ex) {
log("Error logging body - got ConcurrentModificationException");
}
Charset charset = UTF8;
MediaType contentType = requestBody.contentType();
if (contentType != null) {
charset = contentType.charset(UTF8);
}
log(BODY);
if (isPlaintext(buffer)) {
log(buffer.readString(charset));
log(REQUEST_END + request.method() + " (" + requestBody.contentLength() + "-byte body)");
} else {
log("<" + requestBody.contentLength() + "-BYTE BINARY BODY OMITTED");
log(REQUEST_END + request.method());
}
}
long startNs = System.nanoTime();
Response response;
try {
response = chain.proceed(request);
} catch (Exception e) {
log("<---- HTTP FAILED: " + e);
throw e;
}
long tookMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNs);
ResponseBody responseBody = response.body();
long contentLength = responseBody.contentLength();
String bodySize = contentLength != -1 ? contentLength + "-byte" : "unknown-length";
log(RESPONSE_START + reqUrl);
log("(" + tookMs + "ms" + (!logHeaders ? ", " + bodySize + " body" : "") + ")");
if (logHeaders) {
Headers headers = response.headers();
for (int i = 0, count = headers.size(); i < count; i++) {
log(getHeaderString(headers.name(i), headers.value(i)));
}
}
if (!logBody) {
log(RESPONSE_END);
} else if (!HttpHeaders.hasBody(response)) {
log(BODY);
log(NO_BODY);
log(RESPONSE_END);
} else if (bodyEncoded(response.headers())) {
log(BODY);
log("<ENCODED BODY OMITTED>");
log(RESPONSE_END);
} else {
BufferedSource source = responseBody.source();
// Buffer the entire body.
source.request(Long.MAX_VALUE);
Buffer buffer = source.buffer();
Charset charset = UTF8;
MediaType contentType = responseBody.contentType();
if (contentType != null) {
try {
charset = contentType.charset(UTF8);
} catch (UnsupportedCharsetException e) {
log(BODY);
log("<ERROR DECODING BODY; CHARSET IS LIKELY MALFORMED.>");
log(RESPONSE_END);
return response;
}
}
if (!isPlaintext(buffer)) {
log(BODY);
log("<BINARY " + buffer.size() + "-BYTE BODY OMITTED>");
log(RESPONSE_END);
return response;
}
if (contentLength != 0) {
log(BODY + " (" + buffer.size() + "-byte body)");
log(buffer.clone().readString(charset));
}
log(RESPONSE_END);
}
return response;
}
use of com.amazonaws.services.s3.Headers in project oap by oaplatform.
the class Client method uploadFile.
@SneakyThrows
public Response uploadFile(String uri, String prefix, Path path) {
final ContentType contentType = ContentType.create(java.nio.file.Files.probeContentType(path));
OkHttpClient client = new OkHttpClient();
final MultipartBody body = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("upfile", path.toFile().getName(), RequestBody.create(MediaType.parse(contentType.toString()), path.toFile())).addFormDataPart("prefix", prefix).build();
okhttp3.Request request = new okhttp3.Request.Builder().url(uri).post(body).build();
final okhttp3.Response response = client.newCall(request).execute();
final Headers headers = response.headers();
final java.util.stream.Stream<String> stream = headers.names().stream();
final Map<String, String> h = stream.collect(Collectors.toMap(n -> n, headers::get));
return new Response(response.code(), response.message(), h, Optional.ofNullable(response.body().contentType()).map(mt -> ContentType.create(mt.type() + "/" + mt.subtype(), mt.charset())), response.body().bytes());
}
Aggregations