'-------------------------------------------------
' Function: getJiraIssueList
' Description: Populate a Scripting.Dictionary variable with a list of issues
' Args: NNpv_id - PV_ID List to process (Comma sep)
' issueInfo - Scripting Dictionary to populate
' Will be cleared before use
'
Sub getJiraIssueList ( NNpv_id, issueInfo)
Dim rsTemp, sqlstr, jkey, retVal
' Extract Data
sqlstr = "SELECT iss_key FROM JIRA_ISSUES WHERE pv_id in (" & NNpv_id & ")"& " ORDER BY iss_key ASC"
Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
retVal = rsTemp.RecordCount
' Insert into clean Dictionary
issueInfo.RemoveAll
While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
jkey = rsTemp("iss_key")
issueInfo.Add jkey, CreateObject( "Scripting.Dictionary" )
rsTemp.MoveNext
WEnd
rsTemp.Close()
Set rsTemp = nothing
End Sub
'-------------------------------------------------
' Function: getJiraIssueDetails
' Description: Extract Issue details from Jira
' Args: NNpv_id - PV_ID List to process (Comma sep)
' issueInfo - Scripting Dictionary to populate
' Will be cleared before use
' mode - 0: All Issues 1: Only Resolved
'
Sub getJiraIssueDetails(NNpv_id,issueInfo,mode)
Dim objXML, qry, post, iJSON, dJSON, oJSON, this, jkey, fields, data , resolution, el
Dim dumpOutput, dumpInput
' Determine issues to process
Call getJiraIssueList (NNpv_id, issueInfo)
If issueInfo.Count > 0 Then
qry = "/rest/api/2/search"
resolution = ""
If mode = 1 Then resolution = " AND resolution is not null"
dumpOutput = 0
dumpInput = 0
' Create the JSON input via code
' Can do it as a string, as thats all we want
set iJSON = New aspJSON
With iJSON.data
.Add "jql", "key in ("& Join(issueInfo.Keys, ",") &")" & resolution
.Add "startAt", 0
.Add "maxResults", issueInfo.Count
.Add "validateQuery", "false"
.Add "fields", iJSON.Collection()
With .item("fields")
.Add 0, "key"
.Add 1, "summary"
.Add 2, "status"
.Add 3, "priority"
.Add 4, "issuetype"
.Add 5, "resolution"
End With
End With
post = iJSON.JSONoutput()
' Display what we are doing
If dumpInput <> 0 Then
Response.Write "
Rest Query:" & Application("JIRA_URL") & qry
set dJSON = New aspJSON
dJSON.loadJSON( post )
Response.Write "
Post json:
" & dJSON.JSONoutput() & "" End If Set objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0") objXML.Open "POST", Application("JIRA_URL") & qry , false objXML.setRequestHeader "Authorization", "Basic " & Base64Encode(Application("JIRA_CREDENTIALS")) objXML.setRequestHeader "Content-Type", "application/json" On Error Resume Next objXML.Send(post) if Err.Number <> 0 then Response.Write "
"
Response.Write objXML.responseText
Response.Write ""
Else
'Response.Write ""
'Response.Write objXML.responseText
'Response.Write ""
Set oJSON = New aspJSON
oJSON.loadJSON( objXML.responseText )
if dumpOutput <> 0 then
Response.Write ""
Response.Write oJSON.JSONoutput()
Response.Write ""
end if
' Add info from Jira into the issueInfo
On Error Resume Next
For Each el In oJSON.data("issues")
Set this = oJSON.data("issues").item(el)
jkey = this.item("key")
If issueInfo.Exists(jkey) Then
Set fields = this.item("fields")
Set data = issueInfo.Item(jkey)
data.add "type","JIRA"
data.add "key",this.item("key")
data.add "url",Application("JIRA_URL") & "/browse/" & this.item("key")
data.add "statusIcon",fields.item("status").item("iconUrl")
data.add "status",fields.item("status").item("name")
data.add "issuetypeIcon",fields.item("issuetype").item("iconUrl")
data.add "issuetype",fields.item("issuetype").item("name")
data.add "priorityIcon",fields.item("priority").item("iconUrl")
data.add "priority",fields.item("priority").item("name")
data.add "summary",fields.item("summary")
If TypeName(fields.item("resolution")) = "Dictionary" Then
data.add "resolution", fields.item("resolution").item("name")
End If
End If
Next
' Delete empty entries
If mode <> 0 Then
For Each jkey In issueInfo
Set el = issueInfo.item(jkey)
If el.Count = 0 Then
issueInfo.remove(jkey)
End If
Next
End If
end if
end if
End If
End Sub
'--- End of File