@@ -23,15 +23,76 @@ associated documentation files (the "Software"), to deal in the Software without
2323
2424package org .jenkinsci .plugins .gogs ;
2525
26+ import com .fasterxml .jackson .core .type .TypeReference ;
27+ import com .fasterxml .jackson .databind .DeserializationFeature ;
28+ import com .fasterxml .jackson .databind .ObjectMapper ;
2629import hudson .model .Cause ;
2730
31+ import java .util .HashMap ;
32+ import java .util .Map ;
33+ import java .util .logging .Logger ;
34+
2835class GogsCause extends Cause {
29- private final String deliveryID ;
36+ private String deliveryID ;
37+ private GogsPayloadData gogsPayloadData ;
38+ private Map <String , String > envVars = new HashMap <>();
39+ private final static Logger LOGGER = Logger .getLogger (GogsCause .class .getName ());
40+
41+
42+ public GogsCause () {
43+ }
3044
3145 public GogsCause (String deliveryID ) {
3246 this .deliveryID = deliveryID ;
3347 }
3448
49+ public String getDeliveryID () {
50+ return deliveryID ;
51+ }
52+
53+ public Map <String , String > getEnvVars () {
54+ return envVars ;
55+ }
56+
57+ public void setDeliveryID (String deliveryID ) {
58+ this .deliveryID = deliveryID ;
59+ }
60+
61+ public void setGogsPayloadData (String json ) {
62+ Map <String , Object > map = null ;
63+
64+ ObjectMapper objectMapper = new ObjectMapper ();
65+ objectMapper .configure (DeserializationFeature .ACCEPT_SINGLE_VALUE_AS_ARRAY , true );
66+ objectMapper .configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
67+
68+ try {
69+ gogsPayloadData = objectMapper .readValue (json , GogsPayloadData .class );
70+ map = objectMapper .convertValue (gogsPayloadData , new TypeReference <Map <String , Object >>() {
71+ });
72+ } catch (Exception e ) {
73+ LOGGER .severe (e .getMessage ());
74+ }
75+ if (gogsPayloadData != null ) {
76+ iterate (map , null );
77+ }
78+
79+ }
80+
81+ private void iterate (Map <String , Object > map , String prefix ) {
82+ for (Map .Entry <String , Object > entry : map .entrySet ()) {
83+ StringBuilder env_name = new StringBuilder ();
84+ if (prefix != null )
85+ env_name .append (prefix .toUpperCase ()).append ("_" );
86+
87+ if (entry .getValue () instanceof Map ) {
88+ iterate ((Map <String , Object >) entry .getValue (), env_name + entry .getKey ().toUpperCase ());
89+ } else if (entry .getValue () instanceof String || entry .getValue () instanceof Long || entry .getValue () instanceof Boolean ) {
90+ env_name .append (entry .getKey ().toUpperCase ());
91+ envVars .put ("GOGS_" + env_name .toString (), entry .getValue ().toString ());
92+ }
93+ }
94+ }
95+
3596 @ Override
3697 public String getShortDescription () {
3798 return this .deliveryID ;
0 commit comments