206 lines
5.6 KiB
Go
206 lines
5.6 KiB
Go
package sms77api
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
)
|
|
|
|
type ContactsResource resource
|
|
|
|
type ContactsWriteCode string
|
|
|
|
const (
|
|
ContactsWriteCodeUnchanged ContactsWriteCode = "151"
|
|
ContactsWriteCodeChanged ContactsWriteCode = "152"
|
|
)
|
|
|
|
type ContactsAction string
|
|
|
|
const (
|
|
ContactsActionDelete ContactsAction = "del"
|
|
ContactsActionRead ContactsAction = "read"
|
|
ContactsActionWrite ContactsAction = "write"
|
|
)
|
|
|
|
type Contact struct {
|
|
Id string `json:"ID"`
|
|
Nick string `json:"Name"`
|
|
Phone string `json:"Number"`
|
|
}
|
|
|
|
type ContactEditParams struct {
|
|
Id string `json:"id"`
|
|
Nick string `json:"nick,omitempty"`
|
|
Phone string `json:"empfaenger,omitempty"`
|
|
}
|
|
|
|
type ContactsCreateJsonResponse struct {
|
|
contactsPropReturn
|
|
Id uint64 `json:"id"`
|
|
}
|
|
|
|
type ContactsDeleteParams = contactsParamId
|
|
|
|
type ContactsDeleteJsonResponse = contactsPropReturn
|
|
|
|
type ContactsEditJsonResponse = contactsPropReturn
|
|
|
|
type ContactsReadParams = contactsParamId
|
|
|
|
type contactsParamAction struct {
|
|
Action ContactsAction `json:"action"`
|
|
}
|
|
|
|
type contactsParamId struct {
|
|
Id uint64 `json:"id,omitempty"`
|
|
}
|
|
|
|
type contactsParamJson struct {
|
|
Json bool `json:"json,omitempty"`
|
|
}
|
|
|
|
type contactsPropReturn struct {
|
|
Return ContactsWriteCode `json:"return"`
|
|
}
|
|
|
|
type contactsReadApiParams struct {
|
|
contactsParamAction
|
|
ContactsReadParams
|
|
contactsParamJson
|
|
}
|
|
|
|
func newReadApiParams(readParams ContactsReadParams, json bool) contactsReadApiParams {
|
|
return contactsReadApiParams{
|
|
contactsParamAction: contactsParamAction{ContactsActionRead},
|
|
contactsParamJson: contactsParamJson{json},
|
|
ContactsReadParams: readParams,
|
|
}
|
|
}
|
|
|
|
type contactsCreateApiParams struct {
|
|
contactsParamAction
|
|
contactsParamJson
|
|
}
|
|
|
|
func newContactsCreateApiParams(json bool) contactsCreateApiParams {
|
|
return contactsCreateApiParams{
|
|
contactsParamAction: contactsParamAction{ContactsActionWrite},
|
|
contactsParamJson: contactsParamJson{json},
|
|
}
|
|
}
|
|
|
|
type contactsDeleteApiParams struct {
|
|
ContactsDeleteParams
|
|
contactsParamAction
|
|
contactsParamJson
|
|
}
|
|
|
|
func newContactsDeleteApiParams(p ContactsDeleteParams, json bool) contactsDeleteApiParams {
|
|
return contactsDeleteApiParams{
|
|
ContactsDeleteParams: p,
|
|
contactsParamAction: contactsParamAction{ContactsActionDelete},
|
|
contactsParamJson: contactsParamJson{json},
|
|
}
|
|
}
|
|
|
|
type contactsEditJsonApiParams struct {
|
|
ContactEditParams
|
|
contactsParamAction
|
|
contactsParamJson
|
|
}
|
|
|
|
func newContactsEditJsonApiParams(p ContactEditParams, json bool) contactsEditJsonApiParams {
|
|
return contactsEditJsonApiParams{
|
|
ContactEditParams: p,
|
|
contactsParamAction: contactsParamAction{ContactsActionWrite},
|
|
contactsParamJson: contactsParamJson{json},
|
|
}
|
|
}
|
|
|
|
func (api *ContactsResource) request(ctx context.Context, method HttpMethod, params interface{}) (string, error) {
|
|
return api.client.request(ctx, "contacts", string(method), params)
|
|
}
|
|
|
|
func (api *ContactsResource) ReadCsv(p ContactsReadParams) (string, error) {
|
|
return api.ReadCsvContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) ReadCsvContext(ctx context.Context, p ContactsReadParams) (string, error) {
|
|
return api.request(ctx, HttpMethodGet, newReadApiParams(p, false))
|
|
}
|
|
|
|
func (api *ContactsResource) ReadJson(p ContactsReadParams) (a []Contact, e error) {
|
|
return api.ReadJsonContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) ReadJsonContext(ctx context.Context, p ContactsReadParams) (a []Contact, e error) {
|
|
s, e := api.request(ctx, HttpMethodGet, newReadApiParams(p, true))
|
|
|
|
if nil != e {
|
|
return
|
|
}
|
|
|
|
json.Unmarshal([]byte(s), &a)
|
|
|
|
return
|
|
}
|
|
|
|
func (api *ContactsResource) CreateCsv() (string, error) {
|
|
return api.CreateCsvContext(context.Background())
|
|
}
|
|
|
|
func (api *ContactsResource) CreateCsvContext(ctx context.Context) (string, error) {
|
|
return api.request(ctx, HttpMethodPost, newContactsCreateApiParams(false))
|
|
}
|
|
|
|
func (api *ContactsResource) CreateJson() (o ContactsCreateJsonResponse, e error) {
|
|
return api.CreateJsonContext(context.Background())
|
|
}
|
|
|
|
func (api *ContactsResource) CreateJsonContext(ctx context.Context) (o ContactsCreateJsonResponse, e error) {
|
|
s, e := api.request(ctx, HttpMethodGet, newContactsCreateApiParams(true))
|
|
|
|
e = json.Unmarshal([]byte(s), &o)
|
|
|
|
return
|
|
}
|
|
|
|
func (api *ContactsResource) DeleteCsv(p ContactsDeleteParams) (string, error) {
|
|
return api.DeleteCsvContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) DeleteCsvContext(ctx context.Context, p ContactsDeleteParams) (string, error) {
|
|
return api.request(ctx, HttpMethodPost, newContactsDeleteApiParams(p, false))
|
|
}
|
|
|
|
func (api *ContactsResource) DeleteJson(p ContactsDeleteParams) (o ContactsDeleteJsonResponse, e error) {
|
|
return api.DeleteJsonContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) DeleteJsonContext(ctx context.Context, p ContactsDeleteParams) (o ContactsDeleteJsonResponse, e error) {
|
|
s, e := api.request(ctx, HttpMethodGet, newContactsDeleteApiParams(p, true))
|
|
|
|
e = json.Unmarshal([]byte(s), &o)
|
|
|
|
return
|
|
}
|
|
|
|
func (api *ContactsResource) EditCsv(p ContactEditParams) (string, error) {
|
|
return api.EditCsvContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) EditCsvContext(ctx context.Context, p ContactEditParams) (string, error) {
|
|
return api.request(ctx, HttpMethodGet, newContactsEditJsonApiParams(p, false))
|
|
}
|
|
|
|
func (api *ContactsResource) EditJson(p ContactEditParams) (o ContactsEditJsonResponse, e error) {
|
|
return api.EditJsonContext(context.Background(), p)
|
|
}
|
|
|
|
func (api *ContactsResource) EditJsonContext(ctx context.Context, p ContactEditParams) (o ContactsEditJsonResponse, e error) {
|
|
s, e := api.request(ctx, HttpMethodGet, newContactsEditJsonApiParams(p, true))
|
|
|
|
e = json.Unmarshal([]byte(s), &o)
|
|
|
|
return
|
|
}
|