@@ -25,30 +25,33 @@ var (
2525		"pull_request_review_comment" }
2626)
2727
28- type  eventDataBuilder  struct  {
28+ type  builderContext  struct  {
2929	secret  []byte 
3030	client  * ghClient 
3131	data    * eventData 
3232}
3333
34- func  (builder  * eventDataBuilder ) validate (payload  []byte , request  * http.Request ) bool  {
35- 	if  len (builder .secret ) ==  0  {
34+ type  eventDataBuilder  struct  {
35+ }
36+ 
37+ func  (builder  * eventDataBuilder ) validate (context  * builderContext , payload  []byte , request  * http.Request ) bool  {
38+ 	if  len (context .secret ) ==  0  {
3639		return  true 
3740	}
38- 	h  :=  hmac .New (sha1 .New , builder .secret )
41+ 	h  :=  hmac .New (sha1 .New , context .secret )
3942	h .Write (payload )
4043	result  :=  fmt .Sprintf ("sha1=%s" , hex .EncodeToString (h .Sum (nil )))
4144	return  request .Header .Get ("X-Hub-Signature" ) ==  result 
4245}
4346
44- func  (builder  * eventDataBuilder ) readPayload (r  * http.Request ) (* payload , []byte , error ) {
47+ func  (builder  * eventDataBuilder ) readPayload (context   * builderContext ,  r  * http.Request ) (* payload , []byte , error ) {
4548	body  :=  r .Body 
4649	defer  body .Close ()
4750	raw , err  :=  ioutil .ReadAll (io .LimitReader (body , r .ContentLength ))
4851	if  err  !=  nil  {
4952		return  nil , raw , err 
5053	}
51- 	if  ! builder .validate (raw , r ) {
54+ 	if  ! builder .validate (context ,  raw , r ) {
5255		return  nil , raw , fmt .Errorf ("Payload could not be validated" )
5356	}
5457	var  pr  payload 
@@ -58,35 +61,35 @@ func (builder *eventDataBuilder) readPayload(r *http.Request) (*payload, []byte,
5861	return  & pr , raw , nil 
5962}
6063
61- func  (builder  * eventDataBuilder ) readFromJson (payload  * payload ) {
62- 	builder .data .number  =  payload .Number 
63- 	builder .data .title  =  payload .PullRequest .Title 
64- 	builder .data .changedFiles  =  payload .PullRequest .ChangedFiles 
65- 	builder .data .additions  =  payload .PullRequest .Additions 
66- 	builder .data .deletions  =  payload .PullRequest .Deletions 
67- 	builder .data .ref  =  payload .PullRequest .Base .Ref 
68- 	builder .data .origin  =  strings .ToLower (payload .PullRequest .User .Login )
69- 	builder .data .state  =  payload .PullRequest .State 
64+ func  (builder  * eventDataBuilder ) readFromJson (context   * builderContext ,  payload  * payload ) {
65+ 	context .data .number  =  payload .Number 
66+ 	context .data .title  =  payload .PullRequest .Title 
67+ 	context .data .changedFiles  =  payload .PullRequest .ChangedFiles 
68+ 	context .data .additions  =  payload .PullRequest .Additions 
69+ 	context .data .deletions  =  payload .PullRequest .Deletions 
70+ 	context .data .ref  =  payload .PullRequest .Base .Ref 
71+ 	context .data .origin  =  strings .ToLower (payload .PullRequest .User .Login )
72+ 	context .data .state  =  payload .PullRequest .State 
7073}
7174
72- func  (builder  * eventDataBuilder ) readFromClient () {
73- 	id  :=  builder .data .number 
74- 	builder .data .assignees  =  builder .client .GetAssignees (id )
75- 	builder .data .state  =  builder .client .GetState (id )
76- 	builder .data .labels  =  builder .client .GetLabels (id )
77- 	builder .data .comments  =  builder .client .GetComments (id )
78- 	fileNames  :=  builder .client .GetFileNames (id )
79- 	builder .data .fileNames  =  fileNames 
75+ func  (builder  * eventDataBuilder ) readFromClient (context   * builderContext ) {
76+ 	id  :=  context .data .number 
77+ 	context .data .assignees  =  context .client .GetAssignees (id )
78+ 	context .data .state  =  context .client .GetState (id )
79+ 	context .data .labels  =  context .client .GetLabels (id )
80+ 	context .data .comments  =  context .client .GetComments (id )
81+ 	fileNames  :=  context .client .GetFileNames (id )
82+ 	context .data .fileNames  =  fileNames 
8083	stringSet  :=  util.StringSet {Transformer : filepath .Ext }
81- 	builder .data .fileExt  =  stringSet .AddAll (fileNames ).Values ()
84+ 	context .data .fileExt  =  stringSet .AddAll (fileNames ).Values ()
8285}
8386
84- func  (builder  * eventDataBuilder ) checkProcessState () bool  {
87+ func  (builder  * eventDataBuilder ) checkProcessState (context   * builderContext ) bool  {
8588	util .Logger .Debug ("Current issue [(%d) %s] state is '%s'" ,
86- 		builder .data .GetNumber (),
87- 		builder .data .GetTitle (),
88- 		builder .data .state )
89- 	return  builder .data .state  !=  "closed" 
89+ 		context .data .GetNumber (),
90+ 		context .data .GetTitle (),
91+ 		context .data .state )
92+ 	return  context .data .state  !=  "closed" 
9093}
9194
9295func  (builder  * eventDataBuilder ) PartialBuildFromRequest (config  bot.ClientConfig , r  * http.Request ) (bot.EventData , bool , error ) {
@@ -105,8 +108,8 @@ func (builder *eventDataBuilder) PartialBuildFromRequest(config bot.ClientConfig
105108		util .Logger .Debug ("Got GitHub '%s' event" , githubEvent )
106109		return  nil , false , nil 
107110	}
108- 	builder . secret   =   []byte (config .GetSecret ())
109- 	pl , raw , err  :=  builder .readPayload (r )
111+ 	context   :=   & builderContext { secret :  []byte (config .GetSecret ())} 
112+ 	pl , raw , err  :=  builder .readPayload (context ,  r )
110113	if  err  !=  nil  {
111114		return  nil , false , err 
112115	}
@@ -117,22 +120,13 @@ func (builder *eventDataBuilder) PartialBuildFromRequest(config bot.ClientConfig
117120	}
118121	repo  :=  pl .Repository .Name 
119122	owner  :=  pl .Repository .Owner .Login 
120- 	builder .data  =  & eventData {owner : owner , repo : repo , payload : raw }
121- 	builder .readFromJson (pl )
122- 	return  builder .data , builder .checkProcessState (), nil 
123+ 	context .data  =  & eventData {owner : owner , repo : repo , payload : raw }
124+ 	builder .readFromJson (context ,  pl )
125+ 	return  context .data , builder .checkProcessState (context ), nil 
123126}
124127
125128func  (builder  * eventDataBuilder ) BuildFromRequest (config  bot.ClientConfig , r  * http.Request ) (bot.EventData , bool , error ) {
126- 	_ , ok , err  :=  builder .PartialBuildFromRequest (config , r )
127- 	if  ! ok  ||  err  !=  nil  {
128- 		return  nil , ok , err 
129- 	}
130- 	repo  :=  builder .data .repo 
131- 	owner  :=  builder .data .owner 
132- 	builder .client  =  newClient (config , owner , repo )
133- 	builder .data .client  =  builder .client 
134- 	builder .readFromClient ()
135- 	return  builder .data , builder .checkProcessState (), nil 
129+ 	panic ("Don't use anymore" )
136130}
137131
138132func  (builder  * eventDataBuilder ) BuildFromPayload (config  bot.ClientConfig , raw  []byte ) (bot.EventData , bool , error ) {
@@ -147,11 +141,11 @@ func (builder *eventDataBuilder) BuildFromPayload(config bot.ClientConfig, raw [
147141	}
148142	repo  :=  pl .Repository .Name 
149143	owner  :=  pl .Repository .Owner .Login 
150- 	builder . client   =   newClient (config , owner , repo )
151- 	builder .data  =  & eventData {owner : owner , repo : repo , payload : raw , client : builder .client }
152- 	builder .readFromJson (& pl )
153- 	builder .readFromClient ()
154- 	return  builder .data , builder .checkProcessState (), nil 
144+ 	context   :=   & builderContext { client :  newClient (config , owner , repo )} 
145+ 	context .data  =  & eventData {owner : owner , repo : repo , payload : raw , client : context .client }
146+ 	builder .readFromJson (context ,  & pl )
147+ 	builder .readFromClient (context )
148+ 	return  context .data , builder .checkProcessState (context ), nil 
155149}
156150
157151func  init () {
0 commit comments