2019-10-07 08:14:47 -06:00
|
|
|
// Copyright (c) Mainflux
|
2018-10-14 16:44:21 +02:00
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
package sdk
|
|
|
|
|
|
|
|
import (
|
2018-10-24 11:21:03 +02:00
|
|
|
"crypto/tls"
|
2022-06-17 18:32:23 +03:00
|
|
|
"encoding/json"
|
2018-10-24 11:21:03 +02:00
|
|
|
"errors"
|
2022-06-17 18:32:23 +03:00
|
|
|
"fmt"
|
2018-10-14 16:44:21 +02:00
|
|
|
"net/http"
|
2022-06-17 18:32:23 +03:00
|
|
|
"net/url"
|
|
|
|
"strconv"
|
2022-01-12 13:24:51 +01:00
|
|
|
"time"
|
2022-01-24 21:18:53 +01:00
|
|
|
|
|
|
|
"github.com/mainflux/mainflux"
|
2022-03-03 17:13:46 +01:00
|
|
|
"github.com/mainflux/mainflux/internal/apiutil"
|
2018-10-24 11:21:03 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
// CTJSON represents JSON content type.
|
|
|
|
CTJSON ContentType = "application/json"
|
|
|
|
|
|
|
|
// CTJSONSenML represents JSON SenML content type.
|
|
|
|
CTJSONSenML ContentType = "application/senml+json"
|
2018-10-14 16:44:21 +02:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// CTBinary represents binary content type.
|
|
|
|
CTBinary ContentType = "application/octet-stream"
|
2018-10-14 16:44:21 +02:00
|
|
|
)
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
var (
|
|
|
|
// ErrFailedCreation indicates that entity creation failed.
|
|
|
|
ErrFailedCreation = errors.New("failed to create entity")
|
|
|
|
|
|
|
|
// ErrFailedUpdate indicates that entity update failed.
|
|
|
|
ErrFailedUpdate = errors.New("failed to update entity")
|
|
|
|
|
2020-04-16 14:45:28 +02:00
|
|
|
// ErrFailedFetch indicates that fetching of entity data failed.
|
|
|
|
ErrFailedFetch = errors.New("failed to fetch entity")
|
2018-12-18 22:04:34 +01:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// ErrFailedRemoval indicates that entity removal failed.
|
|
|
|
ErrFailedRemoval = errors.New("failed to remove entity")
|
|
|
|
|
2020-04-16 14:45:28 +02:00
|
|
|
// ErrFailedConnect indicates that connecting thing to channel failed.
|
|
|
|
ErrFailedConnect = errors.New("failed to connect thing to channel")
|
2018-10-24 11:21:03 +02:00
|
|
|
|
|
|
|
// ErrFailedDisconnect indicates that disconnecting thing from a channel failed.
|
2018-11-19 21:27:01 +01:00
|
|
|
ErrFailedDisconnect = errors.New("failed to disconnect thing from channel")
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2020-04-16 14:45:28 +02:00
|
|
|
// ErrFailedPublish indicates that publishing message failed.
|
|
|
|
ErrFailedPublish = errors.New("failed to publish message")
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2020-04-16 14:45:28 +02:00
|
|
|
// ErrFailedRead indicates that read messages failed.
|
|
|
|
ErrFailedRead = errors.New("failed to read messages")
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2020-04-16 14:45:28 +02:00
|
|
|
// ErrInvalidContentType indicates that non-existent message content type
|
2018-10-24 11:21:03 +02:00
|
|
|
// was passed.
|
|
|
|
ErrInvalidContentType = errors.New("Unknown Content Type")
|
2020-04-15 23:41:31 +02:00
|
|
|
|
2022-01-24 21:18:53 +01:00
|
|
|
// ErrFetchHealth indicates that fetching of health check failed.
|
|
|
|
ErrFetchHealth = errors.New("failed to fetch health check")
|
2020-04-29 00:39:23 +02:00
|
|
|
|
|
|
|
// ErrFailedWhitelist failed to whitelist configs
|
|
|
|
ErrFailedWhitelist = errors.New("failed to whitelist")
|
|
|
|
|
|
|
|
// ErrCerts indicates error fetching certificates.
|
|
|
|
ErrCerts = errors.New("failed to fetch certs data")
|
|
|
|
|
|
|
|
// ErrCertsRemove indicates failure while cleaning up from the Certs service.
|
|
|
|
ErrCertsRemove = errors.New("failed to remove certificate")
|
2020-07-29 14:20:43 +02:00
|
|
|
|
|
|
|
// ErrFailedCertUpdate failed to update certs in bootstrap config
|
|
|
|
ErrFailedCertUpdate = errors.New("failed to update certs in bootstrap config")
|
2020-09-23 23:18:53 +02:00
|
|
|
|
2021-03-26 22:51:02 +01:00
|
|
|
// ErrMemberAdd failed to add member to a group.
|
|
|
|
ErrMemberAdd = errors.New("failed to add member to group")
|
2018-10-24 11:21:03 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// ContentType represents all possible content types.
|
|
|
|
type ContentType string
|
|
|
|
|
|
|
|
var _ SDK = (*mfSDK)(nil)
|
|
|
|
|
|
|
|
// User represents mainflux user its credentials.
|
2020-04-27 18:49:09 +02:00
|
|
|
type User struct {
|
2020-06-04 22:29:16 +02:00
|
|
|
ID string `json:"id,omitempty"`
|
2020-04-27 18:49:09 +02:00
|
|
|
Email string `json:"email,omitempty"`
|
2020-09-23 23:18:53 +02:00
|
|
|
Groups []string `json:"groups,omitempty"`
|
2020-04-27 18:49:09 +02:00
|
|
|
Password string `json:"password,omitempty"`
|
|
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
|
|
}
|
2022-06-17 18:32:23 +03:00
|
|
|
type PageMetadata struct {
|
|
|
|
Total uint64 `json:"total"`
|
|
|
|
Offset uint64 `json:"offset"`
|
|
|
|
Limit uint64 `json:"limit"`
|
|
|
|
Level uint64 `json:"level,omitempty"`
|
|
|
|
Email string `json:"email,omitempty"`
|
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Type string `json:"type,omitempty"`
|
|
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
|
|
}
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2020-09-23 23:18:53 +02:00
|
|
|
// Group represents mainflux users group.
|
|
|
|
type Group struct {
|
|
|
|
ID string `json:"id,omitempty"`
|
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Description string `json:"description,omitempty"`
|
|
|
|
ParentID string `json:"parent_id,omitempty"`
|
|
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
|
|
}
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// Thing represents mainflux thing.
|
2020-04-27 18:49:09 +02:00
|
|
|
type Thing struct {
|
|
|
|
ID string `json:"id,omitempty"`
|
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Key string `json:"key,omitempty"`
|
|
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
|
|
}
|
2019-01-08 11:53:24 +01:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// Channel represents mainflux channel.
|
2020-04-27 18:49:09 +02:00
|
|
|
type Channel struct {
|
|
|
|
ID string `json:"id,omitempty"`
|
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Metadata map[string]interface{} `json:"metadata,omitempty"`
|
|
|
|
}
|
2019-11-21 04:29:37 -07:00
|
|
|
|
2022-01-12 13:24:51 +01:00
|
|
|
type Key struct {
|
|
|
|
ID string
|
|
|
|
Type uint32
|
|
|
|
IssuerID string
|
|
|
|
Subject string
|
|
|
|
IssuedAt time.Time
|
|
|
|
ExpiresAt time.Time
|
|
|
|
}
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// SDK contains Mainflux API.
|
2018-10-14 16:44:21 +02:00
|
|
|
type SDK interface {
|
2018-10-24 11:21:03 +02:00
|
|
|
// CreateUser registers mainflux user.
|
2021-10-27 00:38:28 +02:00
|
|
|
CreateUser(token string, user User) (string, error)
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2022-06-17 18:32:23 +03:00
|
|
|
// User returns user object by id.
|
|
|
|
User(token, id string) (User, error)
|
|
|
|
|
|
|
|
// Users returns list of users.
|
|
|
|
Users(token string, pm PageMetadata) (UsersPage, error)
|
2020-03-04 18:37:41 +01:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// CreateToken receives credentials and returns user token.
|
|
|
|
CreateToken(user User) (string, error)
|
|
|
|
|
2020-03-04 18:37:41 +01:00
|
|
|
// UpdateUser updates existing user.
|
|
|
|
UpdateUser(user User, token string) error
|
|
|
|
|
|
|
|
// UpdatePassword updates user password.
|
2020-03-09 11:31:19 +01:00
|
|
|
UpdatePassword(oldPass, newPass, token string) error
|
2020-03-04 18:37:41 +01:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// CreateThing registers new thing and returns its id.
|
|
|
|
CreateThing(thing Thing, token string) (string, error)
|
|
|
|
|
2019-10-29 05:59:54 -06:00
|
|
|
// CreateThings registers new things and returns their ids.
|
|
|
|
CreateThings(things []Thing, token string) ([]Thing, error)
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// Things returns page of things.
|
2022-06-17 18:32:23 +03:00
|
|
|
Things(token string, pm PageMetadata) (ThingsPage, error)
|
2019-01-08 11:53:24 +01:00
|
|
|
|
2020-07-26 22:47:15 +02:00
|
|
|
// ThingsByChannel returns page of things that are connected or not connected
|
|
|
|
// to specified channel.
|
|
|
|
ThingsByChannel(token, chanID string, offset, limit uint64, connected bool) (ThingsPage, error)
|
2018-10-24 11:21:03 +02:00
|
|
|
|
|
|
|
// Thing returns thing object by id.
|
|
|
|
Thing(id, token string) (Thing, error)
|
|
|
|
|
|
|
|
// UpdateThing updates existing thing.
|
|
|
|
UpdateThing(thing Thing, token string) error
|
|
|
|
|
|
|
|
// DeleteThing removes existing thing.
|
2018-10-14 16:44:21 +02:00
|
|
|
DeleteThing(id, token string) error
|
2018-10-24 11:21:03 +02:00
|
|
|
|
2020-09-23 23:18:53 +02:00
|
|
|
// CreateGroup creates new group and returns its id.
|
|
|
|
CreateGroup(group Group, token string) (string, error)
|
|
|
|
|
|
|
|
// DeleteGroup deletes users group.
|
|
|
|
DeleteGroup(id, token string) error
|
|
|
|
|
2022-06-01 01:41:54 +02:00
|
|
|
// Groups returns page of groups.
|
|
|
|
Groups(meta PageMetadata, token string) (GroupsPage, error)
|
2021-03-26 22:51:02 +01:00
|
|
|
|
|
|
|
// Parents returns page of users groups.
|
2021-12-02 13:50:39 +01:00
|
|
|
Parents(id string, offset, limit uint64, token string) (GroupsPage, error)
|
2021-03-26 22:51:02 +01:00
|
|
|
|
|
|
|
// Children returns page of users groups.
|
2021-12-02 13:50:39 +01:00
|
|
|
Children(id string, offset, limit uint64, token string) (GroupsPage, error)
|
2020-09-23 23:18:53 +02:00
|
|
|
|
|
|
|
// Group returns users group object by id.
|
|
|
|
Group(id, token string) (Group, error)
|
|
|
|
|
2021-03-26 22:51:02 +01:00
|
|
|
// Assign assigns member of member type (thing or user) to a group.
|
|
|
|
Assign(memberIDs []string, memberType, groupID string, token string) error
|
2020-09-23 23:18:53 +02:00
|
|
|
|
2021-03-26 22:51:02 +01:00
|
|
|
// Unassign removes member from a group.
|
|
|
|
Unassign(token, groupID string, memberIDs ...string) error
|
2020-09-23 23:18:53 +02:00
|
|
|
|
2021-03-26 22:51:02 +01:00
|
|
|
// Members lists members of a group.
|
2021-12-02 13:50:39 +01:00
|
|
|
Members(groupID, token string, offset, limit uint64) (MembersPage, error)
|
2020-09-23 23:18:53 +02:00
|
|
|
|
|
|
|
// Memberships lists groups for user.
|
|
|
|
Memberships(userID, token string, offset, limit uint64) (GroupsPage, error)
|
|
|
|
|
|
|
|
// UpdateGroup updates existing group.
|
|
|
|
UpdateGroup(group Group, token string) error
|
|
|
|
|
2019-11-21 04:29:37 -07:00
|
|
|
// Connect bulk connects things to channels specified by id.
|
|
|
|
Connect(conns ConnectionIDs, token string) error
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// DisconnectThing disconnect thing from specified channel by id.
|
2018-10-14 16:44:21 +02:00
|
|
|
DisconnectThing(thingID, chanID, token string) error
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// CreateChannel creates new channel and returns its id.
|
|
|
|
CreateChannel(channel Channel, token string) (string, error)
|
|
|
|
|
2019-10-29 05:59:54 -06:00
|
|
|
// CreateChannels registers new channels and returns their ids.
|
|
|
|
CreateChannels(channels []Channel, token string) ([]Channel, error)
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// Channels returns page of channels.
|
2022-06-17 18:32:23 +03:00
|
|
|
Channels(token string, pm PageMetadata) (ChannelsPage, error)
|
2019-01-08 11:53:24 +01:00
|
|
|
|
2020-07-26 22:47:15 +02:00
|
|
|
// ChannelsByThing returns page of channels that are connected or not connected
|
|
|
|
// to specified thing.
|
|
|
|
ChannelsByThing(token, thingID string, offset, limit uint64, connected bool) (ChannelsPage, error)
|
2018-10-24 11:21:03 +02:00
|
|
|
|
|
|
|
// Channel returns channel data by id.
|
|
|
|
Channel(id, token string) (Channel, error)
|
|
|
|
|
|
|
|
// UpdateChannel updates existing channel.
|
|
|
|
UpdateChannel(channel Channel, token string) error
|
|
|
|
|
|
|
|
// DeleteChannel removes existing channel.
|
2018-10-14 16:44:21 +02:00
|
|
|
DeleteChannel(id, token string) error
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// SendMessage send message to specified channel.
|
|
|
|
SendMessage(chanID, msg, token string) error
|
|
|
|
|
2019-02-06 13:57:12 +01:00
|
|
|
// ReadMessages read messages of specified channel.
|
2019-05-07 15:10:02 +02:00
|
|
|
ReadMessages(chanID, token string) (MessagesPage, error)
|
2018-12-18 22:04:34 +01:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// SetContentType sets message content type.
|
|
|
|
SetContentType(ct ContentType) error
|
|
|
|
|
2022-01-24 21:18:53 +01:00
|
|
|
// Health returns things service health check.
|
|
|
|
Health() (mainflux.HealthInfo, error)
|
2020-04-15 17:38:20 +02:00
|
|
|
|
2020-05-06 16:53:32 +02:00
|
|
|
// AddBootstrap add bootstrap configuration
|
|
|
|
AddBootstrap(token string, cfg BootstrapConfig) (string, error)
|
2020-04-15 17:38:20 +02:00
|
|
|
|
2020-04-29 20:05:08 +02:00
|
|
|
// View returns Thing Config with given ID belonging to the user identified by the given token.
|
2020-05-06 16:53:32 +02:00
|
|
|
ViewBootstrap(token, id string) (BootstrapConfig, error)
|
2020-04-15 17:38:20 +02:00
|
|
|
|
|
|
|
// Update updates editable fields of the provided Config.
|
2020-05-06 16:53:32 +02:00
|
|
|
UpdateBootstrap(token string, cfg BootstrapConfig) error
|
2020-04-15 17:38:20 +02:00
|
|
|
|
2020-07-29 14:20:43 +02:00
|
|
|
// Update boostrap config certificates
|
|
|
|
UpdateBootstrapCerts(token string, id string, clientCert, clientKey, ca string) error
|
|
|
|
|
2020-04-29 20:05:08 +02:00
|
|
|
// Remove removes Config with specified token that belongs to the user identified by the given token.
|
2020-05-06 16:53:32 +02:00
|
|
|
RemoveBootstrap(token, id string) error
|
2020-04-15 17:38:20 +02:00
|
|
|
|
2020-04-29 20:05:08 +02:00
|
|
|
// Bootstrap returns Config to the Thing with provided external ID using external key.
|
2020-05-06 16:53:32 +02:00
|
|
|
Bootstrap(externalKey, externalID string) (BootstrapConfig, error)
|
2020-04-29 00:39:23 +02:00
|
|
|
|
|
|
|
// Whitelist updates Thing state Config with given ID belonging to the user identified by the given token.
|
2020-05-06 16:53:32 +02:00
|
|
|
Whitelist(token string, cfg BootstrapConfig) error
|
2020-04-29 00:39:23 +02:00
|
|
|
|
MF-1179 - Add a certificate service and certs endpoint to SDK (#1188)
* adding certificate issuing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding cert endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix env vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add volumes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix merge config for int
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove env
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert test, change receiver to pointer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix var naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* correct error naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding certs service
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change func receiever
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default cert issue method
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add config
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some testing code
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert issue
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api client
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* additional endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add swagger for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove certs from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* clean provision from certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add list certificates endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api in vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add revoke, fix bugs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix sdk for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove CA for signing from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docker file for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix mock sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add line
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix RevokeCert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam ENV
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove tests temporarily
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove not needed envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli, var rename
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix reviews, add viewcert, fix view all certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove view cert, as it will be retrieved from PKI
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default env val
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some errors
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix revoking
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused field
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki, update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove methods, use fields
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
2020-07-21 12:53:21 +02:00
|
|
|
// IssueCert issues a certificate for a thing required for mtls.
|
|
|
|
IssueCert(thingID string, keyBits int, keyType, valid, token string) (Cert, error)
|
2020-04-29 00:39:23 +02:00
|
|
|
|
MF-1179 - Add a certificate service and certs endpoint to SDK (#1188)
* adding certificate issuing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding cert endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix env vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add volumes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix merge config for int
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove env
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert test, change receiver to pointer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix var naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* correct error naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding certs service
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change func receiever
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default cert issue method
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add config
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some testing code
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert issue
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api client
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* additional endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add swagger for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove certs from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* clean provision from certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add list certificates endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api in vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add revoke, fix bugs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix sdk for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove CA for signing from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docker file for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix mock sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add line
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix RevokeCert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam ENV
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove tests temporarily
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove not needed envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli, var rename
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix reviews, add viewcert, fix view all certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove view cert, as it will be retrieved from PKI
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default env val
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some errors
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix revoking
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused field
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki, update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove methods, use fields
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
2020-07-21 12:53:21 +02:00
|
|
|
// RemoveCert removes a certificate
|
2020-04-29 00:39:23 +02:00
|
|
|
RemoveCert(id, token string) error
|
MF-1179 - Add a certificate service and certs endpoint to SDK (#1188)
* adding certificate issuing
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding cert endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* move certs creation to sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix env vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add volumes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix merge config for int
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove env
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix error handling
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert test, change receiver to pointer
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix var naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* correct error naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* adding certs service
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change func receiever
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default cert issue method
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add config
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some testing code
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cert issue
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api client
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* additional endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add swagger for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove certs from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* clean provision from certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add list certificates endpoint
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add vault api in vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add revoke, fix bugs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix sdk for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor changes, add env, doc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* small changes
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove CA for signing from provision
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add docker file for certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix mock sdk
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add line
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix RevokeCert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam ENV
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove tests temporarily
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix naming
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* renam vars
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add cli for issue cert
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove not needed envs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix linter errors, add cli, var rename
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix reviews, add viewcert, fix view all certs
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove view cert, as it will be retrieved from PKI
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* change endpoints
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add default env val
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove some errors
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix revoking
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor, make wrapper lib for vault
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* add comments
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove unused field
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki, update vendor
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* refactor pki
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comment
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* minor fix
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* remove methods, use fields
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
* fix comments and package desc
Signed-off-by: Mirko Teodorovic <mirko.teodorovic@gmail.com>
2020-07-21 12:53:21 +02:00
|
|
|
|
|
|
|
// RevokeCert revokes certificate with certID for thing with thingID
|
|
|
|
RevokeCert(thingID, certID, token string) error
|
2022-01-12 13:24:51 +01:00
|
|
|
|
|
|
|
// Issue issues a new key, returning its token value alongside.
|
2022-01-27 15:42:31 +01:00
|
|
|
Issue(token string, duration time.Duration) (KeyRes, error)
|
2022-01-12 13:24:51 +01:00
|
|
|
|
|
|
|
// Revoke removes the key with the provided ID that is issued by the user identified by the provided key.
|
|
|
|
Revoke(token, id string) error
|
|
|
|
|
|
|
|
// RetrieveKey retrieves data for the key identified by the provided ID, that is issued by the user identified by the provided key.
|
|
|
|
RetrieveKey(token, id string) (retrieveKeyRes, error)
|
2018-10-24 11:21:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
type mfSDK struct {
|
2021-08-11 16:58:10 +02:00
|
|
|
authURL string
|
|
|
|
bootstrapURL string
|
|
|
|
certsURL string
|
|
|
|
httpAdapterURL string
|
|
|
|
readerURL string
|
|
|
|
thingsURL string
|
|
|
|
usersURL string
|
|
|
|
|
|
|
|
msgContentType ContentType
|
|
|
|
client *http.Client
|
2018-10-14 16:44:21 +02:00
|
|
|
}
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// Config contains sdk configuration parameters.
|
|
|
|
type Config struct {
|
2021-08-11 16:58:10 +02:00
|
|
|
AuthURL string
|
|
|
|
BootstrapURL string
|
|
|
|
CertsURL string
|
|
|
|
HTTPAdapterURL string
|
|
|
|
ReaderURL string
|
|
|
|
ThingsURL string
|
|
|
|
UsersURL string
|
|
|
|
|
|
|
|
MsgContentType ContentType
|
|
|
|
TLSVerification bool
|
2018-10-14 16:44:21 +02:00
|
|
|
}
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
// NewSDK returns new mainflux SDK instance.
|
|
|
|
func NewSDK(conf Config) SDK {
|
|
|
|
return &mfSDK{
|
2021-08-11 16:58:10 +02:00
|
|
|
authURL: conf.AuthURL,
|
|
|
|
bootstrapURL: conf.BootstrapURL,
|
|
|
|
certsURL: conf.CertsURL,
|
|
|
|
httpAdapterURL: conf.HTTPAdapterURL,
|
|
|
|
readerURL: conf.ReaderURL,
|
|
|
|
thingsURL: conf.ThingsURL,
|
|
|
|
usersURL: conf.UsersURL,
|
|
|
|
|
|
|
|
msgContentType: conf.MsgContentType,
|
2018-10-24 11:21:03 +02:00
|
|
|
client: &http.Client{
|
|
|
|
Transport: &http.Transport{
|
|
|
|
TLSClientConfig: &tls.Config{
|
|
|
|
InsecureSkipVerify: !conf.TLSVerification,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2018-10-14 16:44:21 +02:00
|
|
|
}
|
2018-10-24 11:21:03 +02:00
|
|
|
}
|
2018-10-14 16:44:21 +02:00
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
func (sdk mfSDK) sendRequest(req *http.Request, token, contentType string) (*http.Response, error) {
|
|
|
|
if token != "" {
|
2022-03-03 17:13:46 +01:00
|
|
|
req.Header.Set("Authorization", apiutil.BearerPrefix+token)
|
2018-10-14 16:44:21 +02:00
|
|
|
}
|
|
|
|
|
2018-10-24 11:21:03 +02:00
|
|
|
if contentType != "" {
|
|
|
|
req.Header.Add("Content-Type", contentType)
|
|
|
|
}
|
|
|
|
|
|
|
|
return sdk.client.Do(req)
|
2018-10-14 16:44:21 +02:00
|
|
|
}
|
2022-03-06 01:49:34 +01:00
|
|
|
|
|
|
|
func (sdk mfSDK) sendThingRequest(req *http.Request, key, contentType string) (*http.Response, error) {
|
|
|
|
if key != "" {
|
|
|
|
req.Header.Set("Authorization", apiutil.ThingPrefix+key)
|
|
|
|
}
|
|
|
|
|
|
|
|
if contentType != "" {
|
|
|
|
req.Header.Add("Content-Type", contentType)
|
|
|
|
}
|
|
|
|
|
|
|
|
return sdk.client.Do(req)
|
|
|
|
}
|
2022-06-17 18:32:23 +03:00
|
|
|
|
|
|
|
func (sdk mfSDK) withQueryParams(baseURL, endpoint string, pm PageMetadata) (string, error) {
|
|
|
|
q, err := pm.query()
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
return fmt.Sprintf("%s/%s?%s", baseURL, endpoint, q), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (pm PageMetadata) query() (string, error) {
|
|
|
|
q := url.Values{}
|
|
|
|
q.Add("total", strconv.FormatUint(pm.Total, 10))
|
|
|
|
q.Add("offset", strconv.FormatUint(pm.Offset, 10))
|
|
|
|
q.Add("limit", strconv.FormatUint(pm.Limit, 10))
|
|
|
|
if pm.Level != 0 {
|
|
|
|
q.Add("level", strconv.FormatUint(pm.Level, 10))
|
|
|
|
}
|
|
|
|
if pm.Email != "" {
|
|
|
|
q.Add("email", pm.Email)
|
|
|
|
}
|
|
|
|
if pm.Name != "" {
|
|
|
|
q.Add("name", pm.Name)
|
|
|
|
}
|
|
|
|
if pm.Type != "" {
|
|
|
|
q.Add("type", pm.Type)
|
|
|
|
}
|
|
|
|
if pm.Metadata != nil {
|
|
|
|
md, err := json.Marshal(pm.Metadata)
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
q.Add("metadata", string(md))
|
|
|
|
}
|
|
|
|
return q.Encode(), nil
|
|
|
|
}
|