@@ -18,11 +18,13 @@ package v1_test
18
18
import (
19
19
"context"
20
20
"fmt"
21
+ "net/http"
21
22
"os"
22
23
"time"
23
24
24
25
"github.com/prometheus/client_golang/api"
25
26
v1 "github.com/prometheus/client_golang/api/prometheus/v1"
27
+ "github.com/prometheus/common/config"
26
28
)
27
29
28
30
func ExampleAPI_query () {
@@ -76,6 +78,118 @@ func ExampleAPI_queryRange() {
76
78
fmt .Printf ("Result:\n %v\n " , result )
77
79
}
78
80
81
+ type userAgentRoundTripper struct {
82
+ name string
83
+ rt http.RoundTripper
84
+ }
85
+
86
+ // RoundTrip implements the http.RoundTripper interface.
87
+ func (u userAgentRoundTripper ) RoundTrip (r * http.Request ) (* http.Response , error ) {
88
+ if r .UserAgent () == "" {
89
+ // The specification of http.RoundTripper says that it shouldn't mutate
90
+ // the request so make a copy of req.Header since this is all that is
91
+ // modified.
92
+ r2 := new (http.Request )
93
+ * r2 = * r
94
+ r2 .Header = make (http.Header )
95
+ for k , s := range r .Header {
96
+ r2 .Header [k ] = s
97
+ }
98
+ r2 .Header .Set ("User-Agent" , u .name )
99
+ r = r2
100
+ }
101
+ return u .rt .RoundTrip (r )
102
+ }
103
+
104
+ func ExampleAPI_queryRangeWithUserAgent () {
105
+ client , err := api .NewClient (api.Config {
106
+ Address : "http://demo.robustperception.io:9090" ,
107
+ RoundTripper : userAgentRoundTripper {name : "Client-Golang" , rt : api .DefaultRoundTripper },
108
+ })
109
+ if err != nil {
110
+ fmt .Printf ("Error creating client: %v\n " , err )
111
+ os .Exit (1 )
112
+ }
113
+
114
+ v1api := v1 .NewAPI (client )
115
+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
116
+ defer cancel ()
117
+ r := v1.Range {
118
+ Start : time .Now ().Add (- time .Hour ),
119
+ End : time .Now (),
120
+ Step : time .Minute ,
121
+ }
122
+ result , warnings , err := v1api .QueryRange (ctx , "rate(prometheus_tsdb_head_samples_appended_total[5m])" , r )
123
+ if err != nil {
124
+ fmt .Printf ("Error querying Prometheus: %v\n " , err )
125
+ os .Exit (1 )
126
+ }
127
+ if len (warnings ) > 0 {
128
+ fmt .Printf ("Warnings: %v\n " , warnings )
129
+ }
130
+ fmt .Printf ("Result:\n %v\n " , result )
131
+ }
132
+
133
+ func ExampleAPI_queryRangeWithBasicAuth () {
134
+ client , err := api .NewClient (api.Config {
135
+ Address : "http://demo.robustperception.io:9090" ,
136
+ // We can use amazing github.com/prometheus/common/config helper!
137
+ RoundTripper : config .NewBasicAuthRoundTripper ("me" , "defintely_me" , "" , api .DefaultRoundTripper ),
138
+ })
139
+ if err != nil {
140
+ fmt .Printf ("Error creating client: %v\n " , err )
141
+ os .Exit (1 )
142
+ }
143
+
144
+ v1api := v1 .NewAPI (client )
145
+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
146
+ defer cancel ()
147
+ r := v1.Range {
148
+ Start : time .Now ().Add (- time .Hour ),
149
+ End : time .Now (),
150
+ Step : time .Minute ,
151
+ }
152
+ result , warnings , err := v1api .QueryRange (ctx , "rate(prometheus_tsdb_head_samples_appended_total[5m])" , r )
153
+ if err != nil {
154
+ fmt .Printf ("Error querying Prometheus: %v\n " , err )
155
+ os .Exit (1 )
156
+ }
157
+ if len (warnings ) > 0 {
158
+ fmt .Printf ("Warnings: %v\n " , warnings )
159
+ }
160
+ fmt .Printf ("Result:\n %v\n " , result )
161
+ }
162
+
163
+ func ExampleAPI_queryRangeWithAuthBearerToken () {
164
+ client , err := api .NewClient (api.Config {
165
+ Address : "http://demo.robustperception.io:9090" ,
166
+ // We can use amazing github.com/prometheus/common/config helper!
167
+ RoundTripper : config .NewBearerAuthRoundTripper ("secret_token" , api .DefaultRoundTripper ),
168
+ })
169
+ if err != nil {
170
+ fmt .Printf ("Error creating client: %v\n " , err )
171
+ os .Exit (1 )
172
+ }
173
+
174
+ v1api := v1 .NewAPI (client )
175
+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
176
+ defer cancel ()
177
+ r := v1.Range {
178
+ Start : time .Now ().Add (- time .Hour ),
179
+ End : time .Now (),
180
+ Step : time .Minute ,
181
+ }
182
+ result , warnings , err := v1api .QueryRange (ctx , "rate(prometheus_tsdb_head_samples_appended_total[5m])" , r )
183
+ if err != nil {
184
+ fmt .Printf ("Error querying Prometheus: %v\n " , err )
185
+ os .Exit (1 )
186
+ }
187
+ if len (warnings ) > 0 {
188
+ fmt .Printf ("Warnings: %v\n " , warnings )
189
+ }
190
+ fmt .Printf ("Result:\n %v\n " , result )
191
+ }
192
+
79
193
func ExampleAPI_series () {
80
194
client , err := api .NewClient (api.Config {
81
195
Address : "http://demo.robustperception.io:9090" ,
0 commit comments