# HG changeset patch # User Jeff Turner # Date 1561472633 -36000 # Wed Jun 26 00:23:53 2019 +1000 # Node ID 39ef8060dd5aa02d6e4c0eea4b2d4066c985f4b9 # Parent 991476bb24fa3ae314be9139e2567368a996b5d4 Cleanups diff --git a/googlechat.groovy b/googlechat.groovy --- a/googlechat.groovy +++ b/googlechat.groovy @@ -68,32 +68,16 @@ // Returns null if anything fails. } -def debugMessages(IssueEvent event) { - log "--------------------------------------"; - log "event: ${event?.getClass()}"; - log "event.issue: ${event.issue.getClass()}"; - log "event.comment: ${event.comment?.body}"; - log "event.changeLog: is ${event?.changeLog?.getClass()}"; - log "event.comment: is ${event.comment?.getClass()}"; - log "Event methods:"; - log(event.metaClass.methods*.name.sort().unique() ); - if (event?.changeLog) { - log "changeitems: ${event.changeLog.getRelated('ChildChangeItem').getClass()}"; - event.changeLog.getRelated("ChildChangeItem").each { - def ci = it as GenericValue; - log "Change: ${ci.getString('oldstring')} → ${ci.getString('newstring')}"; - } - } -} - def String getBaseUrl() { // https://community.atlassian.com/t5/Answers-Developer-Questions/How-do-I-programatically-find-JIRA-s-base-URL/qaq-p/519640 return ComponentAccessor.getApplicationProperties().getString("jira.baseurl"); } +/** Sends a message to a webhook. */ def messageWebhook(String webhookUrl, ChatMessage message) { - log "JSON: ${message.toJSON()}"; + //log "JSON: ${message.toJSON()}"; + // Give each issue its own gchat 'thread', for grouping def threadKey = baseUrl.replaceAll("https://", '') + "-" + event.issue.key; URIBuilder uriBuilder = new URIBuilder(webhookUrl).addQueryParam("threadKey", threadKey); log.debug "Built URL ${uriBuilder}"; @@ -109,8 +93,6 @@ request.getParams().setParameter("http.connection.timeout", 5000); requestContentType = ContentType.JSON; request.addHeader("Content-Type", "application/json; charset=UTF-8"); - //body = new JsonBuilder( ['text': messageText] ).toString() - // https://developers.google.com/hangouts/chat/reference/message-formats/cards body = message.toJSON(); @@ -125,7 +107,7 @@ } } -/** Classes implementing a toJSON() method, generating Hangout Chat message format (https://developers.google.com/hangouts/chat/reference/message-formats/). +/** Represents an abstract GChat message. Concrete implementations should pick a representation (https://developers.google.com/hangouts/chat/reference/message-formats/). */ abstract class ChatMessage { abstract String toJSON(); @@ -210,7 +192,6 @@ return ComponentAccessor.eventTypeManager.getEventType(event.getEventTypeId()).getName(); } - String keyValue(key, value) { if (value != null) { @@ -218,6 +199,7 @@ } else { null } } + /** Convert from Jira wiki format to GChat format. */ public String reformat(String text) { text?. replaceAll(~"\\{quote\\}\\r?", '```')?. @@ -264,8 +246,9 @@ def formattedComment = reformat(event.comment?.body); if (event?.changeLog) { return '`Comment` ' + formattedComment; - } else + } else { return formattedComment; + } } }