...
1
16
17 package openapi
18
19 import (
20 "context"
21 "net/url"
22
23 "k8s.io/kube-openapi/pkg/handler3"
24 )
25
26 const ContentTypeOpenAPIV3PB = "application/com.github.proto-openapi.spec.v3@v1.0+protobuf"
27
28 type GroupVersion interface {
29 Schema(contentType string) ([]byte, error)
30 }
31
32 type groupversion struct {
33 client *client
34 item handler3.OpenAPIV3DiscoveryGroupVersion
35 useClientPrefix bool
36 }
37
38 func newGroupVersion(client *client, item handler3.OpenAPIV3DiscoveryGroupVersion, useClientPrefix bool) *groupversion {
39 return &groupversion{client: client, item: item, useClientPrefix: useClientPrefix}
40 }
41
42 func (g *groupversion) Schema(contentType string) ([]byte, error) {
43 if !g.useClientPrefix {
44 return g.client.restClient.Get().
45 RequestURI(g.item.ServerRelativeURL).
46 SetHeader("Accept", contentType).
47 Do(context.TODO()).
48 Raw()
49 }
50
51 locator, err := url.Parse(g.item.ServerRelativeURL)
52 if err != nil {
53 return nil, err
54 }
55
56 path := g.client.restClient.Get().
57 AbsPath(locator.Path).
58 SetHeader("Accept", contentType)
59
60
61
62
63 for k, value := range locator.Query() {
64 for _, v := range value {
65 path.Param(k, v)
66 }
67 }
68
69 return path.Do(context.TODO()).Raw()
70 }
71
View as plain text