001/*
002 *  Copyright 2022 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.hyperplanning;
017
018import java.util.List;
019
020import org.apache.avalon.framework.configuration.Configurable;
021import org.apache.avalon.framework.configuration.Configuration;
022import org.apache.avalon.framework.configuration.ConfigurationException;
023
024import org.ametys.core.util.HttpUtils;
025import org.ametys.runtime.model.checker.ItemChecker;
026import org.ametys.runtime.model.checker.ItemCheckerTestFailureException;
027
028import com.indexeducation.hyperplanning.ApiClient;
029import com.indexeducation.hyperplanning.api.VersionApi;
030
031/**
032 * Connection checker for hyperplanning
033 */
034public class HyperplanningConnectionChecker implements ItemChecker, Configurable
035{
036    public void configure(Configuration configuration) throws ConfigurationException
037    {
038        Configuration[] config = configuration.getChild("linked-params").getChildren();
039        if (config.length != 3)
040        {
041            throw new ConfigurationException("The HyperplanningChecker should have 3 linked params in the right order: url, login, password");
042        }
043    }
044
045    public void check(List<String> values) throws ItemCheckerTestFailureException
046    {
047        String url = HttpUtils.sanitize(values.get(0));
048        String login = values.get(1);
049        String password = values.get(2);
050        
051        try
052        {
053            ApiClient client = new ApiClient();
054            client.setBasePath(url + "/hpsw/api/v1");
055            client.setUsername(login);
056            client.setPassword(password);
057
058            new VersionApi(client).versionGet(null);
059        }
060        catch (Exception e)
061        {
062            throw new ItemCheckerTestFailureException(e);
063        }
064    }
065}