I had to edit the WebHelpers file to point to absolute path - I found this hint here
Private Declare PtrSafe Function web_popen Lib "/usr/lib/libc.dylib" Alias "popen" (ByVal web_Command As String, ByVal web_Mode As String) As LongPtr
Private Declare PtrSafe Function web_pclose Lib "/usr/lib/libc.dylib" Alias "pclose" (ByVal web_File As LongPtr) As LongPtr
Private Declare PtrSafe Function web_fread Lib "/usr/lib/libc.dylib" Alias "fread" (ByVal web_OutStr As String, ByVal web_Size As LongPtr, ByVal web_Items As LongPtr, ByVal web_Stream As LongPtr) As LongPtr
Private Declare PtrSafe Function web_feof Lib "/usr/lib/libc.dylib" Alias "feof" (ByVal web_File As LongPtr) As LongPtr
I created my own implementation of I
Implements IWebAuthenticator
Option Explicit
' --------------------------------------------- '
' Constants and Private Variables
' --------------------------------------------- '
Private Const web_HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
Private Const web_HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1
' --------------------------------------------- '
' Properties
' --------------------------------------------- '
Public username As String
Public password As String
' ============================================= '
' Public Methods
' ============================================= '
''
' Setup
'
' @param {String} Username
' @param {String} Password
''
Public Sub Setup(username As String, password As String)
Me.username = username
Me.password = password
End Sub
Private Sub Class_Initialize()
End Sub
Private Sub Class_Terminate()
Debug.Print "[DEBUG] HttpBasicAuthenticator.Class_Terminate()"
'Me.username = Nothing
On Error GoTo errorHandler
'Me = Nothing
'Unload Me
Exit Sub
errorHandler:
MsgBox Err.Number + ", " + Err.Description
End Sub
''
' Hook for taking action before a request is executed
'
' @param {WebClient} Client The client that is about to execute the request
' @param in|out {WebRequest} Request The request about to be executed
''
Private Sub IWebAuthenticator_BeforeExecute(ByVal Client As WebClient, ByRef Request As WebRequest)
Request.SetHeader "Authorization", "Basic " & WebHelpers.Base64Encode(Me.username & ":" & Me.password)
End Sub
''
' Hook for taking action after request has been executed
'
' @param {WebClient} Client The client that executed request
' @param {WebRequest} Request The request that was just executed
' @param in|out {WebResponse} Response to request
''
Private Sub IWebAuthenticator_AfterExecute(ByVal Client As WebClient, ByVal Request As WebRequest, ByRef Response As WebResponse)
' e.g. Handle 401 Unauthorized or other issues
End Sub
''
' Hook for updating http before send
'
' @param {WebClient} Client
' @param {WebRequest} Request
' @param in|out {WinHttpRequest} Http
''
Private Sub IWebAuthenticator_PrepareHttp(ByVal Client As WebClient, ByVal Request As WebRequest, ByRef Http As Object)
Http.SetCredentials Me.username, Me.password, web_HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
End Sub
''
' Hook for updating cURL before send
'
' @param {WebClient} Client
' @param {WebRequest} Request
' @param in|out {String} Curl
''
Private Sub IWebAuthenticator_PrepareCurl(ByVal Client As WebClient, ByVal Request As WebRequest, ByRef Curl As String)
' e.g. Add flags to cURL
Curl = Curl & " --basic --user " & WebHelpers.PrepareTextForShell(Me.username) & ":" & WebHelpers.PrepareTextForShell(Me.password)
End Sub
And I added debug statements to all the standard Functions/Subs
Here is my test code:
Function GetJiraField(issueRef As String, fieldRef As String) As String
Dim myAuth As New MyHttpBasicAuthenticator
Dim cl As New WebClient
Dim req As New WebRequest
Dim res As New WebResponse
Dim username As String, password As String
username = "My.User@my-company.com"
password = "Secret01"
cl.BaseUrl = "https://mycompany.atlassian.net"
Dim resource As String
myAuth.Setup username, password
Set cl.Authenticator = myAuth
req.resource = "/rest/api/3/field"
req.Method = WebMethod.HttpGet
'req.Format = WebFormat.Json
'req.SetHeader "Accept", "application/json"
req.SetHeader "Content-Type", "application/json"
'WebHelpers.EnableLogging = True
res = cl.Execute(req)
GetJiraField = "not implemented"
End Function
Sub RunTest()
Dim res As String
res = GetJiraField("", "")
Debug.Print res
End Sub
During debug, the response contains the values I expect, BUT I get a strange error:
Private Sub Class_Terminate()
Debug.Print "[DEBUG] HttpBasicAuthenticator.Class_Terminate()"
'Me.username = Nothing
On Error GoTo errorHandler
'Me = Nothing
'Unload Me
Exit Sub '<==== THIS IS WHERE THE ERROR OCCURS
errorHandler:
MsgBox Err.Number + ", " + Err.Description
End Sub
There is no option to debug when I get the message.
If you got this far, then kudos to you!
Any help would be appreciated...
I'm on:
I had to edit the WebHelpers file to point to absolute path - I found this hint here
I created my own implementation of I
And I added debug statements to all the standard
Functions/Subs
Here is my test code:
During debug, the response contains the values I expect, BUT I get a strange error:
Here is the output from the debug screen:
I edited this Sub to read:
There is no option to debug when I get the message.
If you got this far, then kudos to you! Any help would be appreciated...