Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.demo.wykop;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.springframework.http.HttpRequest;
- import org.springframework.http.client.ClientHttpRequestExecution;
- import org.springframework.http.client.ClientHttpRequestInterceptor;
- import org.springframework.http.client.ClientHttpResponse;
- import java.io.IOException;
- import java.math.BigInteger;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.Objects;
- import java.util.stream.StreamSupport;
- import static java.util.stream.Collectors.joining;
- public class WykopApiSigningInterceptor implements ClientHttpRequestInterceptor {
- private static final String API_SIGN_HEADER = "apisign";
- private final ObjectMapper objectMapper;
- private final String secret;
- public WykopApiSigningInterceptor(ObjectMapper objectMapper, String secret) {
- this.objectMapper = objectMapper;
- this.secret = secret;
- }
- @Override
- public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
- var url = request.getURI().toASCIIString();
- var paramValues = extractParamValues(objectMapper.readTree(body));
- signRequest(request, secret, url, paramValues);
- return execution.execute(request, body);
- }
- private static void signRequest(HttpRequest request, String secret, String url, String paramValues) {
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update((secret + url + paramValues).getBytes());
- System.out.println(secret);
- var md5Sum = String.format("%032x", new BigInteger(1, md.digest()));
- request.getHeaders().add(API_SIGN_HEADER, md5Sum);
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
- private static String extractParamValues(JsonNode body) {
- return StreamSupport.stream(body.spliterator(), false)
- .map(JsonNode::textValue)
- .filter(Objects::nonNull)
- .collect(joining(","));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement