Skip to content

Instantly share code, notes, and snippets.

@priyankshah217
Created August 14, 2021 12:41
Show Gist options
  • Save priyankshah217/d3cdd8c98c7df6f429034f5476a884ef to your computer and use it in GitHub Desktop.
Save priyankshah217/d3cdd8c98c7df6f429034f5476a884ef to your computer and use it in GitHub Desktop.
Fallback example
import okhttp3.OkHttpClient;
import okhttp3.Request;
import java.io.IOException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class FallBackExample {
private static final List<List<String>> listOfUrls = List.of(
List.of("http://www.invalidurl.com", "http://www.invalidurl.com", "http://www.google.com"),
List.of("http://www.invalidurl.com", "http://www.yahoo.com", "http://www.bb2.com"),
List.of("http://www.google.com", "http://www.invalidurl.com", "http://www.invalidurl.com"),
List.of("http://www.invalidurl.com", "http://www.invalidurl.com", "http://www.bbc.com"),
List.of("http://www.invalidurl.com", "http://www.cnn.com", "http://www.invalidurl.com"),
List.of("http://www.cnbc.com", "http://www.invalidurl.com", "http://www.invalidurl.com"),
List.of("http://www.invalidurl.com", "http://www.invalidurl.com", "http://www.dw.com"),
List.of("http://www.invalidurl.com", "http://www.youtube.com", "http://www.invalidurl.com"),
List.of("http://www.toi.com", "http://www.invalidurl.com", "http://www.invalidurl.com"));
private static List<String> getValidFallbackUrls(List<List<String>> listOfUrls) {
List<String> urlList = new ArrayList<>();
listOfUrls.parallelStream().forEach(listOfUrl -> getOutPut(listOfUrl.get(0)).ifPresentOrElse(urlList::add,
() -> getOutPut(listOfUrl.get(1)).ifPresentOrElse(urlList::add,
() -> getOutPut(listOfUrl.get(2)).ifPresent(urlList::add))));
return urlList;
}
private static Optional<String> getOutPut(String url) {
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(Duration.ofSeconds(5))
.readTimeout(Duration.ofSeconds(5))
.writeTimeout(Duration.ofSeconds(5))
.build();
Request request = new Request.Builder()
.url(url)
.method("GET", null)
.build();
try {
client.newCall(request).execute();
Thread.currentThread().interrupt();
return Optional.of(url);
} catch (IOException e) {
return Optional.empty();
}
}
public static void main(String[] args) {
final var validFallbackUrls = getValidFallbackUrls(listOfUrls);
validFallbackUrls.forEach(System.out::println);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment