001/*
002 * Stallion Core: A Modern Web Framework
003 *
004 * Copyright (C) 2015 - 2016 Stallion Software LLC.
005 *
006 * This program is free software: you can redistribute it and/or modify it under the terms of the
007 * GNU General Public License as published by the Free Software Foundation, either version 2 of
008 * the License, or (at your option) any later version. This program is distributed in the hope that
009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
011 * License for more details. You should have received a copy of the GNU General Public License
012 * along with this program.  If not, see <http://www.gnu.org/licenses/gpl-2.0.html>.
013 *
014 *
015 *
016 */
017
018package io.stallion.plugins.javascript;
019
020import io.stallion.exceptions.UsageException;
021import io.stallion.settings.Settings;
022import org.apache.commons.io.FileUtils;
023
024import java.io.File;
025import java.io.IOException;
026
027import static io.stallion.utils.Literals.*;
028import static io.stallion.Context.*;
029
030
031public class JsFileReader {
032    public static String readToString(String file, String pluginFolder) {
033        if (!file.startsWith(Settings.instance().getTargetFolder() + "/js")
034                && !file.startsWith(Settings.instance().getTargetFolder() + "/plugins")) {
035            throw new UsageException("You can cannot access the file " + file + " from this location");
036        }
037        if (!empty(pluginFolder)) {
038            if (!file.startsWith(pluginFolder)) {
039                throw new UsageException("File " + file + " is not in the javascript folder " + pluginFolder);
040            }
041        }
042        if (!file.endsWith(".js")) {
043            throw new UsageException("This is not a .js file: " + file);
044        }
045        try {
046            return FileUtils.readFileToString(new File(file), "UTF-8");
047        } catch (IOException e) {
048            throw new RuntimeException(e);
049        }
050    }
051}