diff --git a/app/ResultHandler_Konfig/clsDateiverarbeitung.vb b/app/ResultHandler_Konfig/clsDateiverarbeitung.vb index 52bb3f8..db12b8c 100644 --- a/app/ResultHandler_Konfig/clsDateiverarbeitung.vb +++ b/app/ResultHandler_Konfig/clsDateiverarbeitung.vb @@ -204,46 +204,85 @@ Public Class clsDateiverarbeitung clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsDateiverarbeitung.Rename_File_Vektor") End Try End Function - Public Shared Function BNSjsonDownload(WMFile As WMObject, userId As String) + + Private Shared Function GetWMAPILink(docId As String, userId As String) + Dim hostname = "http://documents.mylogitservices.syncreon.com:8100" + Dim link As String = $"{hostname}/WMWebApi/windream.web.api/DigitalData/BNSDownload?docId={docId}&userId={userId}" + + Return link + End Function + + ''' + ''' Generiert einen Link für BNS und fügt das Dokument WMFile + ''' ins BNS ein + ''' + ''' Das WMObject, dass das aktuelle Dokument repräsentiert + ''' Die eindeutige Benutzer Kennung für die Authentifizierung in Windream + Public Shared Sub BNSjsonDownload(WMFile As WMObject, userId As String) Try - 'den Wert des Indexes für das aktuelle Dokument auslesen + ' Indizes für das aktuelle Dokument auslesen Dim SENDUNGNR = WMFile.GetVariableValue("Sendungnr") Dim DOKID = WMFile.GetVariableValue("Dokument-ID") Dim DOKART = WMFile.GetVariableValue("Dokumentart") - 'Add Info to JsonArray - '...... - Dim hostname = "91.229.192.183:8100" - Dim link As String = $"http://{hostname}/WMWebApi/windream.web.api/DigitalData/BNSDownload?docId={DOKID}&userId={userId}" Dim now As DateTime = DateTime.Now + ' Download Link für Dokument erstellen + Dim link As String = GetWMAPILink(DOKID, userId) + + ' JSON Payload erstellen und serialisieren Dim doc As New BNSDocument() doc.Bemerkung = DOKART doc.Ivalidfrom = now doc.Ivaliduntil = now.AddDays(30) doc.Pfad = link + doc.Kategorie.Add(DOKART) - Dim json = JsonConvert.SerializeObject(doc, Formatting.None) - Dim bytes = Encoding.Default.GetBytes(json) + Dim json As String = JsonConvert.SerializeObject(doc, Formatting.Indented) + Dim bytes As Byte() = Encoding.Default.GetBytes(json) ' HTTP Request machen - ' URL Anpassen! + Dim mandatenId As Integer = 1 ' Mandanten ID ist Standartmäßig 1 + Dim geschaeftsObjekt = "Sendung" + Dim geschaeftsId = SENDUNGNR + Dim baseURL As String = "https://mylogitservices.syncreon.com/onwebui/api" + Dim url As String = $"{baseURL}/Customer/{mandatenId}/{geschaeftsObjekt}/{geschaeftsId}/dokument" - Dim url As String = "http://{Domain}:{Port}/Customer/{Kunden ID}/{Geschäftsobjekt}/{GeschäftsobjektID}/dokument" + clsLogger.Add($"Generiertes JSON: {json}", False, "BNSjsonDownload") + clsLogger.Add($"Creating WebRequest for {url}", False, "BNSjsonDownload") - Using wc As WebClient = New WebClient() + Dim req As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) - wc.Headers.Add(HttpRequestHeader.ContentType, "application/json") - Dim response As Byte() = wc.UploadData(url, bytes) - Dim responseString = Encoding.Default.GetString(response) + req.Method = "POST" + req.ContentType = "application/json" + req.ContentLength = bytes.Length + req.Timeout = 3000 + req.ServicePoint.Expect100Continue = False - clsLogger.Add($"Datei geschrieben! docId: {DOKID}, dokart: {DOKART}, userId: {userId}", "BNSjsonDownload") + Dim reqStream As Stream = req.GetRequestStream() + reqStream.Write(bytes, 0, bytes.Length) + reqStream.Close() + + clsLogger.Add($"Datei wird hochgeladen... docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload") + clsLogger.Add($"Upload URL: {url}", False, "BNSjsonDownload") + + Using res As HttpWebResponse = req.GetResponse() + Dim code As HttpStatusCode = res.StatusCode + Dim text As String = res.StatusDescription + + ' Status 201 Created bedeutet: Alles okay! + If code = HttpStatusCode.Created Then + clsLogger.Add($"Datei geschrieben! docId: {DOKID}, dokart: {DOKART}, userId: {userId}", False, "BNSjsonDownload") + End If + + res.Close() + + Throw New Exception($"Server Error (HTTP {code}: {text})") End Using Catch ex As Exception clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "BNSjsonDownload") - Return False End Try - End Function + End Sub Public Shared Function RUN_ORACLE_COMMAND(WMFile As WMObject, OracleCS As String, OracleCommandRAW As String) Try Dim result = REGEX_REPLACE(WMFile, OracleCommandRAW) @@ -338,6 +377,7 @@ Public Class clsDateiverarbeitung Public Ivaliduntil As DateTime Public Bemerkung As String Public Primaer As Boolean = False + Public Kategorie As List(Of String) Public Sub New() End Sub diff --git a/app/ResultHandler_Konfig/frmMain.vb b/app/ResultHandler_Konfig/frmMain.vb index f04d659..cd247f7 100644 --- a/app/ResultHandler_Konfig/frmMain.vb +++ b/app/ResultHandler_Konfig/frmMain.vb @@ -444,6 +444,7 @@ Public Class frmMain lblString1.Text = "Email-Empfänger:" Case 2 'json BNS lblString1.Text = "User Kunde:" + lblString2.Text = "BNS Kundennummer:" End Select End Sub