2929
3030import com .tencent .beacon .core .info .BeaconPubParams ;
3131import com .tencent .beacon .event .open .BeaconReport ;
32- import com .tencent .cos .xml .base .BuildConfig ;
3332import com .tencent .cos .xml .common .ClientErrorCode ;
33+ import com .tencent .cos .xml .base .BuildConfig ;
3434import com .tencent .cos .xml .exception .CosXmlClientException ;
3535import com .tencent .cos .xml .exception .CosXmlServiceException ;
3636import com .tencent .cos .xml .model .CosXmlRequest ;
4242import com .tencent .qcloud .core .common .QCloudClientException ;
4343import com .tencent .qcloud .core .common .QCloudServiceException ;
4444import com .tencent .qcloud .core .http .ConnectionRepository ;
45+ import com .tencent .qcloud .core .http .HttpConstants ;
4546import com .tencent .qcloud .core .http .HttpRequest ;
4647import com .tencent .qcloud .core .http .HttpTask ;
4748import com .tencent .qcloud .core .http .HttpTaskMetrics ;
@@ -90,22 +91,27 @@ public class BeaconService {
9091 public static final String EVENT_PARAMS_NODE_GET = "GetObjectRequest" ;
9192
9293 private Context applicationContext ;
93- private CosXmlServiceConfig config ;
9494 private static BeaconService instance ;
9595
96- private BeaconService (Context applicationContext , CosXmlServiceConfig config ) {
96+ //是否关闭灯塔上报
97+ private boolean isCloseBeacon ;
98+ //上报桥接来源
99+ private String bridge ;
100+
101+ private BeaconService (Context applicationContext ) {
97102 this .applicationContext = applicationContext ;
98- this .config = config ;
99103 }
100104
101105 /**
102106 * 初始化
103107 */
104- public static void init (Context applicationContext , CosXmlServiceConfig serviceConfig ) {
108+ public static void init (Context applicationContext , boolean isCloseBeacon , String bridge ) {
105109 synchronized (BeaconService .class ) {
106110 if (instance == null ) {
107- instance = new BeaconService (applicationContext , serviceConfig );
108- TrackService .init (applicationContext , APP_KEY , IS_DEBUG , serviceConfig .isCloseBeacon ());
111+ instance = new BeaconService (applicationContext );
112+ instance .isCloseBeacon = isCloseBeacon ;
113+ instance .bridge = bridge ;
114+ TrackService .init (applicationContext , APP_KEY , IS_DEBUG , isCloseBeacon );
109115 }
110116 }
111117 }
@@ -482,7 +488,8 @@ private Map<String, String> parsePerfParams(@Nullable HttpTaskMetrics taskMetric
482488 params .put ("http_full" , String .valueOf (taskMetrics .fullTaskTookTime ()));
483489 params .put ("size" , String .valueOf (taskMetrics .requestBodyByteCount () + taskMetrics .responseBodyByteCount ()));
484490 params .put ("retry_times" , String .valueOf (taskMetrics .getRetryCount ()));
485-
491+ //TODO dathub已经不能编辑上报字段 待升级datahub3.0
492+ // params.put("is_clock_skewed_retry", String.valueOf(taskMetrics.isClockSkewedRetry()));
486493 return params ;
487494 }
488495
@@ -496,6 +503,8 @@ private Map<String, String> parseSimplePerfParams(@Nullable HttpTaskMetrics task
496503 params .put ("took_time" , String .valueOf (taskMetrics .httpTaskFullTime ()));
497504 params .put ("size" , String .valueOf (taskMetrics .requestBodyByteCount () + taskMetrics .responseBodyByteCount ()));
498505 params .put ("retry_times" , String .valueOf (taskMetrics .getRetryCount ()));
506+ //TODO dathub已经不能编辑上报字段 待升级datahub3.0
507+ // params.put("is_clock_skewed_retry", String.valueOf(taskMetrics.isClockSkewedRetry()));
499508 return params ;
500509 }
501510
@@ -534,6 +543,14 @@ private Map<String, String> parseUrlParams(CosXmlRequest request) {
534543 !TextUtils .isEmpty (((ObjectRequest ) request ).getCosPath ())) {
535544 params .put ("request_path" , ((ObjectRequest ) request ).getCosPath ());
536545 }
546+ if (request .getHttpTask () != null ){
547+ if (request .getHttpTask ().request () != null ){
548+ String ua = request .getHttpTask ().request ().header (HttpConstants .Header .USER_AGENT );
549+ if (!TextUtils .isEmpty (ua )) {
550+ params .put ("user_agent" , ua );
551+ }
552+ }
553+ }
537554 return params ;
538555 }
539556
@@ -567,7 +584,7 @@ private String parseEventCode(CosXmlRequest request) {
567584 }
568585
569586 private void report (String eventCode , Map <String , String > params ) {
570- if (config . isCloseBeacon () || !TrackService .isIncludeBeacon ()) return ;
587+ if (isCloseBeacon || !TrackService .isIncludeBeacon ()) return ;
571588 TrackService .getInstance ().track (APP_KEY , eventCode , params );
572589 }
573590
@@ -586,44 +603,44 @@ public void reportError(String source, Exception e) {
586603 report (EVENT_CODE_ERROR , params );
587604 }
588605
589- private Map <String , String > getBaseServiceParams (CosXmlRequest cosXmlRequest , long tookTime , boolean isSuccess ) {
590- Map <String , String > params = getCommonParams ();
591-
592- params .put ("result" , isSuccess ? EVENT_PARAMS_SUCCESS : EVENT_PARAMS_FAILURE );
593- params .put ("took_time" , String .valueOf (tookTime ));
594- params .put ("name" , cosXmlRequest .getClass ().getSimpleName ());
595- params .put ("region" , TextUtils .isEmpty (cosXmlRequest .getRegion ()) ? this .config .getRegion () : cosXmlRequest .getRegion ());
596- params .put ("accelerate" , cosXmlRequest .isSupportAccelerate () ? "Y" : "N" );
597-
598- if (!isSuccess ) {
599- HttpTaskMetrics metrics = cosXmlRequest .getMetrics ();
600- if (metrics != null ) {
601- params .put ("http_dns" , String .valueOf (metrics .dnsLookupTookTime ()));
602- params .put ("http_connect" , String .valueOf (metrics .connectTookTime ()));
603- params .put ("http_secure_connect" , String .valueOf (metrics .secureConnectTookTime ()));
604- params .put ("http_md5" , String .valueOf (metrics .calculateMD5STookTime ()));
605- params .put ("http_sign" , String .valueOf (metrics .signRequestTookTime ()));
606- params .put ("http_read_header" , String .valueOf (metrics .readResponseHeaderTookTime ()));
607- params .put ("http_read_body" , String .valueOf (metrics .readResponseBodyTookTime ()));
608- params .put ("http_write_header" , String .valueOf (metrics .writeRequestHeaderTookTime ()));
609- params .put ("http_write_body" , String .valueOf (metrics .writeRequestBodyTookTime ()));
610- params .put ("http_full" , String .valueOf (metrics .fullTaskTookTime ()));
611- }
612-
613- String host = cosXmlRequest .getRequestHost (this .config );
614- if (host != null ) {
615- params .put ("host" , host );
616- try {
617- List <InetAddress > ips = ConnectionRepository .getInstance ().getDnsRecord (host );
618- params .put ("ips" , flatInetAddressList (ips ));
619- } catch (UnknownHostException e ) {
620- e .printStackTrace ();
621- }
622- }
623- }
624-
625- return params ;
626- }
606+ // private Map<String, String> getBaseServiceParams(CosXmlRequest cosXmlRequest, long tookTime, boolean isSuccess) {
607+ // Map<String, String> params = getCommonParams();
608+ //
609+ // params.put("result", isSuccess ? EVENT_PARAMS_SUCCESS : EVENT_PARAMS_FAILURE);
610+ // params.put("took_time", String.valueOf(tookTime));
611+ // params.put("name", cosXmlRequest.getClass().getSimpleName());
612+ // params.put("region", TextUtils.isEmpty(cosXmlRequest.getRegion()) ? this.config.getRegion() : cosXmlRequest.getRegion());
613+ // params.put("accelerate", cosXmlRequest.isSupportAccelerate() ? "Y" : "N");
614+ //
615+ // if (!isSuccess) {
616+ // HttpTaskMetrics metrics = cosXmlRequest.getMetrics();
617+ // if (metrics != null) {
618+ // params.put("http_dns", String.valueOf(metrics.dnsLookupTookTime()));
619+ // params.put("http_connect", String.valueOf(metrics.connectTookTime()));
620+ // params.put("http_secure_connect", String.valueOf(metrics.secureConnectTookTime()));
621+ // params.put("http_md5", String.valueOf(metrics.calculateMD5STookTime()));
622+ // params.put("http_sign", String.valueOf(metrics.signRequestTookTime()));
623+ // params.put("http_read_header", String.valueOf(metrics.readResponseHeaderTookTime()));
624+ // params.put("http_read_body", String.valueOf(metrics.readResponseBodyTookTime()));
625+ // params.put("http_write_header", String.valueOf(metrics.writeRequestHeaderTookTime()));
626+ // params.put("http_write_body", String.valueOf(metrics.writeRequestBodyTookTime()));
627+ // params.put("http_full", String.valueOf(metrics.fullTaskTookTime()));
628+ // }
629+ //
630+ // String host = cosXmlRequest.getRequestHost(this.config);
631+ // if (host != null) {
632+ // params.put("host", host);
633+ // try {
634+ // List<InetAddress> ips = ConnectionRepository.getInstance().getDnsRecord(host);
635+ // params.put("ips", flatInetAddressList(ips));
636+ // } catch (UnknownHostException e) {
637+ // e.printStackTrace();
638+ // }
639+ // }
640+ // }
641+ //
642+ // return params;
643+ // }
627644
628645 private String flatInetAddressList (@ Nullable List <InetAddress > ips ) {
629646 if (ips == null ) {
@@ -671,14 +688,17 @@ private Map<String, String> getUploadParams(String region, boolean isSuccess) {
671688 * @return 公共参数
672689 */
673690 private Map <String , String > getCommonParams () {
674- if (config . isCloseBeacon () || !TrackService .isIncludeBeacon ()) return new HashMap <>();
691+ if (isCloseBeacon || !TrackService .isIncludeBeacon ()) return new HashMap <>();
675692
676693 Map <String , String > params = new HashMap <>();
677694 BeaconPubParams pubParams = BeaconReport .getInstance ().getCommonParams (applicationContext );
678695 params .put ("boundle_id" , pubParams .getBoundleId ());
679696 params .put ("network_type" , pubParams .getNetworkType ());
680697 params .put ("cossdk_version" , com .tencent .cos .xml .base .BuildConfig .VERSION_NAME );
681698 params .put ("cossdk_version_code" , String .valueOf (com .tencent .cos .xml .base .BuildConfig .VERSION_CODE ));
699+ if (!TextUtils .isEmpty (bridge )) {
700+ params .put ("bridge" , bridge );
701+ }
682702 return params ;
683703 }
684704
0 commit comments