github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/swr/v2/domains/results.go (about)

     1  package domains
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  	"github.com/chnsz/golangsdk/pagination"
     6  )
     7  
     8  type CreateResult struct {
     9  	golangsdk.ErrResult
    10  }
    11  
    12  type GetResult struct {
    13  	golangsdk.Result
    14  }
    15  
    16  type AccessDomain struct {
    17  	Organization string `json:"namespace"`
    18  	Repository   string `json:"repository"`
    19  	// Name
    20  	AccessDomain string `json:"access_domain"`
    21  	Permit       string `json:"permit"`
    22  	Deadline     string `json:"deadline"`
    23  	Description  string `json:"description"`
    24  	CreatorID    string `json:"creator_id"`
    25  	CreatorName  string `json:"creator_name"`
    26  	Created      string `json:"created"`
    27  	Updated      string `json:"updated"`
    28  	// Status. `true`: valid `false`: expired
    29  	Status bool `json:"status"`
    30  }
    31  
    32  func (r GetResult) Extract() (*AccessDomain, error) {
    33  	// existance check
    34  	var existingDomain struct {
    35  		Exist bool `json:"exist"`
    36  	}
    37  	if err := r.ExtractIntoStructPtr(&existingDomain, ""); err != nil {
    38  		return nil, err
    39  	}
    40  	if !existingDomain.Exist {
    41  		err404 := golangsdk.ErrDefault404{}
    42  		err404.DefaultErrString = "domain does not exist"
    43  		return nil, err404
    44  	}
    45  
    46  	// actual extract
    47  	domain := new(AccessDomain)
    48  	if err := r.ExtractIntoStructPtr(domain, ""); err != nil {
    49  		return nil, err
    50  	}
    51  
    52  	return domain, nil
    53  }
    54  
    55  type DeleteResult struct {
    56  	golangsdk.ErrResult
    57  }
    58  
    59  type UpdateResult struct {
    60  	golangsdk.ErrResult
    61  }
    62  
    63  type AccessDomainPage struct {
    64  	pagination.SinglePageBase
    65  }
    66  
    67  func ExtractAccessDomains(p pagination.Page) ([]AccessDomain, error) {
    68  	var domains []AccessDomain
    69  	err := p.(AccessDomainPage).ExtractIntoSlicePtr(&domains, "")
    70  	return domains, err
    71  }