package Connexion; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.UUID; import javax.net.ssl.HttpsURLConnection; import static java.util.Arrays.copyOfRange; /** *
Cette classe est destiné un projet de fin d'année de L1, ne pas l'utiliser dans
* d'autre circonstance que dans ce projet. Elle contient plusieurs fonctions qui est
* utile pour la communication entre la machine et le site Padifac.
*
* @author Loïc GUEZO
* @version 1.0.0
* @since 2024
* @see Padiflac
*/
@SuppressWarnings("deprecation")
public class Reseau {
private static final String ADDRESS = "https://prog-reseau-m1.lacl.fr/padiflac/";
private String CHANNEL;
private URL url;
private ArrayList Le constructeur defini quelque information cruciale puis appelle directement la
* fonction {@code #searchContent()}.
*
* @param channel Ce string est utilisé pour se connecter à un channel dans le serveur web
*/
public Reseau(String channel) {
this.CHANNEL = channel;
this.wordArrayList = new ArrayList cette fonction redefini quelque information cruciale puis appelle directement la
* fonction {@code #searchContentSorted()}.
*
* @param channel Ce string est utilisé pour se reconnecter à un channel dans le serveur web
*/
public void reconnexion(String channel) {
this.CHANNEL = channel;
this.wordArrayList.clear();
this.newerWordArrayList.clear();
this.connexion();
}
/**
* @return cette fonction renvoie tout ce qui est disponible sur le site quand on appelle la
* fonction searchContent et qui mets tout le texte dans le {@link ArrayList}
*/
public ArrayList cette fonction est en parallèle avec {@code #getLastedContent()} qui récupère le dernier indice
* utilisé lors de l'appelle de {@code #getLastedContent()}.
* @return renvoie le dernier indice
*/
public int getIndex() {
return this.index;
}
/**
* cette fonction est en parallèle avec {@code #getLastedContent()} et {@code #getIndex()}. Elle va
* reset l'indice.
*/
public void resetIndex() {
this.index = 0;
}
/**
* @return cette fonction renvoie le String de l'indice puis l'incrémenter. Si c'est la fin de la liste,
* il renvoie null sans incrémenter
*/
public String getLastedContent() {
return (this.getArrayContent().size() > this.index) ? getArrayContent().get(this.index++) : null;
}
/**
* cherche les informations et trie seulement les nouvelles entre eux :
* cherche les informations mais ne trie pas les nouvelles entre eux :
* attention, il peut y avoir des erreurs en rajoutant par exemple {"arbre", "pomme", "chocolat", "pomme"}
* @return
*/
public ArrayList ce programme essaye d'envoyer le String en parametre. Attention, la communication entre le serveur et la machine
* peut prendre du temps !
* @param content Le contenu de texte que vous voulez renvoyer
*/
public void sendContent(String content) {
try {
this.url = new URL(ADDRESS + CHANNEL + "?nonce=" + this.generateNonce());
HttpsURLConnection connection = (HttpsURLConnection)this.url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
OutputStream outputStream = connection.getOutputStream();
outputStream.write(serializeToString(content));
outputStream.close();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
inputStream.close();
} else {
System.out.println("Erreur lors de l'envoi de la requête. Code de réponse : " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private ArrayList
* @return il renvoie le {@link ArrayList} de la liste
*/
public ArrayList
* Reseau reseau = new Reseau("ChatTest"); // dans le serveur : {"arbre", "pomme", "chocolat", "arbre"}
*System.out.println(reseau.searchContentSorted().toString()); // {"arbre", "arbre", "pomme", "chocolat"}
*
*
* Reseau reseau = new Reseau("ChatTest"); // dans le serveur : {"arbre", "pomme", "chocolat", "arbre"}
*System.out.println(reseau.searchContentSorted().toString()); // {"arbre", "arbre", "pomme", "chocolat"}
*