Compare commits
1 Commits
23931cf91f
...
4ecb3b9cb9
Author | SHA1 | Date |
---|---|---|
shekhar-cis | 4ecb3b9cb9 |
|
@ -7,17 +7,10 @@ import os
|
|||
import requests
|
||||
import time
|
||||
|
||||
import logging
|
||||
|
||||
from subprocess import call
|
||||
from base64 import b64encode
|
||||
|
||||
from buildbot.process.properties import Properties
|
||||
from buildbot.util import bytes2unicode, unicode2bytes
|
||||
from buildbot.www.hooks.base import BaseHookHandler
|
||||
|
||||
from dateutil.parser import parse as dateparse
|
||||
|
||||
from twisted.internet import defer
|
||||
from twisted.python import log
|
||||
|
||||
|
@ -27,7 +20,7 @@ _HEADER_SIGNATURE = 'X-TX-Signature'
|
|||
_HEADER_URL_PATH = 'X-TX-Url'
|
||||
_HTTP_DATE = 'date'
|
||||
_EVENT_KEY = 'event'
|
||||
|
||||
author = 'buildbot-transifex'
|
||||
|
||||
|
||||
class TransifexHandler(BaseHookHandler):
|
||||
|
@ -63,27 +56,25 @@ class TransifexHandler(BaseHookHandler):
|
|||
).digest()
|
||||
)
|
||||
if tx_signature != header_signature:
|
||||
return False
|
||||
|
||||
raise ValueError("Tx Signature mismatch")
|
||||
|
||||
if signature != request.getHeader(_HEADER_SIGNATURE):
|
||||
return False
|
||||
raise ValueError("Signature mismatch")
|
||||
return True
|
||||
|
||||
def process_translation_completed(self, payload, codebase):
|
||||
changes = []
|
||||
transifex_response = self._transform_variables(payload['project'], payload['resource'])
|
||||
# if 'pybitmessage-test' in transifex_response['project'] and 'messagespot' in transifex_response['resource']:
|
||||
# if 'translation_completed' in transifex_response['event']:
|
||||
translated_request = self._transform_variables(payload['project'], payload['resource'])
|
||||
change = {
|
||||
'author': "buildbot-transifex",
|
||||
'resource': transifex_response[resource],
|
||||
'branch': transifex_response["branch"],
|
||||
'project': transifex_response["project"],
|
||||
'author': "buildbot-transifex",
|
||||
'branch': translated_request["branch"],
|
||||
'project': translated_request["project"],
|
||||
'properties': {
|
||||
"transifex_language": payload.get("language", "None"),
|
||||
"transifex_event": payload.get("event", "None"),
|
||||
"transifex_project": payload.get("project", "None"),
|
||||
"transifex_resource": payload.get("resource", "None")
|
||||
"transifex_resource": payload.get("resource", "None"),
|
||||
"transifex_branch": "v0.6"
|
||||
}
|
||||
}
|
||||
if codebase is not None:
|
||||
|
@ -92,15 +83,18 @@ class TransifexHandler(BaseHookHandler):
|
|||
return changes
|
||||
|
||||
def _transform_variables(self, transifex_project, transifex_resource):
|
||||
key = "{}/{}".format(transifex_project, transifex_resource)
|
||||
_map = self.map[key]
|
||||
repository = _map["repository"]
|
||||
project = transifex_project
|
||||
return {
|
||||
'project': project,
|
||||
'repository': repository,
|
||||
'branch': _map["branch"],
|
||||
}
|
||||
if transifex_project is None:
|
||||
raise ValueError("Unknown project %s from transifex".format(transifex_project))
|
||||
else:
|
||||
key = "{}/{}".format(transifex_project, transifex_resource)
|
||||
_map = self.map[key]
|
||||
repository = _map["repository"]
|
||||
project = transifex_project
|
||||
return{
|
||||
'project': project,
|
||||
'repository': repository,
|
||||
'branch': _map["branch"],
|
||||
}
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def getChanges(self, request):
|
||||
|
@ -119,34 +113,23 @@ class TransifexHandler(BaseHookHandler):
|
|||
p = Properties()
|
||||
p.master = self.master
|
||||
option = self.options
|
||||
self.rendered_secret = yield p.render(self.secret)
|
||||
rendered_secret = yield p.render(self.secret)
|
||||
signature = hmac.new(
|
||||
unicode2bytes(self.rendered_secret),
|
||||
unicode2bytes(rendered_secret),
|
||||
unicode2bytes(content_text.strip()),
|
||||
digestmod=hashlib.sha256)
|
||||
header_signature = bytes2unicode(
|
||||
request.getHeader(_HEADER_SIGNATURE))
|
||||
if not self._verifyTransifexSignature(request, content, self.rendered_secret, signature, header_signature):
|
||||
logging.warning("Verify Transifex Signature fail.")
|
||||
return False
|
||||
else:
|
||||
logging.warning("Verify Transifex Signature ok")
|
||||
|
||||
self._verifyTransifexSignature(request, content, rendered_secret, signature, header_signature)
|
||||
event_type = payload.get("event", "None")
|
||||
|
||||
change["properties"] = {
|
||||
"transifex_language": payload.get("language", "None"),
|
||||
"transifex_event": payload.get("event", "None"),
|
||||
"transifex_project": payload.get("project", "None"),
|
||||
"transifex_resource": payload.get("resource", "None")
|
||||
}
|
||||
transiform_map = self._transform_variables(payload['project'], payload['resource'])
|
||||
mapped_request = self._transform_variables(payload['project'], payload['resource'])
|
||||
|
||||
change["changes"] = {
|
||||
"author": "buildbot-transifex",
|
||||
"repository": transiform_map['repository'],
|
||||
"project": transiform_map['project'],
|
||||
"branch": transiform_map["branch"]
|
||||
"author": author,
|
||||
"repository": mapped_request["repository"],
|
||||
"project": mapped_request["project"],
|
||||
"branch": mapped_request["branch"]
|
||||
}
|
||||
|
||||
log.msg("Received event '{}' from transifex".format(event_type))
|
||||
|
@ -162,5 +145,4 @@ class TransifexHandler(BaseHookHandler):
|
|||
|
||||
return (changes, 'transifex')
|
||||
|
||||
|
||||
transifex = TransifexHandler(transifex_to_github_map)
|
||||
transifex = TransifexHandler
|
||||
|
|
Loading…
Reference in New Issue