Passed
Push — master ( bdb52f...e5b356 )
by
unknown
01:40 queued 13s
created

meterexporters.NewGCP   B

Complexity

Conditions 7

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 12
nop 1
dl 0
loc 20
rs 8
c 0
b 0
f 0
1
package meterexporters
2
3
import (
4
	"os"
5
6
	mexporter "github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"
7
	"go.opentelemetry.io/otel/sdk/metric"
8
)
9
10
// NewGCP creates a new Google Cloud metric exporter with optional headers for credentials and project ID.
11
func NewGCP(headers map[string]string) (metric.Exporter, error) {
12
13
	if credentials, exists := headers["google-application-credentials"]; exists && credentials != "" {
14
		os.Setenv("GOOGLE_APPLICATION_CREDENTIALS", credentials)
15
	}
16
17
	if projectID, exists := headers["google-cloud-project"]; exists && projectID != "" {
18
		exporter, err := mexporter.New(mexporter.WithProjectID(projectID))
19
		if err != nil {
20
			return nil, err
21
		}
22
		return exporter, nil
23
	}
24
25
	exporter, err := mexporter.New()
26
	if err != nil {
27
		return nil, err
28
	}
29
30
	return exporter, nil
31
}
32