github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/api/GetApiHistory.go (about) 1 package api 2 3 import ( 4 "bytes" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 8 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 9 ) 10 11 type ListHistoryOpts struct { 12 Offset int64 `q:"offset"` 13 Limit int `q:"limit"` 14 EnvID string `q:"env_id"` 15 EnvName string `q:"env_name"` 16 } 17 18 func GetHistory(client *golangsdk.ServiceClient, gatewayID, apiID string, opts ListHistoryOpts) ([]VersionResp, error) { 19 url, err := golangsdk.NewURLBuilder(). 20 WithEndpoints("apigw", "instances", gatewayID, "apis", "publish", apiID). 21 WithQueryParams(&opts).Build() 22 if err != nil { 23 return nil, err 24 } 25 pages, err := pagination.Pager{ 26 Client: client, 27 InitialURL: client.ServiceURL(url.String()), 28 CreatePage: func(r pagination.NewPageResult) pagination.NewPage { 29 return VersionPage{NewSinglePageBase: pagination.NewSinglePageBase{NewPageResult: r}} 30 }, 31 }.NewAllPages() 32 33 if err != nil { 34 return nil, err 35 } 36 return ExtractVersions(pages) 37 } 38 39 type VersionPage struct { 40 pagination.NewSinglePageBase 41 } 42 43 func ExtractVersions(r pagination.NewPage) ([]VersionResp, error) { 44 var s struct { 45 Versions []VersionResp `json:"api_versions"` 46 } 47 err := extract.Into(bytes.NewReader((r.(VersionPage)).Body), &s) 48 return s.Versions, err 49 } 50 51 type VersionResp struct { 52 VersionID string `json:"version_id"` 53 Version string `json:"version_no"` 54 ApiID string `json:"api_id"` 55 EnvID string `json:"env_id"` 56 EnvName string `json:"env_name"` 57 Description string `json:"remark"` 58 PublishTime string `json:"publish_time"` 59 Status int `json:"status"` 60 }