123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package packngo
- const planBasePath = "/plans"
- // PlanService interface defines available plan methods
- type PlanService interface {
- List() ([]Plan, *Response, error)
- }
- type planRoot struct {
- Plans []Plan `json:"plans"`
- }
- // Plan represents a Packet service plan
- type Plan struct {
- ID string `json:"id"`
- Slug string `json:"slug,omitempty"`
- Name string `json:"name,omitempty"`
- Description string `json:"description,omitempty"`
- Line string `json:"line,omitempty"`
- Specs *Specs `json:"specs,omitempty"`
- Pricing *Pricing `json:"pricing,omitempty"`
- }
- func (p Plan) String() string {
- return Stringify(p)
- }
- // Specs - the server specs for a plan
- type Specs struct {
- Cpus []*Cpus `json:"cpus,omitempty"`
- Memory *Memory `json:"memory,omitempty"`
- Drives []*Drives `json:"drives,omitempty"`
- Nics []*Nics `json:"nics,omitempty"`
- Features *Features `json:"features,omitempty"`
- }
- func (s Specs) String() string {
- return Stringify(s)
- }
- // Cpus - the CPU config details for specs on a plan
- type Cpus struct {
- Count int `json:"count,omitempty"`
- Type string `json:"type,omitempty"`
- }
- func (c Cpus) String() string {
- return Stringify(c)
- }
- // Memory - the RAM config details for specs on a plan
- type Memory struct {
- Total string `json:"total,omitempty"`
- }
- func (m Memory) String() string {
- return Stringify(m)
- }
- // Drives - the storage config details for specs on a plan
- type Drives struct {
- Count int `json:"count,omitempty"`
- Size string `json:"size,omitempty"`
- Type string `json:"type,omitempty"`
- }
- func (d Drives) String() string {
- return Stringify(d)
- }
- // Nics - the network hardware details for specs on a plan
- type Nics struct {
- Count int `json:"count,omitempty"`
- Type string `json:"type,omitempty"`
- }
- func (n Nics) String() string {
- return Stringify(n)
- }
- // Features - other features in the specs for a plan
- type Features struct {
- Raid bool `json:"raid,omitempty"`
- Txt bool `json:"txt,omitempty"`
- }
- func (f Features) String() string {
- return Stringify(f)
- }
- // Pricing - the pricing options on a plan
- type Pricing struct {
- Hourly float32 `json:"hourly,omitempty"`
- Monthly float32 `json:"monthly,omitempty"`
- }
- func (p Pricing) String() string {
- return Stringify(p)
- }
- // PlanServiceOp implements PlanService
- type PlanServiceOp struct {
- client *Client
- }
- // List method returns all available plans
- func (s *PlanServiceOp) List() ([]Plan, *Response, error) {
- req, err := s.client.NewRequest("GET", planBasePath, nil)
- if err != nil {
- return nil, nil, err
- }
- root := new(planRoot)
- resp, err := s.client.Do(req, root)
- if err != nil {
- return nil, resp, err
- }
- return root.Plans, resp, err
- }
|