118 lines
4.1 KiB
Go
118 lines
4.1 KiB
Go
package proxygonanza
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
APIBaseURL = "https://proxybonanza.com/api/v1/"
|
|
packages = "userpackages.json"
|
|
authips = "authips.json"
|
|
)
|
|
|
|
// Package contains what we know about a particular proxybonanza package.
|
|
type Package struct {
|
|
ID int
|
|
AuthIPs []AuthIP
|
|
AllTimeStats PackageStatistics
|
|
HourlyStats map[time.Time]PackageStatistics
|
|
}
|
|
|
|
// APIClient is a client for ProxyBonanza.com.
|
|
type APIClient struct {
|
|
Key string
|
|
KnownPackages map[int]PackageDetails
|
|
Debug bool
|
|
c *http.Client
|
|
}
|
|
|
|
// PackageResponse represents an API response from proxybonanza.com containing proxy package information.
|
|
type PackageResponse struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
PackageData []UserPackage `json:"data"`
|
|
Pages pagination `json:"pagination"`
|
|
}
|
|
|
|
// AuthIPResponse represents an API response from proxybonanza.com.
|
|
type AuthIPResponse struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
AuthIPData []AuthIP `json:"data"`
|
|
Pages pagination `json:"pagination"`
|
|
}
|
|
|
|
// AddAuthIPResponse represents an API response from proxybonanza.com.
|
|
type AddAuthIPResponse struct {
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
Data struct {
|
|
ID int `json:"id"`
|
|
} `json:"data"`
|
|
}
|
|
|
|
// DelAuthIPResponse represents an API response from proxybonanza.com.
|
|
type DelAuthIPResponse struct {
|
|
Success bool `json:"success"`
|
|
}
|
|
|
|
// PackageDetails represents an API response from proxybonanza.com containing proxy package information.
|
|
type PackageDetails struct {
|
|
Name string `json:"name"`
|
|
Bandwidth int64 `json:"bandwidth"`
|
|
Price interface{} `json:"price"`
|
|
HowmanyIPs int `json:"howmany_ips"`
|
|
PricePerGig interface{} `json:"price_per_gig"`
|
|
PackageType string `json:"package_type"`
|
|
HowmanyAuthips int `json:"howmany_authips"`
|
|
IPType int `json:"ip_type"`
|
|
PriceUserFormatted string `json:"price_user_formatted"`
|
|
}
|
|
|
|
type pagination struct {
|
|
PageCount int `json:"page_count"`
|
|
CurrentPage int `json:"current_page"`
|
|
HasNextPage bool `json:"has_next_page"`
|
|
HasPrevPage bool `json:"has_prev_page"`
|
|
Count int `json:"count"`
|
|
Limit interface{} `json:"limit"`
|
|
}
|
|
|
|
// UserPackage represents a proxy package purchased from proxybonanza.com.
|
|
type UserPackage struct {
|
|
ID int `json:"id"`
|
|
CustomName interface{} `json:"custom_name"`
|
|
Login string `json:"login"`
|
|
Password string `json:"password"`
|
|
Expires time.Time `json:"expires"`
|
|
Bandwidth int64 `json:"bandwidth"`
|
|
LastIPChange time.Time `json:"last_ip_change"`
|
|
LowBanwidthNotificationPercent int `json:"low_banwidth_notification_percent"`
|
|
Package PackageDetails `json:"package"`
|
|
BandwidthGb float64 `json:"bandwidth_gb"`
|
|
AdditionalBandwidthGb float64 `json:"additional_bandwidth_gb"`
|
|
BandwidthPercentLeftHuman string `json:"bandwidth_percent_left_human"`
|
|
ExpirationDateHuman string `json:"expiration_date_human"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// AuthIP is an IP address authorized to use the proxies in the related package.
|
|
type AuthIP struct {
|
|
UserpackageID int `json:"userpackage_id"`
|
|
ID interface{} `json:"id"`
|
|
IP string `json:"ip"`
|
|
}
|
|
|
|
// PackageStatistics represents the statistics for the related proxy package.
|
|
type PackageStatistics struct {
|
|
UserpackageID int `json:"userpackage_id"`
|
|
Date string `json:"date"`
|
|
BndHTTP int `json:"bnd_http"`
|
|
ConnHTTP int `json:"conn_http"`
|
|
BndSocks int `json:"bnd_socks"`
|
|
ConnSocks int `json:"conn_socks"`
|
|
BndTotal int `json:"bnd_total"`
|
|
ConnTotal int `json:"conn_total"`
|
|
}
|