package org.gdg.frisbee.android.api;
import org.gdg.frisbee.android.api.model.plus.ImageInfo;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
public class PlusImageUrlConverter implements Interceptor {
private static final Pattern mPlusPattern
= Pattern.compile("http[s]?://plus\\..*google\\.com.*(\\+[a-zA-Z] +|[0-9]{21}).*");
private final PlusApi plusApi;
public PlusImageUrlConverter(PlusApi plusApi) {
this.plusApi = plusApi;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Matcher matcher = mPlusPattern.matcher(request.url().toString());
if (!matcher.matches()) {
return chain.proceed(request);
}
String gplusId = matcher.group(1);
retrofit2.Response<ImageInfo> imageInfoResponse = plusApi.getImageInfo(gplusId).execute();
if (imageInfoResponse.isSuccessful()) {
ImageInfo imageInfo = imageInfoResponse.body();
if (imageInfo.getImage() != null && imageInfo.getImage().getUrl() != null) {
String imageUrl = imageInfo.getImage().getUrl().replace("sz=50", "sz=196");
return chain.proceed(request.newBuilder().url(imageUrl).build());
}
}
return null;
}
}