Initial Upload.
This commit is contained in:
		
							
								
								
									
										244
									
								
								Js script to interprete json from gitea to channel.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								Js script to interprete json from gitea to channel.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,244 @@ | ||||
| /* exported Script */ | ||||
|  | ||||
| String.prototype.capitalizeFirstLetter = function() { | ||||
|     return this.charAt(0).toUpperCase() + this.slice(1); | ||||
| } | ||||
|  | ||||
| const getLabelsField = (labels) => { | ||||
|   let labelsArray = []; | ||||
|   labels.forEach(function(label) { | ||||
|     labelsArray.push(label.name); | ||||
|   }); | ||||
|   labelsArray = labelsArray.join(', '); | ||||
|   return { | ||||
|     title: 'Labels', | ||||
|     value: labelsArray, | ||||
|     short: labelsArray.length <= 40 | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| const githubEvents = { | ||||
|   ping(request) { | ||||
|     return { | ||||
|       content: { | ||||
|         text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content.zen | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|   /* NEW OR MODIFY ISSUE */ | ||||
|   issues(request) { | ||||
|     const user = request.content.sender; | ||||
|  | ||||
|     if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { | ||||
|         var body = request.content.issue.body; | ||||
|     } else if (request.content.action == "labeled") { | ||||
|         var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; | ||||
|     } else if (request.content.action == "assigned" || request.content.action == "unassigned") { | ||||
|         // Note that the issues API only gives you one assignee. | ||||
|         var body = "Current assignee: " + request.content.issue.assignee.login; | ||||
|     } else if (request.content.action == "closed") { | ||||
|         if (request.content.issue.closed_by) { | ||||
|             var body = "Closed by: " + request.content.issue.closed_by.login; | ||||
|         } else { | ||||
|             var body = "Closed."; | ||||
|         } | ||||
|     } else { | ||||
|         return { | ||||
|           error: { | ||||
|             success: false, | ||||
|             message: 'Unsupported issue action' | ||||
|           } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     const action = request.content.action.capitalizeFirstLetter(); | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' issue #' + request.content.issue.number + | ||||
|                 ' - ' + request.content.issue.title + '](' + | ||||
|                 request.content.issue.html_url + ')**\n\n' + | ||||
|                 body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|   /* COMMENT ON EXISTING ISSUE */ | ||||
|   issue_comment(request) { | ||||
|     const user = request.content.comment.user; | ||||
|  | ||||
|     if (request.content.action == "edited") { | ||||
|         var action = "Edited comment "; | ||||
|     } else { | ||||
|         var action = "Comment " | ||||
|     } | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' on issue #' + request.content.issue.number + | ||||
|                 ' - ' + request.content.issue.title + '](' + | ||||
|                 request.content.comment.html_url + ')**\n\n' + | ||||
|                 request.content.comment.body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|  /* COMMENT ON COMMIT */ | ||||
| commit_comment(request) { | ||||
|     const user = request.content.comment.user; | ||||
|  | ||||
|     if (request.content.action == "edited") { | ||||
|         var action = "Edited comment "; | ||||
|     } else { | ||||
|         var action = "Comment " | ||||
|     } | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' on commit id ' + request.content.comment.commit_id + | ||||
|                 ' - ' +  + '](' + | ||||
|                 request.content.comment.html_url + ')**\n\n' + | ||||
|                 request.content.comment.body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|   /* END OF COMMENT ON COMMIT */ | ||||
|  | ||||
|   /* PUSH TO REPO */ | ||||
|   push(request) { | ||||
|     var commits = request.content.commits; | ||||
|     var multi_commit = "" | ||||
|     var is_short = true; | ||||
|     var changeset = 'Changeset'; | ||||
|     if ( commits.length > 1 ) { | ||||
|       var multi_commit = " [Multiple Commits]"; | ||||
|       var is_short = false; | ||||
|       var changeset = changeset + 's'; | ||||
|       var output = []; | ||||
|     } | ||||
|     const user = request.content.sender; | ||||
|  | ||||
|     var text = '**Pushed to ' + "["+request.content.repository.full_name+"]("+request.content.repository.url+"):" | ||||
|                 + request.content.ref.split('/').pop() + "**\n\n"; | ||||
|  | ||||
|     for (var i = 0; i < commits.length; i++) { | ||||
|       var commit = commits[i]; | ||||
|       var shortID = commit.id.substring(0,7); | ||||
|       var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; | ||||
|       if ( commits.length > 1 ) { | ||||
|         output.push( a ); | ||||
|       } else { | ||||
|         var output = a; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     if (commits.length > 1) { | ||||
|       text += output.reverse().join('\n'); | ||||
|     } else { | ||||
|       text += output; | ||||
|     } | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   },  // End GitHub Push | ||||
|  | ||||
|   /* NEW PULL REQUEST */ | ||||
|   pull_request(request) { | ||||
|     const user = request.content.sender; | ||||
|  | ||||
|    if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { | ||||
|         var body = request.content.pull_request.body; | ||||
|     } else if (request.content.action == "labeled") { | ||||
|         var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; | ||||
|     } else if (request.content.action == "assigned" || request.content.action == "unassigned") { | ||||
|         // Note that the issues API only gives you one assignee. | ||||
|         var body = "Current assignee: " + request.content.pull_request.assignee.login; | ||||
|     } else if (request.content.action == "closed") { | ||||
|         if (request.content.pull_request.merged) { | ||||
|             var body = "Merged by: " + request.content.pull_request.merged_by.login; | ||||
|         } else { | ||||
|             var body = "Closed."; | ||||
|         } | ||||
|     } else { | ||||
|         return { | ||||
|           error: { | ||||
|             success: false, | ||||
|             message: 'Unsupported pull request action' | ||||
|           } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     const action = request.content.action.capitalizeFirstLetter(); | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' pull request #' + request.content.pull_request.number + | ||||
|                 ' - ' + request.content.pull_request.title + '](' + | ||||
|                 request.content.pull_request.html_url + ')**\n\n' + | ||||
|                 body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| class Script { | ||||
|   process_incoming_request({ request }) { | ||||
|     const header = request.headers['x-github-event']; | ||||
|     if (githubEvents[header]) { | ||||
|       return githubEvents[header](request); | ||||
|     } | ||||
|  | ||||
|     return { | ||||
|       error: { | ||||
|         success: false, | ||||
|         message: 'Unsupported method' | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										55
									
								
								bugzilla rss to rocket json.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								bugzilla rss to rocket json.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| import time | ||||
| import feedparser | ||||
| import requests | ||||
|  | ||||
| # Bugzilla RSS feed URL | ||||
| BUGZILLA_RSS_URL = "https://bugs.koozali.org/buglist.cgi?chfield=%5BBug%20creation%5D&chfieldfrom=7d&ctype=atom&title=Bugs%20reported%20in%20the%20last%207%20days" | ||||
| # Updated Rocket.Chat webhook URL | ||||
| ROCKET_CHAT_URL = "https://chat.koozali.org/hooks/677e97a73ddf8049989dbc8c/r9uiYpTRAXo3mkFKxHnoTwGCdtKpYaDemCpHArgz89knkwLo" | ||||
|  | ||||
| # Set to keep track of sent bug IDs | ||||
| sent_bugs = set() | ||||
|  | ||||
| # Function to send message to Rocket.Chat | ||||
| def send_to_rocket_chat(bug_title, bug_link, bug_id): | ||||
|     payload = { | ||||
|         "alias": "Bugzilla", | ||||
|         "text": f"Bug Report - ID: {bug_id}", | ||||
|         "attachments": [ | ||||
|             { | ||||
|                 "title": bug_title, | ||||
|                 "title_link": bug_link, | ||||
|                 "color": "#764FA5" | ||||
|             } | ||||
|         ] | ||||
|     } | ||||
|     response = requests.post(ROCKET_CHAT_URL, json=payload) | ||||
|     if response.status_code == 200: | ||||
|         print(f"Bug report sent successfully: {bug_title} (ID: {bug_id})") | ||||
|     else: | ||||
|         print(f"Failed to send bug report: {response.status_code} - {response.text}") | ||||
|  | ||||
| # Function to fetch and parse the Bugzilla RSS feed | ||||
| def fetch_bugzilla_feed(): | ||||
|     feed = feedparser.parse(BUGZILLA_RSS_URL) | ||||
|     return feed.entries | ||||
|  | ||||
| # Main polling loop | ||||
| def main(): | ||||
|     while True: | ||||
|         entries = fetch_bugzilla_feed() | ||||
|          | ||||
|         for entry in entries: | ||||
|             bug_id = entry.id.split('=')[-1]  # Extract the bug number from the URL | ||||
|             if bug_id not in sent_bugs: | ||||
|                 title = entry.title.strip() | ||||
|                 link = entry.link | ||||
|                 # Send the bug title, link, and ID | ||||
|                 send_to_rocket_chat(title, link, bug_id) | ||||
|                 sent_bugs.add(bug_id)  # Track the sent bug ID | ||||
|          | ||||
|         # Wait for 1 minute before polling again | ||||
|         time.sleep(60) | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
							
								
								
									
										57
									
								
								koji rss to rocket json.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								koji rss to rocket json.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| import time | ||||
| import feedparser | ||||
| import requests | ||||
|  | ||||
| # Koji RSS feed URL | ||||
| KOJI_RSS_URL = "http://koji.koozali.org/koji/recentbuilds?feed=rss" | ||||
| # Rocket.Chat webhook URL | ||||
| ROCKET_CHAT_URL = "https://chat.koozali.org/hooks/66d24441effca216c2ca309f/KJLaNwc5vyHwqz5MhRDpBkKWnQuAfsCX3xZMHxPhpuqmFgBn" | ||||
|  | ||||
| # Function to send message to Rocket.Chat | ||||
| def send_to_rocket_chat(message_title, message_link, message_description): | ||||
|     payload = { | ||||
|         "alias": "Koji", | ||||
|         "text": message_title, | ||||
|         "attachments": [ | ||||
|             { | ||||
|                 "title": message_title, | ||||
|                 "title_link": message_link, | ||||
|                 "text": message_description, | ||||
| #                "image_url": "https://chat.koozali.org/images/integration-attachment-example.png", | ||||
|                 "color": "#764FA5" | ||||
|             } | ||||
|         ] | ||||
|     } | ||||
|     response = requests.post(ROCKET_CHAT_URL, json=payload) | ||||
|     if response.status_code == 200: | ||||
|         print(f"Message ({title}) sent successfully!") | ||||
|     else: | ||||
|         print(f"Failed to send message: {response.status_code} - {response.text}") | ||||
|  | ||||
| # Function to fetch and parse the Koji RSS feed | ||||
| def fetch_koji_feed(): | ||||
|     feed = feedparser.parse(KOJI_RSS_URL) | ||||
|     if feed.entries: | ||||
|         latest_build = feed.entries[0] | ||||
|         title = latest_build.title.strip() | ||||
|         link = latest_build.link | ||||
|         description = latest_build.description.strip().replace("<pre>", "").replace("</pre>", "") | ||||
|         return title, link, description | ||||
|     return None, None, None | ||||
|  | ||||
| # Main polling loop | ||||
| def main(): | ||||
|     last_title = None | ||||
|      | ||||
|     while True: | ||||
|         title, link, description = fetch_koji_feed() | ||||
|          | ||||
|         if title and title != last_title: | ||||
|             send_to_rocket_chat(title, link, description) | ||||
|             last_title = title | ||||
|          | ||||
|         # Wait for 1 minute before polling again | ||||
|         time.sleep(60) | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
							
								
								
									
										250
									
								
								modified Js script to interprete json from gitea to channel.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										250
									
								
								modified Js script to interprete json from gitea to channel.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,250 @@ | ||||
| /* exported Script */ | ||||
|  | ||||
| String.prototype.capitalizeFirstLetter = function() { | ||||
|     return this.charAt(0).toUpperCase() + this.slice(1); | ||||
| } | ||||
|  | ||||
| const getLabelsField = (labels) => { | ||||
|   let labelsArray = []; | ||||
|   labels.forEach(function(label) { | ||||
|     labelsArray.push(label.name); | ||||
|   }); | ||||
|   labelsArray = labelsArray.join(', '); | ||||
|   return { | ||||
|     title: 'Labels', | ||||
|     value: labelsArray, | ||||
|     short: labelsArray.length <= 40 | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| const githubEvents = { | ||||
|   ping(request) { | ||||
|     return { | ||||
|       content: { | ||||
|         text: '_' + request.content.hook.id + '_\n' + ':thumbsup: ' + request.content.zen | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|   /* NEW OR MODIFY ISSUE */ | ||||
|   issues(request) { | ||||
|     const user = request.content.sender; | ||||
|  | ||||
|     if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited") { | ||||
|         var body = request.content.issue.body; | ||||
|     } else if (request.content.action == "labeled") { | ||||
|         var body = "Current labels: " + getLabelsField(request.content.issue.labels).value; | ||||
|     } else if (request.content.action == "assigned" || request.content.action == "unassigned") { | ||||
|         // Note that the issues API only gives you one assignee. | ||||
|         var body = "Current assignee: " + request.content.issue.assignee.login; | ||||
|     } else if (request.content.action == "closed") { | ||||
|         if (request.content.issue.closed_by) { | ||||
|             var body = "Closed by: " + request.content.issue.closed_by.login; | ||||
|         } else { | ||||
|             var body = "Closed."; | ||||
|         } | ||||
|     } else { | ||||
|         return { | ||||
|           error: { | ||||
|             success: false, | ||||
|             message: 'Unsupported issue action' | ||||
|           } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     const action = request.content.action.capitalizeFirstLetter(); | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' issue #' + request.content.issue.number + | ||||
|                 ' - ' + request.content.issue.title + '](' + | ||||
|                 request.content.issue.html_url + ')**\n\n' + | ||||
|                 body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|   /* COMMENT ON EXISTING ISSUE */ | ||||
|   issue_comment(request) { | ||||
|     const user = request.content.comment.user; | ||||
|  | ||||
|     if (request.content.action == "edited") { | ||||
|         var action = "Edited comment "; | ||||
|     } else { | ||||
|         var action = "Comment " | ||||
|     } | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' on issue #' + request.content.issue.number + | ||||
|                 ' - ' + request.content.issue.title + '](' + | ||||
|                 request.content.comment.html_url + ')**\n\n' + | ||||
|                 request.content.comment.body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|  | ||||
|  /* COMMENT ON COMMIT */ | ||||
| commit_comment(request) { | ||||
|     const user = request.content.comment.user; | ||||
|  | ||||
|     if (request.content.action == "edited") { | ||||
|         var action = "Edited comment "; | ||||
|     } else { | ||||
|         var action = "Comment " | ||||
|     } | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' on commit id ' + request.content.comment.commit_id + | ||||
|                 ' - ' +  + '](' + | ||||
|                 request.content.comment.html_url + ')**\n\n' + | ||||
|                 request.content.comment.body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|   /* END OF COMMENT ON COMMIT */ | ||||
|  | ||||
|   /* PUSH TO REPO */ | ||||
|   push(request) { | ||||
|     // Check if the commits array is empty | ||||
|     var commits = request.content.commits; | ||||
|      | ||||
|     // If commits is empty, use head_commit details | ||||
|     if (commits.length === 0 && request.content.head_commit) { | ||||
|         commits = [request.content.head_commit]; // Wrap head_commit in an array for uniform processing | ||||
|     } | ||||
|  | ||||
|     var multi_commit = ""; | ||||
|     var is_short = true; | ||||
|     var changeset = 'Changeset'; | ||||
|  | ||||
|     if (commits.length > 1) { | ||||
|         multi_commit = " [Multiple Commits]"; | ||||
|         is_short = false; | ||||
|         changeset += 's'; | ||||
|         var output = []; | ||||
|     } | ||||
|  | ||||
|     const user = request.content.sender; | ||||
|      | ||||
|     var text = '**Pushed to ' + "[" + request.content.repository.full_name + "](" + request.content.repository.url + "):" + | ||||
|         request.content.ref.split('/').pop() + "**\n\n"; | ||||
|  | ||||
|     for (var i = 0; i < commits.length; i++) { | ||||
|         var commit = commits[i]; | ||||
|         var shortID = commit.id.substring(0, 7); | ||||
|         var a = '[' + shortID + '](' + commit.url + ') - ' + commit.message; | ||||
|         if (commits.length > 1) { | ||||
|             output.push(a); | ||||
|         } else { | ||||
|             output = a; // Ensure output is properly defined | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (commits.length > 1) { | ||||
|         text += output.reverse().join('\n'); | ||||
|     } else { | ||||
|         text += output; | ||||
|     } | ||||
|  | ||||
|     return { | ||||
|         content: { | ||||
|             attachments: [{ | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             }] | ||||
|         } | ||||
|     }; | ||||
| }, // End GitHub Push | ||||
|   /* NEW PULL REQUEST */ | ||||
|   pull_request(request) { | ||||
|     const user = request.content.sender; | ||||
|  | ||||
|    if (request.content.action == "opened" || request.content.action == "reopened" || request.content.action == "edited" || request.content.action == "synchronize") { | ||||
|         var body = request.content.pull_request.body; | ||||
|     } else if (request.content.action == "labeled") { | ||||
|         var body = "Current labels: " + getLabelsField(request.content.pull_request.labels).value; | ||||
|     } else if (request.content.action == "assigned" || request.content.action == "unassigned") { | ||||
|         // Note that the issues API only gives you one assignee. | ||||
|         var body = "Current assignee: " + request.content.pull_request.assignee.login; | ||||
|     } else if (request.content.action == "closed") { | ||||
|         if (request.content.pull_request.merged) { | ||||
|             var body = "Merged by: " + request.content.pull_request.merged_by.login; | ||||
|         } else { | ||||
|             var body = "Closed."; | ||||
|         } | ||||
|     } else { | ||||
|         return { | ||||
|           error: { | ||||
|             success: false, | ||||
|             message: 'Unsupported pull request action' | ||||
|           } | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     const action = request.content.action.capitalizeFirstLetter(); | ||||
|  | ||||
|     const text = '_' + request.content.repository.full_name + '_\n' + | ||||
|                 '**[' + action + ' pull request #' + request.content.pull_request.number + | ||||
|                 ' - ' + request.content.pull_request.title + '](' + | ||||
|                 request.content.pull_request.html_url + ')**\n\n' + | ||||
|                 body; | ||||
|  | ||||
|     return { | ||||
|       content: { | ||||
|         attachments: [ | ||||
|             { | ||||
|                 thumb_url: user.avatar_url, | ||||
|                 text: text, | ||||
|                 fields: [] | ||||
|             } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| class Script { | ||||
|   process_incoming_request({ request }) { | ||||
|     const header = request.headers['x-github-event']; | ||||
|     if (githubEvents[header]) { | ||||
|       return githubEvents[header](request); | ||||
|     } | ||||
|  | ||||
|     return { | ||||
|       error: { | ||||
|         success: false, | ||||
|         message: 'Unsupported method' | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user