Skip to content
Permalink
Browse files
Avoid embedded structs by generating new struct types (#106)
These changes are based on PR #104 contributed by @cezarsa! The result it the same, but the implementation is slightly different.

Thank you very much for your PR @cezarsa!

Closes #104
  • Loading branch information
Sander van Harmelen committed Dec 16, 2018
1 parent bd1fab8 commit 433f6cca248a8ac81ab25ea8e45c332b3d8466a9
Show file tree
Hide file tree
Showing 29 changed files with 9,633 additions and 8,838 deletions.
@@ -73,25 +73,29 @@ type ListApisResponse struct {
}

type Api struct {
Description string `json:"description"`
Isasync bool `json:"isasync"`
Name string `json:"name"`
Params []ApiParams `json:"params"`
Related string `json:"related"`
Response []ApiResponse `json:"response"`
Since string `json:"since"`
Type string `json:"type"`
}

type ApiResponse struct {
Description string `json:"description"`
Name string `json:"name"`
Response []interface{} `json:"response"`
Type string `json:"type"`
}

type ApiParams struct {
Description string `json:"description"`
Isasync bool `json:"isasync"`
Length int `json:"length"`
Name string `json:"name"`
Params []struct {
Description string `json:"description"`
Length int `json:"length"`
Name string `json:"name"`
Related string `json:"related"`
Required bool `json:"required"`
Since string `json:"since"`
Type string `json:"type"`
} `json:"params"`
Related string `json:"related"`
Response []struct {
Description string `json:"description"`
Name string `json:"name"`
Response []interface{} `json:"response"`
Type string `json:"type"`
} `json:"response"`
Since string `json:"since"`
Type string `json:"type"`
Related string `json:"related"`
Required bool `json:"required"`
Since string `json:"since"`
Type string `json:"type"`
}

Large diffs are not rendered by default.

@@ -182,48 +182,50 @@ func (s *AddressService) AssociateIpAddress(p *AssociateIpAddressParams) (*Assoc
}

type AssociateIpAddressResponse struct {
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
} `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []AssociateIpAddressResponseTags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}

type AssociateIpAddressResponseTags struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
}

type DisassociateIpAddressParams struct {
@@ -636,47 +638,49 @@ type ListPublicIpAddressesResponse struct {
}

type PublicIpAddress struct {
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
} `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []PublicIpAddressTags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}

type PublicIpAddressTags struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
}

type UpdateIpAddressParams struct {
@@ -770,46 +774,48 @@ func (s *AddressService) UpdateIpAddress(p *UpdateIpAddressParams) (*UpdateIpAdd
}

type UpdateIpAddressResponse struct {
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
} `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []UpdateIpAddressResponseTags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}

type UpdateIpAddressResponseTags struct {
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
Value string `json:"value"`
}

0 comments on commit 433f6cc

Please sign in to comment.