suzuri

package module
v0.0.0-...-c06f8a7 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2019 License: MIT Imports: 9 Imported by: 0

README

SUZURI API v1 for golang

Usage

$ git clone https://github.com/go-numb/go-suzuri.git

func main() {
    // let's get APIKEY at https://suzuri.jp/developer/apps
    // Clientを作る
	c := New(<api_key>)

    // 現在提供されているSUZURI内のProductItemsを取得する
	items, err := c.GetItems()
	if err != nil {
		log.Error(err)
	}

    // NewMaterial() で 制作するtitle, filename, 取得したitemsをmaterialにわたす
    // ここではすべて渡しているが、itemsから必要なものだけ渡すことも可能
	material := c.NewMaterial("testしています", "https://41.media.tumblr.com/QA9JpdgnOc8ov98s1C4S5EjJ_500.jpg", items)

	/* 必要性に応じて
	for i, item := range material.Products {
		material[i].ResizeMode = "contain" or "cover"
	}

	material.Description: "説明文",	
	*/

    // Createにmaterialを渡し、Uploadして商品化する
	if err := c.Create(material); err != nil {
		log.Error(err)
	}


	/*
		# For only text
	*/
	p, err := c.CreateByText("SUZURI 完全に理解した")
	if err != nil {
		log.Error(err)
	}

	fmt.Printf("%+v\n", p)
    
}

Documentation

Index

Constants

View Source
const (
	URI     = "https://suzuri.jp/api"
	VERSION = "v1"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	sync.Mutex

	Limit  int
	Remain int
	Reset  time.Time
}

type Client

type Client struct {
	Key        string
	HTTPClient *http.Client

	// 200/15minutes 2019/08/01現在
	API *API
}

func New

func New(apiKey string) *Client

func (*Client) Create

func (p *Client) Create(params *ParamsForCreate) (*ResponseFromCreate, error)

Create 指定画像で商品群を登録

func (*Client) CreateByText

func (p *Client) CreateByText(text string) (*ResponseFromCreate, error)

CreateByText 指定画像で商品群を登録

func (*Client) GetItems

func (p *Client) GetItems() ([]Item, error)

func (*Client) GetProducts

func (p *Client) GetProducts(userID, itemID, materialID, userName string) (*ResponseFromProducts, error)

GetProducts 自他商品群取得

func (*Client) NewMaterial

func (p *Client) NewMaterial(title, filename string, toribun int, items []Item) *ParamsForCreate

NewMaterial SUZURI提供商品群選択 現行は全選択

type Item

type Item struct {
	ID           int           `json:"id,omitempty"`
	Name         string        `json:"name,omitempty"`
	Angles       []interface{} `json:"angles,omitempty"`
	HumanizeName string        `json:"humanizeName,omitempty"`
	Variants     []struct {
		ID        int  `json:"id,omitempty"`
		Price     int  `json:"price,omitempty"`
		Exemplary bool `json:"exemplary,omitempty"`
		Color     struct {
			ID   int    `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
			Rgb  string `json:"rgb,omitempty"`
		} `json:"color,omitempty"`
		Size struct {
			ID   int    `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
		} `json:"size,omitempty"`
	} `json:"variants,omitempty"`
}

type Items

type Items struct {
	Is []Item `json:"items"`
}

type ParamsForCreate

type ParamsForCreate struct {
	// Required
	Texture string `json:"texture,omitempty"`
	Title   string `json:"title,omitempty"`

	// Options
	Price       int       `json:"price,omitempty"`
	Description string    `json:"description,omitempty"`
	Products    []Product `json:"products,omitempty"`
}

type Product

type Product struct {
	ItemID                 int           `json:"itemId,omitempty"`
	ExemplaryItemVariantID int           `json:"exemplaryItemVariantId,omitempty"`
	Published              bool          `json:"published,omitempty"`
	ResizeMode             string        `json:"resizeMode,omitempty"`
	SubMaterials           []SubMaterial `json:"sub_materials,omitempty"`
}

type ResponseFromCreate

type ResponseFromCreate struct {
	Material struct {
		ID             int       `json:"id,omitempty"`
		Title          string    `json:"title,omitempty"`
		Description    string    `json:"description,omitempty"`
		Price          int       `json:"price,omitempty"`
		Violation      bool      `json:"violation,omitempty"`
		Published      bool      `json:"published,omitempty"`
		PublishedAt    time.Time `json:"publishedAt,omitempty"`
		UploadedAt     time.Time `json:"uploadedAt,omitempty"`
		DominantRgb    string    `json:"dominantRgb,omitempty"`
		OriginalWidth  int       `json:"originalWidth,omitempty"`
		OriginalHeight int       `json:"originalHeight,omitempty"`
		User           struct {
			ID          int    `json:"id,omitempty"`
			Name        string `json:"name,omitempty"`
			DisplayName string `json:"displayName,omitempty"`
			AvatarURL   string `json:"avatarUrl,omitempty"`
		} `json:"user,omitempty"`
	} `json:"material,omitempty"`
	Products []struct {
		ID             int       `json:"id,omitempty"`
		Title          string    `json:"title,omitempty"`
		Published      bool      `json:"published,omitempty"`
		PublishedAt    time.Time `json:"publishedAt,omitempty"`
		CreatedAt      time.Time `json:"createdAt,omitempty"`
		UpdatedAt      time.Time `json:"updatedAt,omitempty"`
		ExamplaryAngle string    `json:"examplaryAngle,omitempty"`
		ImageURL       string    `json:"imageUrl,omitempty"`
		SampleImageURL string    `json:"sampleImageUrl,omitempty"`
		URL            string    `json:"url,omitempty"`
		SampleURL      string    `json:"sampleUrl,omitempty"`
		Item           struct {
			ID           int           `json:"id,omitempty"`
			Name         string        `json:"name,omitempty"`
			Angles       []interface{} `json:"angles,omitempty"`
			HumanizeName string        `json:"humanizeName,omitempty"`
		} `json:"item,omitempty"`
		Material struct {
			ID             int       `json:"id,omitempty"`
			Title          string    `json:"title,omitempty"`
			Description    string    `json:"description,omitempty"`
			Price          int       `json:"price,omitempty"`
			Violation      bool      `json:"violation,omitempty"`
			Published      bool      `json:"published,omitempty"`
			PublishedAt    time.Time `json:"publishedAt,omitempty"`
			UploadedAt     time.Time `json:"uploadedAt,omitempty"`
			DominantRgb    string    `json:"dominantRgb,omitempty"`
			OriginalWidth  int       `json:"originalWidth,omitempty"`
			OriginalHeight int       `json:"originalHeight,omitempty"`
			User           struct {
				ID          int    `json:"id,omitempty"`
				Name        string `json:"name,omitempty"`
				DisplayName string `json:"displayName,omitempty"`
				AvatarURL   string `json:"avatarUrl,omitempty"`
			} `json:"user,omitempty"`
		} `json:"material,omitempty"`
		SampleItemVariant struct {
			ID        int  `json:"id,omitempty"`
			Price     int  `json:"price,omitempty"`
			Exemplary bool `json:"exemplary,omitempty"`
			Color     struct {
				ID   int    `json:"id,omitempty"`
				Name string `json:"name,omitempty"`
				Rgb  string `json:"rgb,omitempty"`
			} `json:"color,omitempty"`
			Size struct {
				ID   int    `json:"id,omitempty"`
				Name string `json:"name,omitempty"`
			} `json:"size,omitempty"`
		} `json:"sampleItemVariant,omitempty"`
	} `json:"products,omitempty"`
}

type ResponseFromProducts

type ResponseFromProducts struct {
	Products []struct {
		ID             int       `json:"id"`
		Title          string    `json:"title"`
		Published      bool      `json:"published"`
		PublishedAt    time.Time `json:"publishedAt"`
		CreatedAt      time.Time `json:"createdAt"`
		UpdatedAt      time.Time `json:"updatedAt"`
		ExamplaryAngle string    `json:"examplaryAngle"`
		ImageURL       string    `json:"imageUrl"`
		SampleImageURL string    `json:"sampleImageUrl"`
		URL            string    `json:"url"`
		SampleURL      string    `json:"sampleUrl"`
		Item           struct {
			ID           int           `json:"id"`
			Name         string        `json:"name"`
			Angles       []interface{} `json:"angles"`
			HumanizeName string        `json:"humanizeName"`
		} `json:"item"`
		Material struct {
			ID             int       `json:"id"`
			Title          string    `json:"title"`
			Description    string    `json:"description"`
			Price          int       `json:"price"`
			Violation      bool      `json:"violation"`
			Published      bool      `json:"published"`
			PublishedAt    time.Time `json:"publishedAt"`
			UploadedAt     time.Time `json:"uploadedAt"`
			DominantRgb    string    `json:"dominantRgb"`
			OriginalWidth  int       `json:"originalWidth"`
			OriginalHeight int       `json:"originalHeight"`
			User           struct {
				ID          int    `json:"id"`
				Name        string `json:"name"`
				DisplayName string `json:"displayName"`
				AvatarURL   string `json:"avatarUrl"`
			} `json:"user"`
		} `json:"material"`
		SampleItemVariant struct {
			ID        int  `json:"id"`
			Price     int  `json:"price"`
			Exemplary bool `json:"exemplary"`
			Color     struct {
				ID   int    `json:"id"`
				Name string `json:"name"`
				Rgb  string `json:"rgb"`
			} `json:"color"`
			Size struct {
				ID   int    `json:"id"`
				Name string `json:"name"`
			} `json:"size"`
		} `json:"sampleItemVariant"`
	} `json:"products"`
	Meta struct {
		HasNext bool `json:"hasNext"`
	} `json:"meta"`
}

type SubMaterial

type SubMaterial struct {
	Texture   string `json:"texture,omitempty"`
	PrintSide string `json:"printSide,omitempty"`
	Enabled   bool   `json:"enabled,omitempty"`
}

Jump to

Keyboard shortcuts

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