package com.refinitiv.myplugin;

import com.refinitiv.collab.platform.msgfeed.Data.Credentials;
import com.refinitiv.collab.platform.msgfeed.handler.ServiceCredentialProvider;

import java.io.*;
import java.util.*;

public class ServiceCredentialsProvider implements ServiceCredentialProvider {
    @Override
    public String getName() {
        return "MyReadFromFileServiceCredentialProvider";
    }

    @Override
    public Credentials getCredentials() {
        try {
            String jarDir = new File(ServiceCredentialsProvider.class
                    .getProtectionDomain()
                    .getCodeSource()
                    .getLocation()
                    .toURI())
                    .getParent();
            File yamlFile = new File(jarDir, "account.yaml");

            /*
                Content of account.yaml:
                ```
                loginId: your_login_id
                password: your_password
                ```
             */

            String loginId = "";
            String password = "";
            try (BufferedReader reader = new BufferedReader(new FileReader(yamlFile))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    String[] parts = line.split(":", 2);
                    if (parts.length == 2) {
                        String key = parts[0].trim();
                        String value = parts[1].trim();
                        if (key.equals("loginId")) loginId = value;
                        if (key.equals("password")) password = value;
                    }
                }
            }
            return new Credentials(loginId, password);
        }
        catch (Exception e) {
            // fallback to empty credentials
            System.err.println("Error loading credentials from file: " + e.getMessage());
            throw new RuntimeException("Failed to load credentials from file");
        }
    }
}
