tuyacloud

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2020 License: MIT Imports: 15 Imported by: 0

README

tuyacloud

PkgGoDev Build Status Go Report Card GitHub license Release GitHub issues

unofficial Tuya Cloud API SDK

Status

Project is under active development, API may changes in futures.

Feature

  • Go-style API design.
  • Full Feature support.
    • Authorization Management
    • User Management
    • Pair Device Management
    • Device Control
    • Device Timing Management
    • Smart Home Management
    • Scene Automation
    • Data Service
    • Weather Service
    • Device Management
    • OTA
    • Device Group
    • Universal Infrared
    • Smart Door Lock
    • Body Fat Scale
    • Sleep pace
    • IPC

Install

go get github.com/yunjuiot/tuyacloud

Contribute

Use issues for everything

  • For a small change, just send a PR.
  • For bigger changes open an issue for discussion before sending a PR.
  • PR should have:
    • Test case
    • Documentation
    • Example (If it makes sense)
  • You can also contribute by:
    • Reporting issues
    • Suggesting new features or enhancements
    • Improve/fix documentation

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HmacSha256

func HmacSha256(data, key string) string

HmacSha256 for HMAC-SHA-256 sign.

func Timestamp

func Timestamp() string

Timestamp returns timestamp format for randomize.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(endpoint Endpoint, accessID, accessKey string, opts ...Option) (c *Client)

NewClient returns API client.

func (*Client) Do

func (c *Client) Do(r *http.Request) (res *http.Response, err error)

func (*Client) DoAndParse

func (c *Client) DoAndParse(r Request, resp interface{}) (err error)

func (*Client) Parse

func (c *Client) Parse(res *http.Response, resp interface{}) error

func (*Client) PlainSign

func (c *Client) PlainSign(timestamp string) string

func (*Client) Request

func (c *Client) Request(r Request) (req *http.Request, err error)

func (*Client) Token

func (c *Client) Token() (token string, err error)

func (*Client) TokenSign

func (c *Client) TokenSign(token, timestamp string) string

type Endpoint

type Endpoint string
const (
	// APIEndpointCN prefer to China.
	APIEndpointCN Endpoint = "https://openapi.tuyacn.com"
	// APIEndpointUS prefer to America.
	APIEndpointUS Endpoint = "https://openapi.tuyaus.com"
	// APIEndpointEU prefer to Europe.
	APIEndpointEU Endpoint = "https://openapi.tuyaeu.com"
	// APIEndpointIN prefer to India.
	APIEndpointIN Endpoint = "https://openapi.tuyain.com"
)

type Error

type Error struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

func (*Error) Error

func (e *Error) Error() string

type HTTPClient

type HTTPClient interface {
	Do(*http.Request) (*http.Response, error)
}

HTTPClient interface.

type MemoryStore

type MemoryStore struct {
	// contains filtered or unexported fields
}

func (*MemoryStore) Refresh

func (s *MemoryStore) Refresh(c *Client) (err error)

func (*MemoryStore) Token

func (s *MemoryStore) Token() string

type Option

type Option func(o *options)

func WithHTTPClient

func WithHTTPClient(c HTTPClient) Option

WithHTTPClient setup HTTPClient

func WithLogger

func WithLogger(l log.Logger) Option

WithLogger setup log.Logger interface.

func WithTokenStore

func WithTokenStore(s TokenStorage) Option

WithTokenStore setup token storage interface.

type Request

type Request interface {
	Method() string
	URL() string
}

Request for API call.

type RequestBody

type RequestBody interface {
	Body() interface{}
}

type Response

type Response struct {
	Success   bool            `json:"success"`
	Code      int             `json:"code"`
	Msg       string          `json:"msg"`
	Timestamp int64           `json:"t"`
	Result    json.RawMessage `json:"result"`
}

type TokenRequest

type TokenRequest struct {
	// contains filtered or unexported fields
}

func (*TokenRequest) Method

func (t *TokenRequest) Method() string

func (*TokenRequest) SetRefresh

func (t *TokenRequest) SetRefresh(token string)

func (*TokenRequest) URL added in v0.1.1

func (t *TokenRequest) URL() string

type TokenResponse

type TokenResponse struct {
	ExpireTime   int    `json:"expire_time"`
	UID          string `json:"uid"`
	AccessToken  string `json:"access_token"`
	RefreshToken string `json:"refresh_token"`
}

type TokenStorage

type TokenStorage interface {
	Token() string
	Refresh(c *Client) error
}

TokenStorage stores token.

Directories

Path Synopsis
Package automation for scene automation.
Package automation for scene automation.
catalog
bodyfat
Package bodyfat for Body Fat Scale
Package bodyfat for Body Fat Scale
infrared
Package infrared for Universal Infrared
Package infrared for Universal Infrared
ipc
Package ipc for IPC
Package ipc for IPC
sleep
Package sleep for Sleep pace
Package sleep for Sleep pace
smartlock
Package smartlock for Smart Door Lock interface.
Package smartlock for Smart Door Lock interface.
Package data for Data Service.
Package data for Data Service.
Package device implements Device Management API interface.
Package device implements Device Management API interface.
Package devicectl for Device Control
Package devicectl for Device Control
Package group for Device Group
Package group for Device Group
Package ota for OTA upgrade.
Package ota for OTA upgrade.
Package pairing for Device Pairing.
Package pairing for Device Pairing.
Package smarthome for Smart Home Management
Package smarthome for Smart Home Management
helpers
Package helpers is a generated GoMock package.
Package helpers is a generated GoMock package.
Package timing for Device Timing Management
Package timing for Device Timing Management
Package user for User Management
Package user for User Management
Package weather for Weather Service.
Package weather for Weather Service.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL