1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package domains
- import (
- "devel.mephi.ru/iacherepanov/openstack-gophercloud"
- "devel.mephi.ru/iacherepanov/openstack-gophercloud/pagination"
- )
- // A Domain is a collection of projects, users, and roles.
- type Domain struct {
- // Description is the description of the Domain.
- Description string `json:"description"`
- // Enabled is whether or not the domain is enabled.
- Enabled bool `json:"enabled"`
- // ID is the unique ID of the domain.
- ID string `json:"id"`
- // Links contains referencing links to the domain.
- Links map[string]interface{} `json:"links"`
- // Name is the name of the domain.
- Name string `json:"name"`
- }
- type domainResult struct {
- gophercloud.Result
- }
- // GetResult is the response from a Get operation. Call its Extract method
- // to interpret it as a Domain.
- type GetResult struct {
- domainResult
- }
- // CreateResult is the response from a Create operation. Call its Extract method
- // to interpret it as a Domain.
- type CreateResult struct {
- domainResult
- }
- // DeleteResult is the response from a Delete operation. Call its ExtractErr to
- // determine if the request succeeded or failed.
- type DeleteResult struct {
- gophercloud.ErrResult
- }
- // UpdateResult is the result of an Update request. Call its Extract method to
- // interpret it as a Domain.
- type UpdateResult struct {
- domainResult
- }
- // DomainPage is a single page of Domain results.
- type DomainPage struct {
- pagination.LinkedPageBase
- }
- // IsEmpty determines whether or not a page of Domains contains any results.
- func (r DomainPage) IsEmpty() (bool, error) {
- domains, err := ExtractDomains(r)
- return len(domains) == 0, err
- }
- // NextPageURL extracts the "next" link from the links section of the result.
- func (r DomainPage) NextPageURL() (string, error) {
- var s struct {
- Links struct {
- Next string `json:"next"`
- Previous string `json:"previous"`
- } `json:"links"`
- }
- err := r.ExtractInto(&s)
- if err != nil {
- return "", err
- }
- return s.Links.Next, err
- }
- // ExtractDomains returns a slice of Domains contained in a single page of
- // results.
- func ExtractDomains(r pagination.Page) ([]Domain, error) {
- var s struct {
- Domains []Domain `json:"domains"`
- }
- err := (r.(DomainPage)).ExtractInto(&s)
- return s.Domains, err
- }
- // Extract interprets any domainResults as a Domain.
- func (r domainResult) Extract() (*Domain, error) {
- var s struct {
- Domain *Domain `json:"domain"`
- }
- err := r.ExtractInto(&s)
- return s.Domain, err
- }
|