/*
 * Copyright 2021 Red Hat, Inc.
 *
 * Red Hat licenses this file to you under the Apache License, version 2.0
 * (the "License"); you may not use this file except in compliance with the
 * License.  You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

package io.vertx.ext.web.handler.graphql.impl;

import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.common.WebEnvironment;

import java.io.PrintWriter;
import java.io.StringWriter;

public class ErrorUtil {

  public static JsonObject toJsonObject(Throwable t) {
    JsonObject res = new JsonObject().put("message", t.toString());
    if (WebEnvironment.development()) {
      StringWriter sw = new StringWriter();
      try (PrintWriter writer = new PrintWriter(sw)) {
        t.printStackTrace(writer);
        writer.flush();
      }
      res.put("extensions", new JsonObject()
        .put("exception", new JsonObject()
          .put("stacktrace", sw.toString())));
    }
    return res;
  }

  private ErrorUtil() {
    // Utility
  }
}
