philharmonic.utilities.MessageSender.java Source code

Java tutorial

Introduction

Here is the source code for philharmonic.utilities.MessageSender.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package philharmonic.utilities;

import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import philharmonic.model.Message;
import static philharmonic.resources.StringConstants.*;

/**
 *
 * @author Kookie
 */
public class MessageSender {

    @Autowired
    private RestTemplate rt;

    @Autowired
    private AddressesParser parser;

    public MessageSender() {
        //rt = new RestTemplate();
    }

    public ResponseEntity<String> sendMessage(Message message, String body) {
        String target = message.getTargetComponentName();
        String URI;
        URI = parser.getAddressForComponent(target) + "/" + target + "/" + message.getResourceName();

        HttpEntity entity = new HttpEntity(body, createHeaders(target));
        if (message.getAction().equals(namePOSTAction)) {
            return rt.exchange(URI, HttpMethod.POST, entity, String.class);
        }
        if (message.getAction().equals(namePUTAction)) {
            return rt.exchange(URI, HttpMethod.PUT, entity, String.class);
        }

        return null;
    }

    public ResponseEntity<String> sendMessage(Message message, int id, String body) {
        String target = message.getTargetComponentName();
        String URI;
        URI = parser.getAddressForComponent(target) + "/" + target + "/" + message.getResourceName() + "/" + id;
        HttpEntity entity = new HttpEntity(body, createHeaders(target));
        if (message.getAction().equals(nameDELETEAction)) {
            return rt.exchange(URI, HttpMethod.DELETE, entity, String.class);
        }
        if (message.getAction().equals(nameGETAction)) {
            return rt.exchange(URI, HttpMethod.GET, entity, String.class);
        }
        return null;
    }

    private MultiValueMap createHeaders(String component) {
        String plainCreds = parser.getAuthorizationForComponent(component);
        if (plainCreds != null && !plainCreds.isEmpty()) {
            byte[] plainCredsBytes = plainCreds.getBytes();
            byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
            String base64Creds = new String(base64CredsBytes);
            HttpHeaders headers = new HttpHeaders();
            headers.add("Authorization", "Basic " + base64Creds);
            return headers;
        }
        return null;
    }
}