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