Page 1 sur 1

Convertion d'un code php

Publié : jeu. 31/oct./2024 19:33
par MetalOS
Salut les ptits gars, je tente de convertir un code php qui récupère les données Json d'un fichier sur un serveur sécurisé avec accès par identifiant et mot de passe. J'aimerais pouvoir convertir le code php en purebasic mais je n'y arrive pas, du moins en partie car j'arrive à me connecter au serveur puis à générer le bon lien car le fichier est horodaté, mais je n'arrive pas à le télécharger en local sous un autre nom pour ensuite l'exploiter dans mon projet.

Voici le code php:

Code : Tout sélectionner

<?php
ini_set('memory_limit', '512M'); 

// Configuration
$username = '';
$password = '';
$region = '1'; 

$strikes_dir = 'https://' . $username . ':' . $password . 'urldusite' . $region . '/';
$end_time = time();
$time_span = 3600; // 1 heure
$local_strikes_file = 'local.json';

// Renouvellement du fichier de données local si nécessaire
If (!file_exists($local_strikes_file) || filemtime($local_strikes_file) < $end_time - 60) {
    touch($local_strikes_file);
    
    $l_time = $end_time - $time_span;
    $tmp_strikes = [];

    $run_time = $l_time;
    While ($run_time < $end_time + 600) {
        $filename = $strikes_dir . gmdate("Y/m/d/H/", $run_time) . ($run_time / 600 % 6) . '0.json';
        error_log("Tentative d'ouverture du fichier : $filename");
        If ($file = @fopen($filename, 'r')) {
            error_log("Fichier ouvert avec succès : $filename");
            While ($line = fgets($file)) {
                $json = json_decode($line);
                If ($json && isset($json->time)) {
                    $json->time /= 1000000000;
                    If ($json->time >= $l_time) {
                        // Supprimer les signatures si nécessaire
                        If (isset($json->sig)) {
                            unset($json->sig);
                        }
                        $tmp_strikes[] = $json;
                    }
                }
                unset($json)
            }
            fclose($file);
        } Else {
            error_log("Échec de l'ouverture du fichier : $filename");
        }
        $run_time += 600;
    }

    // Écrire les données dans local.json
    file_put_contents($local_strikes_file, json_encode($tmp_strikes, JSON_PRETTY_PRINT));
}

// Chargement des données
$strikes = [];
$data = file_get_contents($local_strikes_file);
If ($data !== false) {
    $strikes = json_decode($data);
    If ($strikes === null) {
        error_log("Erreur lors du décodage JSON : " . json_last_error_msg());
        $strikes = [];
    }
} Else {
    error_log("Erreur lors de la lecture du fichier local.json");
}

// Retourner les données au format JSON
header('Content-Type: application/json');
echo json_encode($strikes);
?>
Je ne peut pas vous donner l'url exacte du serveur et les identifiants par sécurité et pour tester malheureusement.

Voici la partie PB que j'ai réussi à faire pour le moment:

Code : Tout sélectionner

; Définition des constantes et des variables
Define username.s = "" ; Remplacez par votre nom d'utilisateur
Define password.s = "" ; Remplacez par votre mot de passe
Define region.s = "1"  ; Exemple de région
Define strikes_dir.s = "https://" + username + ":" + password + "URLduServeur" + region + "/"
Define end_time = Date()
Define time_span = 3600 ; 1 heure
Define local_strikes_file.s = "local.json"
Define l_time = end_time - time_span
Define run_time

; Boucle pour télécharger les fichiers JSON
run_time = l_time
 If run_time < end_time + 600
  ; Vérifie que run_time n'est pas 0 avant d'effectuer la division
  Define index = (run_time / 600) % 6 ; Utiliser un index basé sur run_time
  Define filename.s = strikes_dir + FormatDate("%yyyy/%mm/%dd/%hh/", run_time) + Str(index) + "0.json"
  
EndIf

 ReceiveHTTPFile(filename, "strikes.json")
Merci d'avance pour votre aide.

Re: Convertion d'un code php

Publié : lun. 04/nov./2024 9:41
par Ar-S
J'ai pas du tout le temps mais j'ai demandé à chatGPT qui a fait des progrès en PB.
Tout n'est pas judicieux mais ça pourra peut être t'aider.

Code : Tout sélectionner

; Initialisation de la mémoire (non nécessaire en PureBasic)
; Configuration
Define username.s = ""
Define password.s = ""
Define region.s = "1"

Define strikes_dir.s = "https://" + username + ":" + password + "urldusite" + region + "/"
Define end_time.l = Date()
Define time_span.l = 3600 ; 1 heure
Define local_strikes_file.s = "local.json"

; Renouvellement du fichier de données local si nécessaire
If FileSize(local_strikes_file) = -1 Or FileDate(local_strikes_file) < end_time - 60
    CreateFile(1, local_strikes_file)
    CloseFile(1)
    
    Define l_time.l = end_time - time_span
    Define tmp_strikes.s = "[]"
    Define run_time.l = l_time

    While run_time < end_time + 600
        Define filename.s = strikes_dir + FormatDate("%yyyy/%mm/%dd/%hh/", run_time) + Str(run_time / 600 % 6) + "0.json"
        Debug "Tentative d'ouverture du fichier : " + filename
        
        If ReceiveHTTPFile(filename, "temp.json")
            Debug "Fichier ouvert avec succès : " + filename
            If ReadFile(2, "temp.json")
                While Not Eof(2)
                    Define line.s = ReadString(2)
                    If JSONValue(0, line)
                        Define jsonObject = ParseJSON(0, line)
                        If FindJSONKey(jsonObject, "time") >= 0
                            ; Conversion de l'unité de temps
                            SetJSONElement(jsonObject, "time", JSONInteger(GetJSONElement(jsonObject, "time")) / 1000000000)
                            If GetJSONElement(jsonObject, "time") >= l_time
                                ; Suppression de la signature si présente
                                If FindJSONKey(jsonObject, "sig") >= 0
                                    RemoveJSONKey(jsonObject, "sig")
                                EndIf
                                tmp_strikes + ComposeJSON(0) + ","
                            EndIf
                        EndIf
                    EndIf
                Wend
                CloseFile(2)
            EndIf
        Else
            Debug "Échec de l'ouverture du fichier : " + filename
        EndIf
        run_time + 600
    Wend

    ; Écrire les données dans local.json
    If tmp_strikes <> "[]"
        tmp_strikes = "[" + Left(tmp_strikes, Len(tmp_strikes) - 1) + "]"
    EndIf
    CreateFile(3, local_strikes_file)
    WriteString(3, tmp_strikes, #PB_UTF8)
    CloseFile(3)
EndIf

; Chargement des données
Define strikes.s
If ReadFile(4, local_strikes_file)
    strikes = ReadString(4)
    CloseFile(4)
    If Not JSONValue(5, strikes)
        Debug "Erreur lors du décodage JSON"
        strikes = "[]"
    EndIf
Else
    Debug "Erreur lors de la lecture du fichier local.json"
    strikes = "[]"
EndIf

; Retourner les données au format JSON
SetClipboardText(strikes) ; Simuler la sortie de la réponse en JSON
Debug strikes ; Afficher les données JSON


Re: Convertion d'un code php

Publié : dim. 02/févr./2025 13:17
par Bmld76
Bonjour

regarde ce post viewtopic.php?t=19311

Re: Convertion d'un code php

Publié : dim. 02/févr./2025 15:20
par greyfoxy123
Ar-S a écrit : lun. 04/nov./2024 9:41 J'ai pas du tout le temps mais j'ai demandé à chatGPT qui a fait des progrès en PB.
Tout n'est pas judicieux mais ça pourra peut être t'aider.
La réponse serait encore mieux avec un Chatgpt directement depuis l'éditeur de code plutot que le playground