Package org.mifosplatform.infrastructure.hooks.processor

Source Code of org.mifosplatform.infrastructure.hooks.processor.WebHookProcessor

/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.infrastructure.hooks.processor;

import static org.mifosplatform.infrastructure.hooks.api.HookApiConstants.contentTypeName;
import static org.mifosplatform.infrastructure.hooks.api.HookApiConstants.payloadURLName;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.mifosplatform.infrastructure.hooks.domain.Hook;
import org.mifosplatform.infrastructure.hooks.domain.HookConfiguration;
import org.mifosplatform.useradministration.domain.AppUser;
import org.springframework.stereotype.Service;

import retrofit.Callback;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

@Service
public class WebHookProcessor implements HookProcessor {

  @Override
  public void process(final Hook hook,
      @SuppressWarnings("unused") final AppUser appUser,
      final String payload, final String entityName,
      final String actionName, final String tenantIdentifier,
      final String authToken) {

    final Set<HookConfiguration> config = hook.getHookConfig();

    String url = "";
    String contentType = "";

    for (final HookConfiguration conf : config) {
      final String fieldName = conf.getFieldName();
      if (fieldName.equals(payloadURLName)) {
        url = conf.getFieldValue();
      }
      if (fieldName.equals(contentTypeName)) {
        contentType = conf.getFieldValue();
      }
    }

    sendRequest(url, contentType, payload, entityName, actionName,
        tenantIdentifier, authToken);

  }

  @SuppressWarnings("unchecked")
  private void sendRequest(final String url, final String contentType,
      final String payload, final String entityName,
      final String actionName, final String tenantIdentifier,
      @SuppressWarnings("unused") final String authToken) {

    final String mifosEndpointUrl = System.getProperty("baseUrl");
    final WebHookService service = ProcessorHelper
        .createWebHookService(url);

    @SuppressWarnings("rawtypes")
    final Callback callback = ProcessorHelper.createCallback(url);

    if (contentType.equalsIgnoreCase("json")
        || contentType.contains("json")) {
      final JsonObject json = new JsonParser().parse(payload)
          .getAsJsonObject();
      service.sendJsonRequest(entityName, actionName, tenantIdentifier,
          mifosEndpointUrl, json, callback);
    } else {
      Map<String, String> map = new HashMap<>();
      map = new Gson().fromJson(payload, map.getClass());
      service.sendFormRequest(entityName, actionName, tenantIdentifier,
          mifosEndpointUrl, map, callback);
    }

  }

}
TOP

Related Classes of org.mifosplatform.infrastructure.hooks.processor.WebHookProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.