github.com/aiven/aiven-go-client@v1.36.0/service_types.go (about)

     1  package aiven
     2  
     3  type (
     4  	// GetServicePlanResponse Aiven API request
     5  	// GET https://api.aiven.io/v1/project/<project>/service-types/<service_type>/plans/<service_plan>
     6  	GetServicePlanResponse struct {
     7  		APIResponse
     8  		DiskSpaceCapMB  int `json:"disk_space_cap_mb"`
     9  		DiskSpaceMB     int `json:"disk_space_mb"`
    10  		DiskSpaceStepMB int `json:"disk_space_step_mb"`
    11  		//TODO: remaining fields
    12  	}
    13  
    14  	// GetServicePlanPricingResponse Aiven API request
    15  	// GET https://api.aiven.io/v1/project/<project>/pricing/service-types/<service_type>/plans/<service_plan>/cloud/<cloud>
    16  	GetServicePlanPricingResponse struct {
    17  		APIResponse
    18  		BasePriceUSD           string `json:"base_price_usd"`
    19  		ExtraDiskPricePerGBUSD string `json:"extra_disk_price_per_gb_usd"`
    20  		//TODO: remaining fields
    21  	}
    22  
    23  	// ServiceTypesHandler is the client that interacts with the Service Types API endpoints on Aiven.
    24  	ServiceTypesHandler struct {
    25  		client *Client
    26  	}
    27  )
    28  
    29  // Get fetches the service plan from Aiven
    30  func (h *ServiceTypesHandler) GetPlan(project, serviceType, servicePlan string) (*GetServicePlanResponse, error) {
    31  	path := buildPath("project", project, "service-types", serviceType, "plans", servicePlan)
    32  	bts, err := h.client.doGetRequest(path, nil)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	var r GetServicePlanResponse
    38  	errR := checkAPIResponse(bts, &r)
    39  
    40  	return &r, errR
    41  }
    42  
    43  // Get fetches the pricing for the service plan from Aiven
    44  func (h *ServiceTypesHandler) GetPlanPricing(project, serviceType, servicePlan, cloudName string) (*GetServicePlanPricingResponse, error) {
    45  	path := buildPath("project", project, "pricing", "service-types", serviceType, "plans", servicePlan, "clouds", cloudName)
    46  	bts, err := h.client.doGetRequest(path, nil)
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  
    51  	var r GetServicePlanPricingResponse
    52  	errR := checkAPIResponse(bts, &r)
    53  
    54  	return &r, errR
    55  }