diff --git a/client/src/app/features/changelog/changelog.component.html b/client/src/app/features/changelog/changelog.component.html index 95a27b5..0f0530e 100644 --- a/client/src/app/features/changelog/changelog.component.html +++ b/client/src/app/features/changelog/changelog.component.html @@ -1,9 +1,10 @@
-
-

Display log here !

+
+
+

Display log here !

-
+
diff --git a/client/src/app/features/merge/merge.component.ts b/client/src/app/features/merge/merge.component.ts index c954692..dcae3bb 100644 --- a/client/src/app/features/merge/merge.component.ts +++ b/client/src/app/features/merge/merge.component.ts @@ -4,6 +4,8 @@ import { CommonModule } from '@angular/common'; import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { MergeServiceService } from './merge-service.service'; import { HttpClient } from '@angular/common/http'; +import { environment } from 'src/environments/environment.development'; +import { Observable } from 'rxjs'; @Component({ selector: 'app-merge', @@ -12,7 +14,7 @@ import { HttpClient } from '@angular/common/http'; templateUrl: './merge.component.html', styleUrls: ['./merge.component.css'] }) -export class MergeComponent { +export class MergeComponent { exceptionValues = [0, null, undefined] @@ -45,7 +47,7 @@ export class MergeComponent { // TODO: Fetch merge. Modify this to websocket - this.httpClient.post("http://localhost:8080/merge", { + this.httpClient.post(environment.api+"/merge", { master: this.targets.master_version, dev: this.targets.dev_version, output: this.targets.output_path, @@ -53,8 +55,15 @@ export class MergeComponent { }, { withCredentials: true }).subscribe({ - next(value) { + next: (value: T) => { console.log(value) + if(typeof value === "object" && value !== null){ + if("message" in value){ + console.log(value.message) + // alert(value.message + " \n Fetching logs ...") + this.downloadLogs(""); + } + } }, }) } @@ -66,20 +75,30 @@ export class MergeComponent { } else { additionalParams = "" } - this.httpClient.get("http://localhost:8080/dllog"+additionalParams, { responseType: 'blob' }).subscribe( - (data) => { - const blob = new Blob([data], { type: 'application/octet-stream' }); + this.httpClient.get(environment.api+"/dllog"+additionalParams, { + responseType: 'blob', + withCredentials: true, + }).subscribe( + { + next: (value) => { + const blob = new Blob([value], { type: 'application/octet-stream' }); + const url = window.URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = 'logfile.log'; + a.innerText = "download log"; + console.log("Blob: ",blob.text()) + // document.body.appendChild(a); + document.getElementById("log-dl")?.appendChild(a); + document.getElementById("log-dl")!.className = "bg-yellow-500 rounded p-2"; + blob.text().then(v => document.getElementById("log-disp-texts")!.innerHTML = v); + // a.click(); - const url = window.URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = 'logfile.log'; - document.body.appendChild(a); - a.click(); - window.URL.revokeObjectURL(url); - }, - (error) => { - console.error('Error downloading log file: ',error); + // window.URL.revokeObjectURL(url); + }, + error: (err) => { + console.error('Error downloading log file: ',err); + } } ) } diff --git a/server/server.go b/server/server.go index 198987f..508bc70 100644 --- a/server/server.go +++ b/server/server.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "io" "log" "net/http" "net/url" @@ -191,7 +192,22 @@ func (s *Server) createHandler() { }) r.Get("/dllog", func(w http.ResponseWriter, r *http.Request) { + changelog_path := "cofffeemachineConfig/changelog/testlog.html" + logFile, err := os.Open(changelog_path) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + defer logFile.Close() + + w.Header().Set("Content-Disposition", "attachment; filename=logfile.html") + w.Header().Set("Content-Type", "application/octet-stream") + + _, err = io.Copy(w, logFile) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } }) // Recipe Router rr := routers.NewRecipeRouter(database)