Imports System.Net Public Class cMSEAPI Public API_STRING Dim API As New DataTable Dim rest As New Chilkat.Rest Dim SQL As New SQL Dim apiSettingsloaded As Boolean = False Sub New(program As String) VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") If API.Rows.Count = 0 Then MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") Else apiSettingsloaded = True API_STRING = API.Rows(0).Item("api_url") End If End Sub Public Function createJWT(ByRef failureText As String) As String Try Dim jwt As New Chilkat.Jwt Dim jose As New Chilkat.JsonObject Dim success As Boolean = jose.AppendString("alg", "HS256") success = jose.AppendString("typ", "JWT") ' Now build the JWT claims (also known as the payload) Dim claims As New Chilkat.JsonObject success = claims.AppendString("iss", API.Rows(0).Item("api_user")) Dim curDateTime As Integer = jwt.GenNumericDate(0) ' Set the timestamp defining an expiration time (end time) for the token ' to be now + 1 hour (3600 seconds) success = claims.AddIntAt(-1, "exp", curDateTime + 3600) jwt.AutoCompact = True Dim strJwt As String = jwt.CreateJwt(jose.Emit(), claims.Emit(), API.Rows(0).Item("api_password")) Debug.WriteLine(strJwt) Return strJwt Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Public Function getNewestTransactions(jwt As String, dt As DataTable) As String Try Dim returnText As String = "" Dim failureText As String = "" Dim success As Boolean rest.VerboseLogging = True Dim bTls As Boolean = True Dim port As Integer = 443 Dim bAutoReconnect As Boolean = True success = rest.Connect(API_STRING, port, bTls, bAutoReconnect) If (success <> True) Then Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason) Debug.WriteLine(rest.LastErrorText) failureText = rest.LastErrorText Return False End If If (success <> True) Then Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason) Debug.WriteLine(rest.LastErrorText) failureText = rest.LastErrorText Return False End If rest.ClearAllQueryParams() rest.AddHeader("X-API-Key", jwt) rest.IdleTimeoutMs = 500000 Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions/new") If (rest.LastMethodSuccess <> True) Then Debug.WriteLine(rest.LastErrorText) rest.IdleTimeoutMs = 30000 'defualt Return "rest.LastErrorText" End If If (rest.ResponseStatusCode <> 200) Then Debug.WriteLine(rest.ResponseHeader) Return "rest.LastErrorText" End If Debug.WriteLine(responseJson) Dim json As New Chilkat.JsonObject success = json.Load(responseJson) If (success <> True) Then Debug.WriteLine(json.LastErrorText) End If Debug.WriteLine(json) Dim jsonArray As New Chilkat.JsonArray success = jsonArray.Load(responseJson) If (success <> True) Then Return jsonArray.LastErrorText End If Dim num As Integer = jsonArray.Size If num = -1 Then Return "FEHLER" End If Dim j As Integer = 0 If dt IsNot Nothing And Not dt.Columns.Contains("transaction_id") Then dt.Columns.Add("transaction_id", GetType(String)) dt.Columns.Add("partner_haulier_id", GetType(Integer)) dt.Columns.Add("supplier_name", GetType(String)) dt.Columns.Add("transaction_country", GetType(String)) dt.Columns.Add("transaction_domain", GetType(String)) dt.Columns.Add("purchase_datetime", GetType(DateTime)) dt.Columns.Add("entry_point_name", GetType(String)) dt.Columns.Add("entry_datetime", GetType(DateTime)) dt.Columns.Add("exit_point_name", GetType(String)) dt.Columns.Add("exit_datetime", GetType(DateTime)) dt.Columns.Add("device_product_type", GetType(String)) dt.Columns.Add("device_product_number", GetType(String)) dt.Columns.Add("transaction_product_id", GetType(Integer)) dt.Columns.Add("transaction_product_name", GetType(String)) dt.Columns.Add("license_plate_number", GetType(String)) dt.Columns.Add("vehicle_country", GetType(Integer)) dt.Columns.Add("original_currency", GetType(String)) dt.Columns.Add("original_net_amount", GetType(String)) dt.Columns.Add("original_gross_amount", GetType(String)) dt.Columns.Add("original_vat_percentage", GetType(Boolean)) dt.Columns.Add("transaction_net_amount", GetType(Integer)) dt.Columns.Add("transaction_gross_amount", GetType(String)) dt.Columns.Add("exempt_amount", GetType(String)) dt.Columns.Add("msts_fee_amount", GetType(String)) dt.Columns.Add("msts_vat_amount", GetType(Boolean)) dt.Columns.Add("msts_vat_percentage", GetType(Integer)) dt.Columns.Add("total_gross_amount", GetType(String)) dt.Columns.Add("transaction_status", GetType(String)) dt.Columns.Add("original_transaction_id", GetType(String)) dt.Columns.Add("credit_comment", GetType(Boolean)) dt.Columns.Add("loading_date", GetType(Date)) dt.Columns.Add("batch_seq_nr", GetType(Integer)) While j < num Dim transaction As Chilkat.JsonObject = jsonArray.ObjectAt(j) Dim R As DataRow = dt.NewRow 'R("id") = groups.IntOf("id") 'R("name") = groups.StringOf("name") 'R("groupType") = groups.StringOf("groupType") 'R("info") = groups.StringOf("info") dt.Rows.Add(R) j = j + 1 End While dt = dt.DefaultView.ToTable() End If Catch ex As WebException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function End Class