Rev 4256 | Blame | Last modification | View Log | RSS feed
'-------------------------------------------------' 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 Datasqlstr = "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 DictionaryissueInfo.RemoveAllWhile ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))jkey = rsTemp("iss_key")issueInfo.Add jkey, CreateObject( "Scripting.Dictionary" )rsTemp.MoveNextWEndrsTemp.Close()Set rsTemp = nothingEnd 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, elDim dumpOutput, dumpInput' Determine issues to processCall getJiraIssueList (NNpv_id, issueInfo)If issueInfo.Count > 0 Thenqry = "/rest/api/2/search"resolution = ""If mode = 1 Then resolution = " AND resolution is not null"dumpOutput = 0dumpInput = 0' Create the JSON input via code' Can do it as a string, as thats all we wantset iJSON = New aspJSONWith 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 WithEnd Withpost = iJSON.JSONoutput()' Display what we are doingIf dumpInput <> 0 ThenResponse.Write "<br>Rest Query:" & Application("JIRA_URL") & qryset dJSON = New aspJSONdJSON.loadJSON( post )Response.Write "<br>Post json:<pre>" & dJSON.JSONoutput() & "</pre>"End IfSet objXML = CreateObject("MSXML2.ServerXMLHTTP.6.0")objXML.Open "POST", Application("JIRA_URL") & qry , falseobjXML.setRequestHeader "Authorization", "Basic " & Base64Encode(Application("JIRA_CREDENTIALS"))objXML.setRequestHeader "Content-Type", "application/json"On Error Resume NextobjXML.Send(post)if Err.Number <> 0 thenResponse.Write "<br>Error Code: " & Err.Number & ": " & Err.DescriptionOn Error Goto 0elseOn Error Goto 0if objXML.status <> 200 thenResponse.Write "<br>Status: " & objXML.statusResponse.Write "<pre>"Response.Write objXML.responseTextResponse.Write "</pre>"Else'Response.Write "<pre>"'Response.Write objXML.responseText'Response.Write "</pre>"Set oJSON = New aspJSONoJSON.loadJSON( objXML.responseText )if dumpOutput <> 0 thenResponse.Write "<br>Pretty JSON display<pre>"Response.Write oJSON.JSONoutput()Response.Write "</pre>"end if' Add info from Jira into the issueInfoOn Error Resume NextFor Each el In oJSON.data("issues")Set this = oJSON.data("issues").item(el)jkey = this.item("key")If issueInfo.Exists(jkey) ThenSet 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" Thendata.add "resolution", fields.item("resolution").item("name")End IfEnd IfNext' Delete empty entriesIf mode <> 0 ThenFor Each jkey In issueInfoSet el = issueInfo.item(jkey)If el.Count = 0 ThenissueInfo.remove(jkey)End IfNextEnd Ifend ifend ifEnd IfEnd Sub'--- End of File