import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Paths;
import java.util.List;
import com.oracle.bmc.objectstorage.ObjectStorage;
import com.oracle.bmc.objectstorage.ObjectStorageClient;
import com.oracle.bmc.objectstorage.model.GetObjectRequest;
import com.oracle.bmc.objectstorage.model.ObjectStream;
import com.oracle.bmc.objectstorage.model.Range;
import com.oracle.bmc.objectstorage.requests.GetObjectRequest;
import com.oracle.bmc.objectstorage.responses.GetObjectResponse;
public class LogFileRetriever {
public static void main(String[] args) {
String namespaceName = "mynamespace";
String bucketName = "mybucket";
String objectName = "mylogfile.txt";
// Create a new Object Storage client
ObjectStorage objectStorageClient = ObjectStorageClient.builder()
.build(objectStorageConfig);
GetObjectRequest request = GetObjectRequest.builder()
.namespaceName(namespaceName)
.bucketName(bucketName)
.objectName(objectName)
.build();
GetObjectResponse response = objectStorageClient.getObject(request);
// Get the InputStream from the response
InputStream logFileInputStream = response.getInputStream();
// Write the InputStream to a local file
OutputStream logFileOutputStream =
new FileOutputStream(Paths.get("logfile.txt").toFile());
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = logFileInputStream.read(buffer)) != -1) {
logFileOutputStream.write(buffer, 0, bytesRead);
}
logFileOutputStream.close();
}
}
Tuesday, March 14, 2023
Oracle Cloud Infrastructure- Object storage example
This post will explain, how we can create bucket and configure notification and rules and object storage like create/update object.
Login into OCI using login credentials . if you don't have a account please create the same using this link https://www.oracle.com/cloud/sign-in.html
Once you create account and successful login, Now we need to create a bucket.
search for bucket and create a bucket
After creating bucket now we can create a topic
Now we can create notification, after uploading file , we should get email
Create a Rule to process this
Once we create all then , once we upload file in object storage , then we should get email like below
This shows we can send email, but we can configure with different ways like queues.
Here we will get the details in mail . But if we want complete object details, then we can use java code to retrieve the object details by calling the API which required namespace details ,bucket name and object name.
Monday, March 14, 2022
How to call REST API Using Spring Webflux WebClient set proxy with authorization while calling the external site and Generate base 64 authentication header spring boot
This post will explain us, how can we call REST API using Webclient.
How to set Proxy username and password to call the external site.
Step 1: Add folllowing dependency in your pom.xml
Step 2:org.springframework.boot spring-boot-starter-webflux
import lombok.extern.slf4j.XSlf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.reactive.ClientHttpConnector;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import reactor.netty.transport.ProxyProvider;
import java.net.URI;
import java.util.Base64;
import java.util.function.Consumer;
import java.util.function.Function;
public static void main(String[] args) {
try {
//Generate HttP client to set proxy details
HttpClient httpClient = HttpClient.create()
.proxy(proxy-> proxy.type(ProxyProvider.Proxy.HTTP)
.host("javaguruonline.com").port(1328)
.username("siva")
.password(new Function() {
@Override
public String apply(String s) {
return "test@12!";
}
}));
ClientHttpConnector clientHttpConnector =
new ReactorClientHttpConnector(httpClient);
WebClient webClient = WebClient.builder().build();
String plainCredentials = "username" + ":" + "password";
String base64Credentials = new String(Base64.getEncoder()
.encode(plainCredentials.getBytes()));
String authorizationHeader = "Basic " + base64Credentials;
//input json
String json = "{\n" +
" \"user\": \"siva\"\n" +
"}";
//set http headers
Consumer httpHeaders = new Consumer() {
@Override
public void accept(HttpHeaders httpHeaders) {
httpHeaders.add("Authorization", authorizationHeader);
httpHeaders.add("Content-Type", "application/json");
httpHeaders.add("Proxy-Authorization", authorizationHeader);
}};
//post call to external URL and get ResponseEntity as response like body
//and http status code etc..
ResponseEntity result = webClient.mutate()
.clientConnector(clientHttpConnector)
.build()
.post()
.uri(new URI("https://localhost:8080/test/details"))
.bodyValue(json)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(String.class)
.block();
System.out.println(result);
}
catch(Exception ex){
}
Hope this post will help some one, while working on the REST API calls
Subscribe to:
Comments (Atom)




