60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/sacloud/libsacloud/sacloud"
|
||
|
)
|
||
|
|
||
|
// CouponAPI クーポン情報API
|
||
|
type CouponAPI struct {
|
||
|
*baseAPI
|
||
|
}
|
||
|
|
||
|
// NewCouponAPI クーポン情報API作成
|
||
|
func NewCouponAPI(client *Client) *CouponAPI {
|
||
|
return &CouponAPI{
|
||
|
&baseAPI{
|
||
|
client: client,
|
||
|
apiRootSuffix: sakuraBillingAPIRootSuffix,
|
||
|
FuncGetResourceURL: func() string {
|
||
|
return "coupon"
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// CouponResponse クーポン情報レスポンス
|
||
|
type CouponResponse struct {
|
||
|
*sacloud.ResultFlagValue
|
||
|
// AllCount 件数
|
||
|
AllCount int `json:",omitempty"`
|
||
|
// CountPerPage ページあたり件数
|
||
|
CountPerPage int `json:",omitempty"`
|
||
|
// Page 現在のページ番号
|
||
|
Page int `json:",omitempty"`
|
||
|
// Coupons クーポン情報 リスト
|
||
|
Coupons []*sacloud.Coupon
|
||
|
}
|
||
|
|
||
|
// Find クーポン情報 全件取得
|
||
|
func (api *CouponAPI) Find() ([]*sacloud.Coupon, error) {
|
||
|
authStatus, err := api.client.AuthStatus.Read()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
accountID := authStatus.Account.GetStrID()
|
||
|
|
||
|
uri := fmt.Sprintf("%s/%s", api.getResourceURL(), accountID)
|
||
|
data, err := api.client.newRequest("GET", uri, nil)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
var res CouponResponse
|
||
|
if err := json.Unmarshal(data, &res); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return res.Coupons, nil
|
||
|
}
|