Sources/NetworkDiagnosisSwift/NetworkDiagnosisHelper.swift (46 lines of code) (raw):

// // Copyright 2023 aliyun-sls Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import Foundation #if canImport(OpenTelemetryApi) && canImport(OpenTelemetrySdk) && canImport(AliyunLogOtlpExporter) import OpenTelemetryApi import OpenTelemetrySdk import AliyunLogOtlpExporter #endif public class NetworkDiagnosisHelper : NSObject { static var endpoint: String? static var project: String? static var logstore: String? @objc public static func updateWorkspace(_ endpoint: String?, project: String?, logstore: String?) { self.endpoint = endpoint self.project = project self.logstore = logstore } #if canImport(OpenTelemetryApi) && canImport(OpenTelemetrySdk) && canImport(AliyunLogOtlpExporter) @objc public static func exporter() -> OtlpSLSSpanExporter { return OtlpSLSSpanExporter.builder("ipa") .setEndpoint(endpoint ?? "") .setProject(project ?? "") .setLogstore("ipa-\(logstore ?? "")-raw") .build() } #else @objc public static func exporter() -> NSObject? { return nil } #endif #if canImport(OpenTelemetryApi) && canImport(OpenTelemetrySdk) && canImport(AliyunLogOtlpExporter) public static func setupTrace(_ builder: inout TracerProviderBuilder) { let exporter = OtlpSLSSpanExporter.builder("ipa") .setEndpoint(endpoint ?? "") .setProject(project ?? "") .setLogstore("ipa-\(logstore ?? "")-raw") .build() let spanProcessor = BatchSpanProcessor(spanExporter: exporter) _ = builder.add(spanProcessor: spanProcessor) } #else public static func setupTrace(_ builder: inout NSObject) { } #endif }