11package cn .springcloud .gray .client .netflix .feign ;
22
33import cn .springcloud .gray .request .GrayHttpTrackInfo ;
4- import cn .springcloud .gray .request .GrayTrackInfo ;
4+ import cn .springcloud .gray .request .HttpGrayTrackRecordDevice ;
5+ import cn .springcloud .gray .request .HttpGrayTrackRecordHelper ;
56import cn .springcloud .gray .request .RequestLocalStorage ;
67import feign .RequestInterceptor ;
78import feign .RequestTemplate ;
8- import org .apache .commons .collections .MapUtils ;
9- import org .apache .commons .lang3 .StringUtils ;
109import org .slf4j .Logger ;
1110import org .slf4j .LoggerFactory ;
1211
13- import java .util .Map ;
12+ import java .util .List ;
1413
1514
1615public class GrayTrackFeignRequestInterceptor implements RequestInterceptor {
@@ -30,33 +29,31 @@ public void apply(RequestTemplate template) {
3029 if (grayTrack == null ) {
3130 return ;
3231 }
33- if (StringUtils .isNotEmpty (grayTrack .getUri ())) {
34- template .header (GrayHttpTrackInfo .GRAY_TRACK_URI , grayTrack .getUri ());
35- }
36- if (StringUtils .isNotEmpty (grayTrack .getTraceIp ())) {
37- template .header (GrayHttpTrackInfo .GRAY_TRACK_TRACE_IP , grayTrack .getTraceIp ());
38- }
39- if (StringUtils .isNotEmpty (grayTrack .getMethod ())) {
40- template .header (GrayHttpTrackInfo .GRAY_TRACK_METHOD , grayTrack .getMethod ());
41- }
42- if (grayTrack .getParameters () != null && !grayTrack .getParameters ().isEmpty ()) {
43- grayTrack .getParameters ().entrySet ().forEach (entry -> {
44- String name = new StringBuilder ().append (GrayHttpTrackInfo .GRAY_TRACK_PARAMETER_PREFIX )
45- .append (GrayTrackInfo .GRAY_TRACK_SEPARATE )
46- .append (entry .getKey ()).toString ();
47- template .header (name , entry .getValue ());
48- });
49- }
50- if (grayTrack .getHeaders () != null && !grayTrack .getHeaders ().isEmpty ()) {
51- grayTrack .getHeaders ().entrySet ().forEach (entry -> {
52- String name = new StringBuilder ().append (GrayHttpTrackInfo .GRAY_TRACK_HEADER_PREFIX )
53- .append (GrayTrackInfo .GRAY_TRACK_SEPARATE )
54- .append (entry .getKey ()).toString ();
55- template .header (name , entry .getValue ());
56- });
57- }
58-
59- appendGrayTrackInfoToHeader (GrayTrackInfo .GRAY_TRACK_ATTRIBUTE_PREFIX , grayTrack .getAttributes (), template );
32+ HttpGrayTrackRecordHelper .record (new FeignHttpGrayTrackRecordDevice (template ), grayTrack );
33+ // if (StringUtils.isNotEmpty(grayTrack.getUri())) {
34+ // template.header(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
35+ // }
36+ // if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
37+ // template.header(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
38+ // }
39+ // if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
40+ // template.header(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
41+ // }
42+ // if (MapUtils.isNotEmpty(grayTrack.getParameters())) {
43+ // appendGrayTrackInfosToHeader(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX, grayTrack.getParameters(), template);
44+ //// String prefix = GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX + GrayTrackInfo.GRAY_TRACK_SEPARATE;
45+ //// grayTrack.getParameters().entrySet().forEach(entry -> {
46+ //// template.header(prefix + entry.getKey(), entry.getValue());
47+ //// });
48+ // }
49+ // if (MapUtils.isNotEmpty(grayTrack.getHeaders())) {
50+ // appendGrayTrackInfosToHeader(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX, grayTrack.getHeaders(), template);
51+ //// String prefix = GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX + GrayTrackInfo.GRAY_TRACK_SEPARATE;
52+ //// grayTrack.getHeaders().entrySet().forEach(entry -> {
53+ //// template.header(prefix + entry.getKey(), entry.getValue());
54+ //// });
55+ // }
56+ // appendGrayTrackInfoToHeader(GrayTrackInfo.GRAY_TRACK_ATTRIBUTE_PREFIX, grayTrack.getAttributes(), template);
6057 }
6158
6259 private GrayHttpTrackInfo getGrayHttpTrackInfo (RequestTemplate template ) {
@@ -68,14 +65,40 @@ private GrayHttpTrackInfo getGrayHttpTrackInfo(RequestTemplate template) {
6865 }
6966 }
7067
71- private void appendGrayTrackInfoToHeader (String grayPrefix , Map <String , String > infos , RequestTemplate template ) {
72- if (MapUtils .isNotEmpty (infos )) {
73- infos .entrySet ().forEach (entry -> {
74- String name = new StringBuilder ().append (grayPrefix )
75- .append (GrayTrackInfo .GRAY_TRACK_SEPARATE )
76- .append (entry .getKey ()).toString ();
77- template .header (name , entry .getValue ());
78- });
68+
69+ public static class FeignHttpGrayTrackRecordDevice implements HttpGrayTrackRecordDevice {
70+
71+ private RequestTemplate template ;
72+
73+ public FeignHttpGrayTrackRecordDevice (RequestTemplate template ) {
74+ this .template = template ;
75+ }
76+
77+ @ Override
78+ public void record (String name , String value ) {
79+ template .header (name , value );
80+ }
81+
82+ @ Override
83+ public void record (String name , List <String > values ) {
84+ template .header (name , values );
7985 }
8086 }
87+
88+ //
89+ // private void appendGrayTrackInfoToHeader(String grayPrefix, Map<String, String> infos, RequestTemplate template) {
90+ // String prefix = grayPrefix + GrayTrackInfo.GRAY_TRACK_SEPARATE;
91+ // if (MapUtils.isNotEmpty(infos)) {
92+ // infos.entrySet().forEach(entry -> {
93+ // template.header(prefix + entry.getKey(), entry.getValue());
94+ // });
95+ // }
96+ // }
97+ //
98+ // private void appendGrayTrackInfosToHeader(String grayPrefix, Map<String, List<String>> infos, RequestTemplate template) {
99+ // String prefix = grayPrefix + GrayTrackInfo.GRAY_TRACK_SEPARATE;
100+ // infos.entrySet().forEach(entry -> {
101+ // template.header(prefix + entry.getKey(), entry.getValue());
102+ // });
103+ // }
81104}
0 commit comments