mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-02-21 09:21:45 +00:00
Add IFTTT integration.
This commit is contained in:
parent
9ab2f77ee2
commit
96ab49944c
2119
api/go/api/application.pb.go
vendored
2119
api/go/api/application.pb.go
vendored
File diff suppressed because it is too large
Load Diff
152
api/go/api/application_grpc.pb.go
vendored
152
api/go/api/application_grpc.pb.go
vendored
@ -107,6 +107,14 @@ type ApplicationServiceClient interface {
|
|||||||
UpdatePilotThingsIntegration(ctx context.Context, in *UpdatePilotThingsIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
UpdatePilotThingsIntegration(ctx context.Context, in *UpdatePilotThingsIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||||
// Delete Pilot Things integration.
|
// Delete Pilot Things integration.
|
||||||
DeletePilotThingsIntegration(ctx context.Context, in *DeletePilotThingsIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
DeletePilotThingsIntegration(ctx context.Context, in *DeletePilotThingsIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||||
|
// Create IFTTT integration.
|
||||||
|
CreateIftttIntegration(ctx context.Context, in *CreateIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||||
|
// Get IFTTT integration.
|
||||||
|
GetIftttIntegration(ctx context.Context, in *GetIftttIntegrationRequest, opts ...grpc.CallOption) (*GetIftttIntegrationResponse, error)
|
||||||
|
// Update IFTTT integration.
|
||||||
|
UpdateIftttIntegration(ctx context.Context, in *UpdateIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||||
|
// Delete IFTTT integration.
|
||||||
|
DeleteIftttIntegration(ctx context.Context, in *DeleteIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||||
// Generates application ID specific client-certificate.
|
// Generates application ID specific client-certificate.
|
||||||
GenerateMqttIntegrationClientCertificate(ctx context.Context, in *GenerateMqttIntegrationClientCertificateRequest, opts ...grpc.CallOption) (*GenerateMqttIntegrationClientCertificateResponse, error)
|
GenerateMqttIntegrationClientCertificate(ctx context.Context, in *GenerateMqttIntegrationClientCertificateRequest, opts ...grpc.CallOption) (*GenerateMqttIntegrationClientCertificateResponse, error)
|
||||||
}
|
}
|
||||||
@ -497,6 +505,42 @@ func (c *applicationServiceClient) DeletePilotThingsIntegration(ctx context.Cont
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *applicationServiceClient) CreateIftttIntegration(ctx context.Context, in *CreateIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||||
|
out := new(emptypb.Empty)
|
||||||
|
err := c.cc.Invoke(ctx, "/api.ApplicationService/CreateIftttIntegration", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *applicationServiceClient) GetIftttIntegration(ctx context.Context, in *GetIftttIntegrationRequest, opts ...grpc.CallOption) (*GetIftttIntegrationResponse, error) {
|
||||||
|
out := new(GetIftttIntegrationResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/api.ApplicationService/GetIftttIntegration", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *applicationServiceClient) UpdateIftttIntegration(ctx context.Context, in *UpdateIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||||
|
out := new(emptypb.Empty)
|
||||||
|
err := c.cc.Invoke(ctx, "/api.ApplicationService/UpdateIftttIntegration", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *applicationServiceClient) DeleteIftttIntegration(ctx context.Context, in *DeleteIftttIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||||
|
out := new(emptypb.Empty)
|
||||||
|
err := c.cc.Invoke(ctx, "/api.ApplicationService/DeleteIftttIntegration", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *applicationServiceClient) GenerateMqttIntegrationClientCertificate(ctx context.Context, in *GenerateMqttIntegrationClientCertificateRequest, opts ...grpc.CallOption) (*GenerateMqttIntegrationClientCertificateResponse, error) {
|
func (c *applicationServiceClient) GenerateMqttIntegrationClientCertificate(ctx context.Context, in *GenerateMqttIntegrationClientCertificateRequest, opts ...grpc.CallOption) (*GenerateMqttIntegrationClientCertificateResponse, error) {
|
||||||
out := new(GenerateMqttIntegrationClientCertificateResponse)
|
out := new(GenerateMqttIntegrationClientCertificateResponse)
|
||||||
err := c.cc.Invoke(ctx, "/api.ApplicationService/GenerateMqttIntegrationClientCertificate", in, out, opts...)
|
err := c.cc.Invoke(ctx, "/api.ApplicationService/GenerateMqttIntegrationClientCertificate", in, out, opts...)
|
||||||
@ -594,6 +638,14 @@ type ApplicationServiceServer interface {
|
|||||||
UpdatePilotThingsIntegration(context.Context, *UpdatePilotThingsIntegrationRequest) (*emptypb.Empty, error)
|
UpdatePilotThingsIntegration(context.Context, *UpdatePilotThingsIntegrationRequest) (*emptypb.Empty, error)
|
||||||
// Delete Pilot Things integration.
|
// Delete Pilot Things integration.
|
||||||
DeletePilotThingsIntegration(context.Context, *DeletePilotThingsIntegrationRequest) (*emptypb.Empty, error)
|
DeletePilotThingsIntegration(context.Context, *DeletePilotThingsIntegrationRequest) (*emptypb.Empty, error)
|
||||||
|
// Create IFTTT integration.
|
||||||
|
CreateIftttIntegration(context.Context, *CreateIftttIntegrationRequest) (*emptypb.Empty, error)
|
||||||
|
// Get IFTTT integration.
|
||||||
|
GetIftttIntegration(context.Context, *GetIftttIntegrationRequest) (*GetIftttIntegrationResponse, error)
|
||||||
|
// Update IFTTT integration.
|
||||||
|
UpdateIftttIntegration(context.Context, *UpdateIftttIntegrationRequest) (*emptypb.Empty, error)
|
||||||
|
// Delete IFTTT integration.
|
||||||
|
DeleteIftttIntegration(context.Context, *DeleteIftttIntegrationRequest) (*emptypb.Empty, error)
|
||||||
// Generates application ID specific client-certificate.
|
// Generates application ID specific client-certificate.
|
||||||
GenerateMqttIntegrationClientCertificate(context.Context, *GenerateMqttIntegrationClientCertificateRequest) (*GenerateMqttIntegrationClientCertificateResponse, error)
|
GenerateMqttIntegrationClientCertificate(context.Context, *GenerateMqttIntegrationClientCertificateRequest) (*GenerateMqttIntegrationClientCertificateResponse, error)
|
||||||
mustEmbedUnimplementedApplicationServiceServer()
|
mustEmbedUnimplementedApplicationServiceServer()
|
||||||
@ -729,6 +781,18 @@ func (UnimplementedApplicationServiceServer) UpdatePilotThingsIntegration(contex
|
|||||||
func (UnimplementedApplicationServiceServer) DeletePilotThingsIntegration(context.Context, *DeletePilotThingsIntegrationRequest) (*emptypb.Empty, error) {
|
func (UnimplementedApplicationServiceServer) DeletePilotThingsIntegration(context.Context, *DeletePilotThingsIntegrationRequest) (*emptypb.Empty, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method DeletePilotThingsIntegration not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method DeletePilotThingsIntegration not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedApplicationServiceServer) CreateIftttIntegration(context.Context, *CreateIftttIntegrationRequest) (*emptypb.Empty, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method CreateIftttIntegration not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedApplicationServiceServer) GetIftttIntegration(context.Context, *GetIftttIntegrationRequest) (*GetIftttIntegrationResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method GetIftttIntegration not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedApplicationServiceServer) UpdateIftttIntegration(context.Context, *UpdateIftttIntegrationRequest) (*emptypb.Empty, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method UpdateIftttIntegration not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedApplicationServiceServer) DeleteIftttIntegration(context.Context, *DeleteIftttIntegrationRequest) (*emptypb.Empty, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method DeleteIftttIntegration not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedApplicationServiceServer) GenerateMqttIntegrationClientCertificate(context.Context, *GenerateMqttIntegrationClientCertificateRequest) (*GenerateMqttIntegrationClientCertificateResponse, error) {
|
func (UnimplementedApplicationServiceServer) GenerateMqttIntegrationClientCertificate(context.Context, *GenerateMqttIntegrationClientCertificateRequest) (*GenerateMqttIntegrationClientCertificateResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method GenerateMqttIntegrationClientCertificate not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method GenerateMqttIntegrationClientCertificate not implemented")
|
||||||
}
|
}
|
||||||
@ -1501,6 +1565,78 @@ func _ApplicationService_DeletePilotThingsIntegration_Handler(srv interface{}, c
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _ApplicationService_CreateIftttIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(CreateIftttIntegrationRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ApplicationServiceServer).CreateIftttIntegration(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/api.ApplicationService/CreateIftttIntegration",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ApplicationServiceServer).CreateIftttIntegration(ctx, req.(*CreateIftttIntegrationRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ApplicationService_GetIftttIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(GetIftttIntegrationRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ApplicationServiceServer).GetIftttIntegration(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/api.ApplicationService/GetIftttIntegration",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ApplicationServiceServer).GetIftttIntegration(ctx, req.(*GetIftttIntegrationRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ApplicationService_UpdateIftttIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(UpdateIftttIntegrationRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ApplicationServiceServer).UpdateIftttIntegration(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/api.ApplicationService/UpdateIftttIntegration",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ApplicationServiceServer).UpdateIftttIntegration(ctx, req.(*UpdateIftttIntegrationRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _ApplicationService_DeleteIftttIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(DeleteIftttIntegrationRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(ApplicationServiceServer).DeleteIftttIntegration(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/api.ApplicationService/DeleteIftttIntegration",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(ApplicationServiceServer).DeleteIftttIntegration(ctx, req.(*DeleteIftttIntegrationRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
func _ApplicationService_GenerateMqttIntegrationClientCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
func _ApplicationService_GenerateMqttIntegrationClientCertificate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
in := new(GenerateMqttIntegrationClientCertificateRequest)
|
in := new(GenerateMqttIntegrationClientCertificateRequest)
|
||||||
if err := dec(in); err != nil {
|
if err := dec(in); err != nil {
|
||||||
@ -1694,6 +1830,22 @@ var ApplicationService_ServiceDesc = grpc.ServiceDesc{
|
|||||||
MethodName: "DeletePilotThingsIntegration",
|
MethodName: "DeletePilotThingsIntegration",
|
||||||
Handler: _ApplicationService_DeletePilotThingsIntegration_Handler,
|
Handler: _ApplicationService_DeletePilotThingsIntegration_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "CreateIftttIntegration",
|
||||||
|
Handler: _ApplicationService_CreateIftttIntegration_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetIftttIntegration",
|
||||||
|
Handler: _ApplicationService_GetIftttIntegration_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "UpdateIftttIntegration",
|
||||||
|
Handler: _ApplicationService_UpdateIftttIntegration_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "DeleteIftttIntegration",
|
||||||
|
Handler: _ApplicationService_DeleteIftttIntegration_Handler,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
MethodName: "GenerateMqttIntegrationClientCertificate",
|
MethodName: "GenerateMqttIntegrationClientCertificate",
|
||||||
Handler: _ApplicationService_GenerateMqttIntegrationClientCertificate_Handler,
|
Handler: _ApplicationService_GenerateMqttIntegrationClientCertificate_Handler,
|
||||||
|
48
api/grpc-web/api/application_grpc_web_pb.d.ts
vendored
48
api/grpc-web/api/application_grpc_web_pb.d.ts
vendored
@ -303,6 +303,34 @@ export class ApplicationServiceClient {
|
|||||||
response: google_protobuf_empty_pb.Empty) => void
|
response: google_protobuf_empty_pb.Empty) => void
|
||||||
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
|
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
createIftttIntegration(
|
||||||
|
request: api_application_pb.CreateIftttIntegrationRequest,
|
||||||
|
metadata: grpcWeb.Metadata | undefined,
|
||||||
|
callback: (err: grpcWeb.Error,
|
||||||
|
response: google_protobuf_empty_pb.Empty) => void
|
||||||
|
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
getIftttIntegration(
|
||||||
|
request: api_application_pb.GetIftttIntegrationRequest,
|
||||||
|
metadata: grpcWeb.Metadata | undefined,
|
||||||
|
callback: (err: grpcWeb.Error,
|
||||||
|
response: api_application_pb.GetIftttIntegrationResponse) => void
|
||||||
|
): grpcWeb.ClientReadableStream<api_application_pb.GetIftttIntegrationResponse>;
|
||||||
|
|
||||||
|
updateIftttIntegration(
|
||||||
|
request: api_application_pb.UpdateIftttIntegrationRequest,
|
||||||
|
metadata: grpcWeb.Metadata | undefined,
|
||||||
|
callback: (err: grpcWeb.Error,
|
||||||
|
response: google_protobuf_empty_pb.Empty) => void
|
||||||
|
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
deleteIftttIntegration(
|
||||||
|
request: api_application_pb.DeleteIftttIntegrationRequest,
|
||||||
|
metadata: grpcWeb.Metadata | undefined,
|
||||||
|
callback: (err: grpcWeb.Error,
|
||||||
|
response: google_protobuf_empty_pb.Empty) => void
|
||||||
|
): grpcWeb.ClientReadableStream<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
generateMqttIntegrationClientCertificate(
|
generateMqttIntegrationClientCertificate(
|
||||||
request: api_application_pb.GenerateMqttIntegrationClientCertificateRequest,
|
request: api_application_pb.GenerateMqttIntegrationClientCertificateRequest,
|
||||||
metadata: grpcWeb.Metadata | undefined,
|
metadata: grpcWeb.Metadata | undefined,
|
||||||
@ -527,6 +555,26 @@ export class ApplicationServicePromiseClient {
|
|||||||
metadata?: grpcWeb.Metadata
|
metadata?: grpcWeb.Metadata
|
||||||
): Promise<google_protobuf_empty_pb.Empty>;
|
): Promise<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
createIftttIntegration(
|
||||||
|
request: api_application_pb.CreateIftttIntegrationRequest,
|
||||||
|
metadata?: grpcWeb.Metadata
|
||||||
|
): Promise<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
getIftttIntegration(
|
||||||
|
request: api_application_pb.GetIftttIntegrationRequest,
|
||||||
|
metadata?: grpcWeb.Metadata
|
||||||
|
): Promise<api_application_pb.GetIftttIntegrationResponse>;
|
||||||
|
|
||||||
|
updateIftttIntegration(
|
||||||
|
request: api_application_pb.UpdateIftttIntegrationRequest,
|
||||||
|
metadata?: grpcWeb.Metadata
|
||||||
|
): Promise<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
|
deleteIftttIntegration(
|
||||||
|
request: api_application_pb.DeleteIftttIntegrationRequest,
|
||||||
|
metadata?: grpcWeb.Metadata
|
||||||
|
): Promise<google_protobuf_empty_pb.Empty>;
|
||||||
|
|
||||||
generateMqttIntegrationClientCertificate(
|
generateMqttIntegrationClientCertificate(
|
||||||
request: api_application_pb.GenerateMqttIntegrationClientCertificateRequest,
|
request: api_application_pb.GenerateMqttIntegrationClientCertificateRequest,
|
||||||
metadata?: grpcWeb.Metadata
|
metadata?: grpcWeb.Metadata
|
||||||
|
320
api/grpc-web/api/application_grpc_web_pb.js
vendored
320
api/grpc-web/api/application_grpc_web_pb.js
vendored
@ -3434,6 +3434,326 @@ proto.api.ApplicationServicePromiseClient.prototype.deletePilotThingsIntegration
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.MethodDescriptor<
|
||||||
|
* !proto.api.CreateIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodDescriptor_ApplicationService_CreateIftttIntegration = new grpc.web.MethodDescriptor(
|
||||||
|
'/api.ApplicationService/CreateIftttIntegration',
|
||||||
|
grpc.web.MethodType.UNARY,
|
||||||
|
proto.api.CreateIftttIntegrationRequest,
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.CreateIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||||
|
* !proto.api.CreateIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodInfo_ApplicationService_CreateIftttIntegration = new grpc.web.AbstractClientBase.MethodInfo(
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.CreateIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.CreateIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
|
||||||
|
* callback The callback function(error, response)
|
||||||
|
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
|
||||||
|
* The XHR Node Readable Stream
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServiceClient.prototype.createIftttIntegration =
|
||||||
|
function(request, metadata, callback) {
|
||||||
|
return this.client_.rpcCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/CreateIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_CreateIftttIntegration,
|
||||||
|
callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.CreateIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @return {!Promise<!proto.google.protobuf.Empty>}
|
||||||
|
* Promise that resolves to the response
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServicePromiseClient.prototype.createIftttIntegration =
|
||||||
|
function(request, metadata) {
|
||||||
|
return this.client_.unaryCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/CreateIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_CreateIftttIntegration);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.MethodDescriptor<
|
||||||
|
* !proto.api.GetIftttIntegrationRequest,
|
||||||
|
* !proto.api.GetIftttIntegrationResponse>}
|
||||||
|
*/
|
||||||
|
const methodDescriptor_ApplicationService_GetIftttIntegration = new grpc.web.MethodDescriptor(
|
||||||
|
'/api.ApplicationService/GetIftttIntegration',
|
||||||
|
grpc.web.MethodType.UNARY,
|
||||||
|
proto.api.GetIftttIntegrationRequest,
|
||||||
|
proto.api.GetIftttIntegrationResponse,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.GetIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
proto.api.GetIftttIntegrationResponse.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||||
|
* !proto.api.GetIftttIntegrationRequest,
|
||||||
|
* !proto.api.GetIftttIntegrationResponse>}
|
||||||
|
*/
|
||||||
|
const methodInfo_ApplicationService_GetIftttIntegration = new grpc.web.AbstractClientBase.MethodInfo(
|
||||||
|
proto.api.GetIftttIntegrationResponse,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.GetIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
proto.api.GetIftttIntegrationResponse.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.GetIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @param {function(?grpc.web.Error, ?proto.api.GetIftttIntegrationResponse)}
|
||||||
|
* callback The callback function(error, response)
|
||||||
|
* @return {!grpc.web.ClientReadableStream<!proto.api.GetIftttIntegrationResponse>|undefined}
|
||||||
|
* The XHR Node Readable Stream
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServiceClient.prototype.getIftttIntegration =
|
||||||
|
function(request, metadata, callback) {
|
||||||
|
return this.client_.rpcCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/GetIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_GetIftttIntegration,
|
||||||
|
callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.GetIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @return {!Promise<!proto.api.GetIftttIntegrationResponse>}
|
||||||
|
* Promise that resolves to the response
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServicePromiseClient.prototype.getIftttIntegration =
|
||||||
|
function(request, metadata) {
|
||||||
|
return this.client_.unaryCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/GetIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_GetIftttIntegration);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.MethodDescriptor<
|
||||||
|
* !proto.api.UpdateIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodDescriptor_ApplicationService_UpdateIftttIntegration = new grpc.web.MethodDescriptor(
|
||||||
|
'/api.ApplicationService/UpdateIftttIntegration',
|
||||||
|
grpc.web.MethodType.UNARY,
|
||||||
|
proto.api.UpdateIftttIntegrationRequest,
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.UpdateIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||||
|
* !proto.api.UpdateIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodInfo_ApplicationService_UpdateIftttIntegration = new grpc.web.AbstractClientBase.MethodInfo(
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.UpdateIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.UpdateIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
|
||||||
|
* callback The callback function(error, response)
|
||||||
|
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
|
||||||
|
* The XHR Node Readable Stream
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServiceClient.prototype.updateIftttIntegration =
|
||||||
|
function(request, metadata, callback) {
|
||||||
|
return this.client_.rpcCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/UpdateIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_UpdateIftttIntegration,
|
||||||
|
callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.UpdateIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @return {!Promise<!proto.google.protobuf.Empty>}
|
||||||
|
* Promise that resolves to the response
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServicePromiseClient.prototype.updateIftttIntegration =
|
||||||
|
function(request, metadata) {
|
||||||
|
return this.client_.unaryCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/UpdateIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_UpdateIftttIntegration);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.MethodDescriptor<
|
||||||
|
* !proto.api.DeleteIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodDescriptor_ApplicationService_DeleteIftttIntegration = new grpc.web.MethodDescriptor(
|
||||||
|
'/api.ApplicationService/DeleteIftttIntegration',
|
||||||
|
grpc.web.MethodType.UNARY,
|
||||||
|
proto.api.DeleteIftttIntegrationRequest,
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.DeleteIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {!grpc.web.AbstractClientBase.MethodInfo<
|
||||||
|
* !proto.api.DeleteIftttIntegrationRequest,
|
||||||
|
* !proto.google.protobuf.Empty>}
|
||||||
|
*/
|
||||||
|
const methodInfo_ApplicationService_DeleteIftttIntegration = new grpc.web.AbstractClientBase.MethodInfo(
|
||||||
|
google_protobuf_empty_pb.Empty,
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.DeleteIftttIntegrationRequest} request
|
||||||
|
* @return {!Uint8Array}
|
||||||
|
*/
|
||||||
|
function(request) {
|
||||||
|
return request.serializeBinary();
|
||||||
|
},
|
||||||
|
google_protobuf_empty_pb.Empty.deserializeBinary
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.DeleteIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @param {function(?grpc.web.Error, ?proto.google.protobuf.Empty)}
|
||||||
|
* callback The callback function(error, response)
|
||||||
|
* @return {!grpc.web.ClientReadableStream<!proto.google.protobuf.Empty>|undefined}
|
||||||
|
* The XHR Node Readable Stream
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServiceClient.prototype.deleteIftttIntegration =
|
||||||
|
function(request, metadata, callback) {
|
||||||
|
return this.client_.rpcCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/DeleteIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_DeleteIftttIntegration,
|
||||||
|
callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {!proto.api.DeleteIftttIntegrationRequest} request The
|
||||||
|
* request proto
|
||||||
|
* @param {?Object<string, string>} metadata User defined
|
||||||
|
* call metadata
|
||||||
|
* @return {!Promise<!proto.google.protobuf.Empty>}
|
||||||
|
* Promise that resolves to the response
|
||||||
|
*/
|
||||||
|
proto.api.ApplicationServicePromiseClient.prototype.deleteIftttIntegration =
|
||||||
|
function(request, metadata) {
|
||||||
|
return this.client_.unaryCall(this.hostname_ +
|
||||||
|
'/api.ApplicationService/DeleteIftttIntegration',
|
||||||
|
request,
|
||||||
|
metadata || {},
|
||||||
|
methodDescriptor_ApplicationService_DeleteIftttIntegration);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {!grpc.web.MethodDescriptor<
|
* @type {!grpc.web.MethodDescriptor<
|
||||||
|
131
api/grpc-web/api/application_pb.d.ts
vendored
131
api/grpc-web/api/application_pb.d.ts
vendored
@ -144,6 +144,11 @@ export class GetApplicationResponse extends jspb.Message {
|
|||||||
hasUpdatedAt(): boolean;
|
hasUpdatedAt(): boolean;
|
||||||
clearUpdatedAt(): GetApplicationResponse;
|
clearUpdatedAt(): GetApplicationResponse;
|
||||||
|
|
||||||
|
getMeasurementKeysList(): Array<string>;
|
||||||
|
setMeasurementKeysList(value: Array<string>): GetApplicationResponse;
|
||||||
|
clearMeasurementKeysList(): GetApplicationResponse;
|
||||||
|
addMeasurementKeys(value: string, index?: number): GetApplicationResponse;
|
||||||
|
|
||||||
serializeBinary(): Uint8Array;
|
serializeBinary(): Uint8Array;
|
||||||
toObject(includeInstance?: boolean): GetApplicationResponse.AsObject;
|
toObject(includeInstance?: boolean): GetApplicationResponse.AsObject;
|
||||||
static toObject(includeInstance: boolean, msg: GetApplicationResponse): GetApplicationResponse.AsObject;
|
static toObject(includeInstance: boolean, msg: GetApplicationResponse): GetApplicationResponse.AsObject;
|
||||||
@ -157,6 +162,7 @@ export namespace GetApplicationResponse {
|
|||||||
application?: Application.AsObject,
|
application?: Application.AsObject,
|
||||||
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
||||||
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
||||||
|
measurementKeysList: Array<string>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1534,6 +1540,130 @@ export namespace DeletePilotThingsIntegrationRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class IftttIntegration extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): IftttIntegration;
|
||||||
|
|
||||||
|
getKey(): string;
|
||||||
|
setKey(value: string): IftttIntegration;
|
||||||
|
|
||||||
|
getUplinkValuesList(): Array<string>;
|
||||||
|
setUplinkValuesList(value: Array<string>): IftttIntegration;
|
||||||
|
clearUplinkValuesList(): IftttIntegration;
|
||||||
|
addUplinkValues(value: string, index?: number): IftttIntegration;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): IftttIntegration.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: IftttIntegration): IftttIntegration.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: IftttIntegration, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): IftttIntegration;
|
||||||
|
static deserializeBinaryFromReader(message: IftttIntegration, reader: jspb.BinaryReader): IftttIntegration;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace IftttIntegration {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
key: string,
|
||||||
|
uplinkValuesList: Array<string>,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class CreateIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): CreateIftttIntegrationRequest;
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): CreateIftttIntegrationRequest;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): CreateIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: CreateIftttIntegrationRequest): CreateIftttIntegrationRequest.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: CreateIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): CreateIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: CreateIftttIntegrationRequest, reader: jspb.BinaryReader): CreateIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace CreateIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GetIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): GetIftttIntegrationRequest;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): GetIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: GetIftttIntegrationRequest): GetIftttIntegrationRequest.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: GetIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): GetIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: GetIftttIntegrationRequest, reader: jspb.BinaryReader): GetIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace GetIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GetIftttIntegrationResponse extends jspb.Message {
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): GetIftttIntegrationResponse;
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): GetIftttIntegrationResponse;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): GetIftttIntegrationResponse.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: GetIftttIntegrationResponse): GetIftttIntegrationResponse.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: GetIftttIntegrationResponse, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): GetIftttIntegrationResponse;
|
||||||
|
static deserializeBinaryFromReader(message: GetIftttIntegrationResponse, reader: jspb.BinaryReader): GetIftttIntegrationResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace GetIftttIntegrationResponse {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class UpdateIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): UpdateIftttIntegrationRequest;
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): UpdateIftttIntegrationRequest;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): UpdateIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: UpdateIftttIntegrationRequest): UpdateIftttIntegrationRequest.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: UpdateIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): UpdateIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: UpdateIftttIntegrationRequest, reader: jspb.BinaryReader): UpdateIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace UpdateIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DeleteIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): DeleteIftttIntegrationRequest;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): DeleteIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: DeleteIftttIntegrationRequest): DeleteIftttIntegrationRequest.AsObject;
|
||||||
|
static serializeBinaryToWriter(message: DeleteIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): DeleteIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: DeleteIftttIntegrationRequest, reader: jspb.BinaryReader): DeleteIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace DeleteIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class GenerateMqttIntegrationClientCertificateRequest extends jspb.Message {
|
export class GenerateMqttIntegrationClientCertificateRequest extends jspb.Message {
|
||||||
getApplicationId(): string;
|
getApplicationId(): string;
|
||||||
setApplicationId(value: string): GenerateMqttIntegrationClientCertificateRequest;
|
setApplicationId(value: string): GenerateMqttIntegrationClientCertificateRequest;
|
||||||
@ -1599,6 +1729,7 @@ export enum IntegrationKind {
|
|||||||
AZURE_SERVICE_BUS = 7,
|
AZURE_SERVICE_BUS = 7,
|
||||||
PILOT_THINGS = 8,
|
PILOT_THINGS = 8,
|
||||||
MQTT_GLOBAL = 9,
|
MQTT_GLOBAL = 9,
|
||||||
|
IFTTT = 10,
|
||||||
}
|
}
|
||||||
export enum InfluxDbPrecision {
|
export enum InfluxDbPrecision {
|
||||||
NS = 0,
|
NS = 0,
|
||||||
|
1124
api/grpc-web/api/application_pb.js
vendored
1124
api/grpc-web/api/application_pb.js
vendored
File diff suppressed because it is too large
Load Diff
20
api/js/api/application_grpc_pb.d.ts
vendored
20
api/js/api/application_grpc_pb.d.ts
vendored
@ -50,6 +50,10 @@ interface IApplicationServiceService extends grpc.ServiceDefinition<grpc.Untyped
|
|||||||
getPilotThingsIntegration: grpc.MethodDefinition<api_application_pb.GetPilotThingsIntegrationRequest, api_application_pb.GetPilotThingsIntegrationResponse>;
|
getPilotThingsIntegration: grpc.MethodDefinition<api_application_pb.GetPilotThingsIntegrationRequest, api_application_pb.GetPilotThingsIntegrationResponse>;
|
||||||
updatePilotThingsIntegration: grpc.MethodDefinition<api_application_pb.UpdatePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
updatePilotThingsIntegration: grpc.MethodDefinition<api_application_pb.UpdatePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
deletePilotThingsIntegration: grpc.MethodDefinition<api_application_pb.DeletePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
deletePilotThingsIntegration: grpc.MethodDefinition<api_application_pb.DeletePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
createIftttIntegration: grpc.MethodDefinition<api_application_pb.CreateIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
getIftttIntegration: grpc.MethodDefinition<api_application_pb.GetIftttIntegrationRequest, api_application_pb.GetIftttIntegrationResponse>;
|
||||||
|
updateIftttIntegration: grpc.MethodDefinition<api_application_pb.UpdateIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
deleteIftttIntegration: grpc.MethodDefinition<api_application_pb.DeleteIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
generateMqttIntegrationClientCertificate: grpc.MethodDefinition<api_application_pb.GenerateMqttIntegrationClientCertificateRequest, api_application_pb.GenerateMqttIntegrationClientCertificateResponse>;
|
generateMqttIntegrationClientCertificate: grpc.MethodDefinition<api_application_pb.GenerateMqttIntegrationClientCertificateRequest, api_application_pb.GenerateMqttIntegrationClientCertificateResponse>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,6 +102,10 @@ export interface IApplicationServiceServer extends grpc.UntypedServiceImplementa
|
|||||||
getPilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.GetPilotThingsIntegrationRequest, api_application_pb.GetPilotThingsIntegrationResponse>;
|
getPilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.GetPilotThingsIntegrationRequest, api_application_pb.GetPilotThingsIntegrationResponse>;
|
||||||
updatePilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.UpdatePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
updatePilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.UpdatePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
deletePilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.DeletePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
deletePilotThingsIntegration: grpc.handleUnaryCall<api_application_pb.DeletePilotThingsIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
createIftttIntegration: grpc.handleUnaryCall<api_application_pb.CreateIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
getIftttIntegration: grpc.handleUnaryCall<api_application_pb.GetIftttIntegrationRequest, api_application_pb.GetIftttIntegrationResponse>;
|
||||||
|
updateIftttIntegration: grpc.handleUnaryCall<api_application_pb.UpdateIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
|
deleteIftttIntegration: grpc.handleUnaryCall<api_application_pb.DeleteIftttIntegrationRequest, google_protobuf_empty_pb.Empty>;
|
||||||
generateMqttIntegrationClientCertificate: grpc.handleUnaryCall<api_application_pb.GenerateMqttIntegrationClientCertificateRequest, api_application_pb.GenerateMqttIntegrationClientCertificateResponse>;
|
generateMqttIntegrationClientCertificate: grpc.handleUnaryCall<api_application_pb.GenerateMqttIntegrationClientCertificateRequest, api_application_pb.GenerateMqttIntegrationClientCertificateResponse>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,6 +237,18 @@ export class ApplicationServiceClient extends grpc.Client {
|
|||||||
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
deletePilotThingsIntegration(argument: api_application_pb.DeletePilotThingsIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
createIftttIntegration(argument: api_application_pb.CreateIftttIntegrationRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
createIftttIntegration(argument: api_application_pb.CreateIftttIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
createIftttIntegration(argument: api_application_pb.CreateIftttIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
getIftttIntegration(argument: api_application_pb.GetIftttIntegrationRequest, callback: grpc.requestCallback<api_application_pb.GetIftttIntegrationResponse>): grpc.ClientUnaryCall;
|
||||||
|
getIftttIntegration(argument: api_application_pb.GetIftttIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GetIftttIntegrationResponse>): grpc.ClientUnaryCall;
|
||||||
|
getIftttIntegration(argument: api_application_pb.GetIftttIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GetIftttIntegrationResponse>): grpc.ClientUnaryCall;
|
||||||
|
updateIftttIntegration(argument: api_application_pb.UpdateIftttIntegrationRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
updateIftttIntegration(argument: api_application_pb.UpdateIftttIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
updateIftttIntegration(argument: api_application_pb.UpdateIftttIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
deleteIftttIntegration(argument: api_application_pb.DeleteIftttIntegrationRequest, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
deleteIftttIntegration(argument: api_application_pb.DeleteIftttIntegrationRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
|
deleteIftttIntegration(argument: api_application_pb.DeleteIftttIntegrationRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<google_protobuf_empty_pb.Empty>): grpc.ClientUnaryCall;
|
||||||
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
||||||
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, metadataOrOptions: grpc.Metadata | grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
||||||
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
generateMqttIntegrationClientCertificate(argument: api_application_pb.GenerateMqttIntegrationClientCertificateRequest, metadata: grpc.Metadata | null, options: grpc.CallOptions | null, callback: grpc.requestCallback<api_application_pb.GenerateMqttIntegrationClientCertificateResponse>): grpc.ClientUnaryCall;
|
||||||
|
103
api/js/api/application_grpc_pb.js
vendored
103
api/js/api/application_grpc_pb.js
vendored
@ -72,6 +72,17 @@ function deserialize_api_CreateHttpIntegrationRequest(buffer_arg) {
|
|||||||
return api_application_pb.CreateHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
return api_application_pb.CreateHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function serialize_api_CreateIftttIntegrationRequest(arg) {
|
||||||
|
if (!(arg instanceof api_application_pb.CreateIftttIntegrationRequest)) {
|
||||||
|
throw new Error('Expected argument of type api.CreateIftttIntegrationRequest');
|
||||||
|
}
|
||||||
|
return Buffer.from(arg.serializeBinary());
|
||||||
|
}
|
||||||
|
|
||||||
|
function deserialize_api_CreateIftttIntegrationRequest(buffer_arg) {
|
||||||
|
return api_application_pb.CreateIftttIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
|
}
|
||||||
|
|
||||||
function serialize_api_CreateInfluxDbIntegrationRequest(arg) {
|
function serialize_api_CreateInfluxDbIntegrationRequest(arg) {
|
||||||
if (!(arg instanceof api_application_pb.CreateInfluxDbIntegrationRequest)) {
|
if (!(arg instanceof api_application_pb.CreateInfluxDbIntegrationRequest)) {
|
||||||
throw new Error('Expected argument of type api.CreateInfluxDbIntegrationRequest');
|
throw new Error('Expected argument of type api.CreateInfluxDbIntegrationRequest');
|
||||||
@ -182,6 +193,17 @@ function deserialize_api_DeleteHttpIntegrationRequest(buffer_arg) {
|
|||||||
return api_application_pb.DeleteHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
return api_application_pb.DeleteHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function serialize_api_DeleteIftttIntegrationRequest(arg) {
|
||||||
|
if (!(arg instanceof api_application_pb.DeleteIftttIntegrationRequest)) {
|
||||||
|
throw new Error('Expected argument of type api.DeleteIftttIntegrationRequest');
|
||||||
|
}
|
||||||
|
return Buffer.from(arg.serializeBinary());
|
||||||
|
}
|
||||||
|
|
||||||
|
function deserialize_api_DeleteIftttIntegrationRequest(buffer_arg) {
|
||||||
|
return api_application_pb.DeleteIftttIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
|
}
|
||||||
|
|
||||||
function serialize_api_DeleteInfluxDbIntegrationRequest(arg) {
|
function serialize_api_DeleteInfluxDbIntegrationRequest(arg) {
|
||||||
if (!(arg instanceof api_application_pb.DeleteInfluxDbIntegrationRequest)) {
|
if (!(arg instanceof api_application_pb.DeleteInfluxDbIntegrationRequest)) {
|
||||||
throw new Error('Expected argument of type api.DeleteInfluxDbIntegrationRequest');
|
throw new Error('Expected argument of type api.DeleteInfluxDbIntegrationRequest');
|
||||||
@ -369,6 +391,28 @@ function deserialize_api_GetHttpIntegrationResponse(buffer_arg) {
|
|||||||
return api_application_pb.GetHttpIntegrationResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
return api_application_pb.GetHttpIntegrationResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function serialize_api_GetIftttIntegrationRequest(arg) {
|
||||||
|
if (!(arg instanceof api_application_pb.GetIftttIntegrationRequest)) {
|
||||||
|
throw new Error('Expected argument of type api.GetIftttIntegrationRequest');
|
||||||
|
}
|
||||||
|
return Buffer.from(arg.serializeBinary());
|
||||||
|
}
|
||||||
|
|
||||||
|
function deserialize_api_GetIftttIntegrationRequest(buffer_arg) {
|
||||||
|
return api_application_pb.GetIftttIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
|
}
|
||||||
|
|
||||||
|
function serialize_api_GetIftttIntegrationResponse(arg) {
|
||||||
|
if (!(arg instanceof api_application_pb.GetIftttIntegrationResponse)) {
|
||||||
|
throw new Error('Expected argument of type api.GetIftttIntegrationResponse');
|
||||||
|
}
|
||||||
|
return Buffer.from(arg.serializeBinary());
|
||||||
|
}
|
||||||
|
|
||||||
|
function deserialize_api_GetIftttIntegrationResponse(buffer_arg) {
|
||||||
|
return api_application_pb.GetIftttIntegrationResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
|
}
|
||||||
|
|
||||||
function serialize_api_GetInfluxDbIntegrationRequest(arg) {
|
function serialize_api_GetInfluxDbIntegrationRequest(arg) {
|
||||||
if (!(arg instanceof api_application_pb.GetInfluxDbIntegrationRequest)) {
|
if (!(arg instanceof api_application_pb.GetInfluxDbIntegrationRequest)) {
|
||||||
throw new Error('Expected argument of type api.GetInfluxDbIntegrationRequest');
|
throw new Error('Expected argument of type api.GetInfluxDbIntegrationRequest');
|
||||||
@ -578,6 +622,17 @@ function deserialize_api_UpdateHttpIntegrationRequest(buffer_arg) {
|
|||||||
return api_application_pb.UpdateHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
return api_application_pb.UpdateHttpIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function serialize_api_UpdateIftttIntegrationRequest(arg) {
|
||||||
|
if (!(arg instanceof api_application_pb.UpdateIftttIntegrationRequest)) {
|
||||||
|
throw new Error('Expected argument of type api.UpdateIftttIntegrationRequest');
|
||||||
|
}
|
||||||
|
return Buffer.from(arg.serializeBinary());
|
||||||
|
}
|
||||||
|
|
||||||
|
function deserialize_api_UpdateIftttIntegrationRequest(buffer_arg) {
|
||||||
|
return api_application_pb.UpdateIftttIntegrationRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||||
|
}
|
||||||
|
|
||||||
function serialize_api_UpdateInfluxDbIntegrationRequest(arg) {
|
function serialize_api_UpdateInfluxDbIntegrationRequest(arg) {
|
||||||
if (!(arg instanceof api_application_pb.UpdateInfluxDbIntegrationRequest)) {
|
if (!(arg instanceof api_application_pb.UpdateInfluxDbIntegrationRequest)) {
|
||||||
throw new Error('Expected argument of type api.UpdateInfluxDbIntegrationRequest');
|
throw new Error('Expected argument of type api.UpdateInfluxDbIntegrationRequest');
|
||||||
@ -1151,6 +1206,54 @@ deletePilotThingsIntegration: {
|
|||||||
responseSerialize: serialize_google_protobuf_Empty,
|
responseSerialize: serialize_google_protobuf_Empty,
|
||||||
responseDeserialize: deserialize_google_protobuf_Empty,
|
responseDeserialize: deserialize_google_protobuf_Empty,
|
||||||
},
|
},
|
||||||
|
// Create IFTTT integration.
|
||||||
|
createIftttIntegration: {
|
||||||
|
path: '/api.ApplicationService/CreateIftttIntegration',
|
||||||
|
requestStream: false,
|
||||||
|
responseStream: false,
|
||||||
|
requestType: api_application_pb.CreateIftttIntegrationRequest,
|
||||||
|
responseType: google_protobuf_empty_pb.Empty,
|
||||||
|
requestSerialize: serialize_api_CreateIftttIntegrationRequest,
|
||||||
|
requestDeserialize: deserialize_api_CreateIftttIntegrationRequest,
|
||||||
|
responseSerialize: serialize_google_protobuf_Empty,
|
||||||
|
responseDeserialize: deserialize_google_protobuf_Empty,
|
||||||
|
},
|
||||||
|
// Get IFTTT integration.
|
||||||
|
getIftttIntegration: {
|
||||||
|
path: '/api.ApplicationService/GetIftttIntegration',
|
||||||
|
requestStream: false,
|
||||||
|
responseStream: false,
|
||||||
|
requestType: api_application_pb.GetIftttIntegrationRequest,
|
||||||
|
responseType: api_application_pb.GetIftttIntegrationResponse,
|
||||||
|
requestSerialize: serialize_api_GetIftttIntegrationRequest,
|
||||||
|
requestDeserialize: deserialize_api_GetIftttIntegrationRequest,
|
||||||
|
responseSerialize: serialize_api_GetIftttIntegrationResponse,
|
||||||
|
responseDeserialize: deserialize_api_GetIftttIntegrationResponse,
|
||||||
|
},
|
||||||
|
// Update IFTTT integration.
|
||||||
|
updateIftttIntegration: {
|
||||||
|
path: '/api.ApplicationService/UpdateIftttIntegration',
|
||||||
|
requestStream: false,
|
||||||
|
responseStream: false,
|
||||||
|
requestType: api_application_pb.UpdateIftttIntegrationRequest,
|
||||||
|
responseType: google_protobuf_empty_pb.Empty,
|
||||||
|
requestSerialize: serialize_api_UpdateIftttIntegrationRequest,
|
||||||
|
requestDeserialize: deserialize_api_UpdateIftttIntegrationRequest,
|
||||||
|
responseSerialize: serialize_google_protobuf_Empty,
|
||||||
|
responseDeserialize: deserialize_google_protobuf_Empty,
|
||||||
|
},
|
||||||
|
// Delete IFTTT integration.
|
||||||
|
deleteIftttIntegration: {
|
||||||
|
path: '/api.ApplicationService/DeleteIftttIntegration',
|
||||||
|
requestStream: false,
|
||||||
|
responseStream: false,
|
||||||
|
requestType: api_application_pb.DeleteIftttIntegrationRequest,
|
||||||
|
responseType: google_protobuf_empty_pb.Empty,
|
||||||
|
requestSerialize: serialize_api_DeleteIftttIntegrationRequest,
|
||||||
|
requestDeserialize: deserialize_api_DeleteIftttIntegrationRequest,
|
||||||
|
responseSerialize: serialize_google_protobuf_Empty,
|
||||||
|
responseDeserialize: deserialize_google_protobuf_Empty,
|
||||||
|
},
|
||||||
// Generates application ID specific client-certificate.
|
// Generates application ID specific client-certificate.
|
||||||
generateMqttIntegrationClientCertificate: {
|
generateMqttIntegrationClientCertificate: {
|
||||||
path: '/api.ApplicationService/GenerateMqttIntegrationClientCertificate',
|
path: '/api.ApplicationService/GenerateMqttIntegrationClientCertificate',
|
||||||
|
143
api/js/api/application_pb.d.ts
vendored
143
api/js/api/application_pb.d.ts
vendored
@ -155,6 +155,11 @@ export class GetApplicationResponse extends jspb.Message {
|
|||||||
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
|
getUpdatedAt(): google_protobuf_timestamp_pb.Timestamp | undefined;
|
||||||
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
|
setUpdatedAt(value?: google_protobuf_timestamp_pb.Timestamp): void;
|
||||||
|
|
||||||
|
clearMeasurementKeysList(): void;
|
||||||
|
getMeasurementKeysList(): Array<string>;
|
||||||
|
setMeasurementKeysList(value: Array<string>): void;
|
||||||
|
addMeasurementKeys(value: string, index?: number): string;
|
||||||
|
|
||||||
serializeBinary(): Uint8Array;
|
serializeBinary(): Uint8Array;
|
||||||
toObject(includeInstance?: boolean): GetApplicationResponse.AsObject;
|
toObject(includeInstance?: boolean): GetApplicationResponse.AsObject;
|
||||||
static toObject(includeInstance: boolean, msg: GetApplicationResponse): GetApplicationResponse.AsObject;
|
static toObject(includeInstance: boolean, msg: GetApplicationResponse): GetApplicationResponse.AsObject;
|
||||||
@ -170,6 +175,7 @@ export namespace GetApplicationResponse {
|
|||||||
application?: Application.AsObject,
|
application?: Application.AsObject,
|
||||||
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
createdAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
||||||
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
updatedAt?: google_protobuf_timestamp_pb.Timestamp.AsObject,
|
||||||
|
measurementKeysList: Array<string>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1670,6 +1676,142 @@ export namespace DeletePilotThingsIntegrationRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class IftttIntegration extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): void;
|
||||||
|
|
||||||
|
getKey(): string;
|
||||||
|
setKey(value: string): void;
|
||||||
|
|
||||||
|
clearUplinkValuesList(): void;
|
||||||
|
getUplinkValuesList(): Array<string>;
|
||||||
|
setUplinkValuesList(value: Array<string>): void;
|
||||||
|
addUplinkValues(value: string, index?: number): string;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): IftttIntegration.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: IftttIntegration): IftttIntegration.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: IftttIntegration, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): IftttIntegration;
|
||||||
|
static deserializeBinaryFromReader(message: IftttIntegration, reader: jspb.BinaryReader): IftttIntegration;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace IftttIntegration {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
key: string,
|
||||||
|
uplinkValuesList: Array<string>,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class CreateIftttIntegrationRequest extends jspb.Message {
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): void;
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): void;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): CreateIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: CreateIftttIntegrationRequest): CreateIftttIntegrationRequest.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: CreateIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): CreateIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: CreateIftttIntegrationRequest, reader: jspb.BinaryReader): CreateIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace CreateIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GetIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): void;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): GetIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: GetIftttIntegrationRequest): GetIftttIntegrationRequest.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: GetIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): GetIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: GetIftttIntegrationRequest, reader: jspb.BinaryReader): GetIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace GetIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class GetIftttIntegrationResponse extends jspb.Message {
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): void;
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): void;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): GetIftttIntegrationResponse.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: GetIftttIntegrationResponse): GetIftttIntegrationResponse.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: GetIftttIntegrationResponse, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): GetIftttIntegrationResponse;
|
||||||
|
static deserializeBinaryFromReader(message: GetIftttIntegrationResponse, reader: jspb.BinaryReader): GetIftttIntegrationResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace GetIftttIntegrationResponse {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class UpdateIftttIntegrationRequest extends jspb.Message {
|
||||||
|
hasIntegration(): boolean;
|
||||||
|
clearIntegration(): void;
|
||||||
|
getIntegration(): IftttIntegration | undefined;
|
||||||
|
setIntegration(value?: IftttIntegration): void;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): UpdateIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: UpdateIftttIntegrationRequest): UpdateIftttIntegrationRequest.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: UpdateIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): UpdateIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: UpdateIftttIntegrationRequest, reader: jspb.BinaryReader): UpdateIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace UpdateIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
integration?: IftttIntegration.AsObject,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DeleteIftttIntegrationRequest extends jspb.Message {
|
||||||
|
getApplicationId(): string;
|
||||||
|
setApplicationId(value: string): void;
|
||||||
|
|
||||||
|
serializeBinary(): Uint8Array;
|
||||||
|
toObject(includeInstance?: boolean): DeleteIftttIntegrationRequest.AsObject;
|
||||||
|
static toObject(includeInstance: boolean, msg: DeleteIftttIntegrationRequest): DeleteIftttIntegrationRequest.AsObject;
|
||||||
|
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
|
||||||
|
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
|
||||||
|
static serializeBinaryToWriter(message: DeleteIftttIntegrationRequest, writer: jspb.BinaryWriter): void;
|
||||||
|
static deserializeBinary(bytes: Uint8Array): DeleteIftttIntegrationRequest;
|
||||||
|
static deserializeBinaryFromReader(message: DeleteIftttIntegrationRequest, reader: jspb.BinaryReader): DeleteIftttIntegrationRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace DeleteIftttIntegrationRequest {
|
||||||
|
export type AsObject = {
|
||||||
|
applicationId: string,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class GenerateMqttIntegrationClientCertificateRequest extends jspb.Message {
|
export class GenerateMqttIntegrationClientCertificateRequest extends jspb.Message {
|
||||||
getApplicationId(): string;
|
getApplicationId(): string;
|
||||||
setApplicationId(value: string): void;
|
setApplicationId(value: string): void;
|
||||||
@ -1742,6 +1884,7 @@ export interface IntegrationKindMap {
|
|||||||
AZURE_SERVICE_BUS: 7;
|
AZURE_SERVICE_BUS: 7;
|
||||||
PILOT_THINGS: 8;
|
PILOT_THINGS: 8;
|
||||||
MQTT_GLOBAL: 9;
|
MQTT_GLOBAL: 9;
|
||||||
|
IFTTT: 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const IntegrationKind: IntegrationKindMap;
|
export const IntegrationKind: IntegrationKindMap;
|
||||||
|
1129
api/js/api/application_pb.js
vendored
1129
api/js/api/application_pb.js
vendored
File diff suppressed because it is too large
Load Diff
65
api/proto/api/application.proto
vendored
65
api/proto/api/application.proto
vendored
@ -138,6 +138,18 @@ service ApplicationService {
|
|||||||
// Delete Pilot Things integration.
|
// Delete Pilot Things integration.
|
||||||
rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
|
rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Create IFTTT integration.
|
||||||
|
rpc CreateIftttIntegration(CreateIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Get IFTTT integration.
|
||||||
|
rpc GetIftttIntegration(GetIftttIntegrationRequest) returns (GetIftttIntegrationResponse) {}
|
||||||
|
|
||||||
|
// Update IFTTT integration.
|
||||||
|
rpc UpdateIftttIntegration(UpdateIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Delete IFTTT integration.
|
||||||
|
rpc DeleteIftttIntegration(DeleteIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
// Generates application ID specific client-certificate.
|
// Generates application ID specific client-certificate.
|
||||||
rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {}
|
rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {}
|
||||||
}
|
}
|
||||||
@ -158,6 +170,7 @@ enum IntegrationKind {
|
|||||||
AZURE_SERVICE_BUS = 7;
|
AZURE_SERVICE_BUS = 7;
|
||||||
PILOT_THINGS = 8;
|
PILOT_THINGS = 8;
|
||||||
MQTT_GLOBAL = 9;
|
MQTT_GLOBAL = 9;
|
||||||
|
IFTTT = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Application {
|
message Application {
|
||||||
@ -216,6 +229,11 @@ message GetApplicationResponse {
|
|||||||
|
|
||||||
// Last update timestamp.
|
// Last update timestamp.
|
||||||
google.protobuf.Timestamp updated_at = 3;
|
google.protobuf.Timestamp updated_at = 3;
|
||||||
|
|
||||||
|
// Measurement keys.
|
||||||
|
// This contains the measurement keys from all the device-profiles that
|
||||||
|
// are used by the devices under this application.
|
||||||
|
repeated string measurement_keys = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpdateApplicationRequest {
|
message UpdateApplicationRequest {
|
||||||
@ -718,6 +736,53 @@ message DeletePilotThingsIntegrationRequest {
|
|||||||
string application_id = 1;
|
string application_id = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message IftttIntegration {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
|
||||||
|
// Key.
|
||||||
|
// This key can be obtained from the IFTTT Webhooks documentation page.
|
||||||
|
string key = 2;
|
||||||
|
|
||||||
|
// Values.
|
||||||
|
// Up to 2 values can be forwarded to IFTTT. These values must map to the
|
||||||
|
// decoded payload keys. For example:
|
||||||
|
// {
|
||||||
|
// "batteryLevel": 75.3,
|
||||||
|
// "buttons": [{"pressed": false}, {"pressed": true}]
|
||||||
|
// }
|
||||||
|
// You would specify the following fields:
|
||||||
|
// uplink_values = ["batteryLevel", "buttons_0_pressed"]
|
||||||
|
//
|
||||||
|
// Note: The first value is always used for the DevEUI.
|
||||||
|
repeated string uplink_values = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CreateIftttIntegrationRequest {
|
||||||
|
// Integration object.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetIftttIntegrationRequest {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetIftttIntegrationResponse {
|
||||||
|
// Integration object.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UpdateIftttIntegrationRequest {
|
||||||
|
// Integration object to update.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DeleteIftttIntegrationRequest {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message GenerateMqttIntegrationClientCertificateRequest {
|
message GenerateMqttIntegrationClientCertificateRequest {
|
||||||
// Application ID (UUID).
|
// Application ID (UUID).
|
||||||
string application_id = 1;
|
string application_id = 1;
|
||||||
|
65
api/rust/proto/chirpstack/api/application.proto
vendored
65
api/rust/proto/chirpstack/api/application.proto
vendored
@ -138,6 +138,18 @@ service ApplicationService {
|
|||||||
// Delete Pilot Things integration.
|
// Delete Pilot Things integration.
|
||||||
rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
|
rpc DeletePilotThingsIntegration(DeletePilotThingsIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Create IFTTT integration.
|
||||||
|
rpc CreateIftttIntegration(CreateIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Get IFTTT integration.
|
||||||
|
rpc GetIftttIntegration(GetIftttIntegrationRequest) returns (GetIftttIntegrationResponse) {}
|
||||||
|
|
||||||
|
// Update IFTTT integration.
|
||||||
|
rpc UpdateIftttIntegration(UpdateIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
|
// Delete IFTTT integration.
|
||||||
|
rpc DeleteIftttIntegration(DeleteIftttIntegrationRequest) returns (google.protobuf.Empty) {}
|
||||||
|
|
||||||
// Generates application ID specific client-certificate.
|
// Generates application ID specific client-certificate.
|
||||||
rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {}
|
rpc GenerateMqttIntegrationClientCertificate(GenerateMqttIntegrationClientCertificateRequest) returns (GenerateMqttIntegrationClientCertificateResponse) {}
|
||||||
}
|
}
|
||||||
@ -158,6 +170,7 @@ enum IntegrationKind {
|
|||||||
AZURE_SERVICE_BUS = 7;
|
AZURE_SERVICE_BUS = 7;
|
||||||
PILOT_THINGS = 8;
|
PILOT_THINGS = 8;
|
||||||
MQTT_GLOBAL = 9;
|
MQTT_GLOBAL = 9;
|
||||||
|
IFTTT = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Application {
|
message Application {
|
||||||
@ -216,6 +229,11 @@ message GetApplicationResponse {
|
|||||||
|
|
||||||
// Last update timestamp.
|
// Last update timestamp.
|
||||||
google.protobuf.Timestamp updated_at = 3;
|
google.protobuf.Timestamp updated_at = 3;
|
||||||
|
|
||||||
|
// Measurement keys.
|
||||||
|
// This contains the measurement keys from all the device-profiles that
|
||||||
|
// are used by the devices under this application.
|
||||||
|
repeated string measurement_keys = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message UpdateApplicationRequest {
|
message UpdateApplicationRequest {
|
||||||
@ -718,6 +736,53 @@ message DeletePilotThingsIntegrationRequest {
|
|||||||
string application_id = 1;
|
string application_id = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message IftttIntegration {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
|
||||||
|
// Key.
|
||||||
|
// This key can be obtained from the IFTTT Webhooks documentation page.
|
||||||
|
string key = 2;
|
||||||
|
|
||||||
|
// Values.
|
||||||
|
// Up to 2 values can be forwarded to IFTTT. These values must map to the
|
||||||
|
// decoded payload keys. For example:
|
||||||
|
// {
|
||||||
|
// "batteryLevel": 75.3,
|
||||||
|
// "buttons": [{"pressed": false}, {"pressed": true}]
|
||||||
|
// }
|
||||||
|
// You would specify the following fields:
|
||||||
|
// uplink_values = ["batteryLevel", "buttons_0_pressed"]
|
||||||
|
//
|
||||||
|
// Note: The first value is always used for the DevEUI.
|
||||||
|
repeated string uplink_values = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CreateIftttIntegrationRequest {
|
||||||
|
// Integration object.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetIftttIntegrationRequest {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetIftttIntegrationResponse {
|
||||||
|
// Integration object.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message UpdateIftttIntegrationRequest {
|
||||||
|
// Integration object to update.
|
||||||
|
IftttIntegration integration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message DeleteIftttIntegrationRequest {
|
||||||
|
// Application ID (UUID).
|
||||||
|
string application_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message GenerateMqttIntegrationClientCertificateRequest {
|
message GenerateMqttIntegrationClientCertificateRequest {
|
||||||
// Application ID (UUID).
|
// Application ID (UUID).
|
||||||
string application_id = 1;
|
string application_id = 1;
|
||||||
|
@ -72,6 +72,9 @@ impl ApplicationService for Application {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let a = application::get(&app_id).await.map_err(|e| e.status())?;
|
let a = application::get(&app_id).await.map_err(|e| e.status())?;
|
||||||
|
let measurement_keys = application::get_measurement_keys(&app_id)
|
||||||
|
.await
|
||||||
|
.map_err(|e| e.status())?;
|
||||||
|
|
||||||
Ok(Response::new(api::GetApplicationResponse {
|
Ok(Response::new(api::GetApplicationResponse {
|
||||||
application: Some(api::Application {
|
application: Some(api::Application {
|
||||||
@ -82,6 +85,7 @@ impl ApplicationService for Application {
|
|||||||
}),
|
}),
|
||||||
created_at: Some(helpers::datetime_to_prost_timestamp(&a.created_at)),
|
created_at: Some(helpers::datetime_to_prost_timestamp(&a.created_at)),
|
||||||
updated_at: Some(helpers::datetime_to_prost_timestamp(&a.updated_at)),
|
updated_at: Some(helpers::datetime_to_prost_timestamp(&a.updated_at)),
|
||||||
|
measurement_keys,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,6 +217,7 @@ impl ApplicationService for Application {
|
|||||||
api::IntegrationKind::AzureServiceBus
|
api::IntegrationKind::AzureServiceBus
|
||||||
}
|
}
|
||||||
application::IntegrationKind::PilotThings => api::IntegrationKind::PilotThings,
|
application::IntegrationKind::PilotThings => api::IntegrationKind::PilotThings,
|
||||||
|
application::IntegrationKind::Ifttt => api::IntegrationKind::Ifttt,
|
||||||
}
|
}
|
||||||
.into(),
|
.into(),
|
||||||
})
|
})
|
||||||
@ -1486,6 +1491,136 @@ impl ApplicationService for Application {
|
|||||||
Ok(Response::new(()))
|
Ok(Response::new(()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn create_ifttt_integration(
|
||||||
|
&self,
|
||||||
|
request: Request<api::CreateIftttIntegrationRequest>,
|
||||||
|
) -> Result<Response<()>, Status> {
|
||||||
|
let req_int = match &request.get_ref().integration {
|
||||||
|
Some(v) => v,
|
||||||
|
None => {
|
||||||
|
return Err(Status::invalid_argument("integration is missing"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
self.validator
|
||||||
|
.validate(
|
||||||
|
request.extensions(),
|
||||||
|
validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let _ = application::create_integration(application::Integration {
|
||||||
|
application_id: app_id,
|
||||||
|
kind: application::IntegrationKind::Ifttt,
|
||||||
|
configuration: application::IntegrationConfiguration::Ifttt(
|
||||||
|
application::IftttConfiguration {
|
||||||
|
key: req_int.key.clone(),
|
||||||
|
uplink_values: [
|
||||||
|
req_int.uplink_values.get(0).cloned().unwrap_or_default(),
|
||||||
|
req_int.uplink_values.get(1).cloned().unwrap_or_default(),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
.await
|
||||||
|
.map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
Ok(Response::new(()))
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn get_ifttt_integration(
|
||||||
|
&self,
|
||||||
|
request: Request<api::GetIftttIntegrationRequest>,
|
||||||
|
) -> Result<Response<api::GetIftttIntegrationResponse>, Status> {
|
||||||
|
let req = request.get_ref();
|
||||||
|
let app_id = Uuid::from_str(&req.application_id).map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
self.validator
|
||||||
|
.validate(
|
||||||
|
request.extensions(),
|
||||||
|
validator::ValidateApplicationAccess::new(validator::Flag::Read, app_id),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let i = application::get_integration(&app_id, application::IntegrationKind::Ifttt)
|
||||||
|
.await
|
||||||
|
.map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
if let application::IntegrationConfiguration::Ifttt(conf) = &i.configuration {
|
||||||
|
Ok(Response::new(api::GetIftttIntegrationResponse {
|
||||||
|
integration: Some(api::IftttIntegration {
|
||||||
|
application_id: app_id.to_string(),
|
||||||
|
key: conf.key.clone(),
|
||||||
|
uplink_values: conf.uplink_values.to_vec(),
|
||||||
|
}),
|
||||||
|
}))
|
||||||
|
} else {
|
||||||
|
Err(Status::internal("Integration has no Ifttt configuration"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn update_ifttt_integration(
|
||||||
|
&self,
|
||||||
|
request: Request<api::UpdateIftttIntegrationRequest>,
|
||||||
|
) -> Result<Response<()>, Status> {
|
||||||
|
let req_int = match &request.get_ref().integration {
|
||||||
|
Some(v) => v,
|
||||||
|
None => {
|
||||||
|
return Err(Status::invalid_argument("integration is missing"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let app_id = Uuid::from_str(&req_int.application_id).map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
self.validator
|
||||||
|
.validate(
|
||||||
|
request.extensions(),
|
||||||
|
validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let _ = application::update_integration(application::Integration {
|
||||||
|
application_id: app_id,
|
||||||
|
kind: application::IntegrationKind::Ifttt,
|
||||||
|
configuration: application::IntegrationConfiguration::Ifttt(
|
||||||
|
application::IftttConfiguration {
|
||||||
|
key: req_int.key.clone(),
|
||||||
|
uplink_values: [
|
||||||
|
req_int.uplink_values.get(0).cloned().unwrap_or_default(),
|
||||||
|
req_int.uplink_values.get(1).cloned().unwrap_or_default(),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
.await
|
||||||
|
.map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
Ok(Response::new(()))
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn delete_ifttt_integration(
|
||||||
|
&self,
|
||||||
|
request: Request<api::DeleteIftttIntegrationRequest>,
|
||||||
|
) -> Result<Response<()>, Status> {
|
||||||
|
let req = request.get_ref();
|
||||||
|
let app_id = Uuid::from_str(&req.application_id).map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
self.validator
|
||||||
|
.validate(
|
||||||
|
request.extensions(),
|
||||||
|
validator::ValidateApplicationAccess::new(validator::Flag::Update, app_id),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
application::delete_integration(&app_id, application::IntegrationKind::Ifttt)
|
||||||
|
.await
|
||||||
|
.map_err(|e| e.status())?;
|
||||||
|
|
||||||
|
Ok(Response::new(()))
|
||||||
|
}
|
||||||
|
|
||||||
async fn generate_mqtt_integration_client_certificate(
|
async fn generate_mqtt_integration_client_certificate(
|
||||||
&self,
|
&self,
|
||||||
request: Request<api::GenerateMqttIntegrationClientCertificateRequest>,
|
request: Request<api::GenerateMqttIntegrationClientCertificateRequest>,
|
||||||
@ -2974,4 +3109,126 @@ pub mod test {
|
|||||||
list_resp
|
list_resp
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_ifttt_integration() {
|
||||||
|
let _guard = test::prepare().await;
|
||||||
|
let app = get_application().await;
|
||||||
|
let u = get_user().await;
|
||||||
|
let service = Application::new(RequestValidator::new());
|
||||||
|
|
||||||
|
// create
|
||||||
|
let create_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::CreateIftttIntegrationRequest {
|
||||||
|
integration: Some(api::IftttIntegration {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
key: "verysecret".into(),
|
||||||
|
uplink_values: vec!["value_1".into(), "value_2".into()],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let _ = service.create_ifttt_integration(create_req).await.unwrap();
|
||||||
|
|
||||||
|
// get
|
||||||
|
let get_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::GetIftttIntegrationRequest {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let get_resp = service.get_ifttt_integration(get_req).await.unwrap();
|
||||||
|
let get_resp = get_resp.get_ref();
|
||||||
|
assert_eq!(
|
||||||
|
Some(api::IftttIntegration {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
key: "verysecret".into(),
|
||||||
|
uplink_values: vec!["value_1".into(), "value_2".into()],
|
||||||
|
}),
|
||||||
|
get_resp.integration
|
||||||
|
);
|
||||||
|
|
||||||
|
// update
|
||||||
|
let update_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::UpdateIftttIntegrationRequest {
|
||||||
|
integration: Some(api::IftttIntegration {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
key: "verysecrettoo".into(),
|
||||||
|
uplink_values: vec!["value_4".into(), "value_5".into()],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let _ = service.update_ifttt_integration(update_req).await.unwrap();
|
||||||
|
|
||||||
|
// get
|
||||||
|
let get_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::GetIftttIntegrationRequest {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let get_resp = service.get_ifttt_integration(get_req).await.unwrap();
|
||||||
|
let get_resp = get_resp.get_ref();
|
||||||
|
assert_eq!(
|
||||||
|
Some(api::IftttIntegration {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
key: "verysecrettoo".into(),
|
||||||
|
uplink_values: vec!["value_4".into(), "value_5".into()],
|
||||||
|
}),
|
||||||
|
get_resp.integration
|
||||||
|
);
|
||||||
|
|
||||||
|
// list
|
||||||
|
let list_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::ListIntegrationsRequest {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let list_resp = service.list_integrations(list_req).await.unwrap();
|
||||||
|
let list_resp = list_resp.get_ref();
|
||||||
|
assert_eq!(
|
||||||
|
&api::ListIntegrationsResponse {
|
||||||
|
total_count: 2,
|
||||||
|
result: vec![
|
||||||
|
api::IntegrationListItem {
|
||||||
|
kind: api::IntegrationKind::Ifttt.into(),
|
||||||
|
},
|
||||||
|
api::IntegrationListItem {
|
||||||
|
kind: api::IntegrationKind::MqttGlobal.into(),
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
list_resp
|
||||||
|
);
|
||||||
|
|
||||||
|
// delete
|
||||||
|
let del_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::DeleteIftttIntegrationRequest {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let _ = service.delete_ifttt_integration(del_req).await.unwrap();
|
||||||
|
|
||||||
|
// list
|
||||||
|
let list_req = get_request(
|
||||||
|
&u.id,
|
||||||
|
api::ListIntegrationsRequest {
|
||||||
|
application_id: app.id.to_string(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let list_resp = service.list_integrations(list_req).await.unwrap();
|
||||||
|
let list_resp = list_resp.get_ref();
|
||||||
|
assert_eq!(
|
||||||
|
&api::ListIntegrationsResponse {
|
||||||
|
total_count: 1,
|
||||||
|
result: vec![api::IntegrationListItem {
|
||||||
|
kind: api::IntegrationKind::MqttGlobal.into(),
|
||||||
|
},],
|
||||||
|
},
|
||||||
|
list_resp
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
231
chirpstack/src/integration/ifttt.rs
Normal file
231
chirpstack/src/integration/ifttt.rs
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
use async_trait::async_trait;
|
||||||
|
use reqwest::header::{HeaderMap, CONTENT_TYPE};
|
||||||
|
use reqwest::Client;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use tracing::{error, info, trace};
|
||||||
|
|
||||||
|
use super::Integration as IntegrationTrait;
|
||||||
|
use crate::codec;
|
||||||
|
use crate::storage::application::IftttConfiguration;
|
||||||
|
use chirpstack_api::integration;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
struct Values {
|
||||||
|
#[serde(skip_serializing_if = "String::is_empty")]
|
||||||
|
pub value1: String,
|
||||||
|
#[serde(skip_serializing_if = "String::is_empty")]
|
||||||
|
pub value2: String,
|
||||||
|
#[serde(skip_serializing_if = "String::is_empty")]
|
||||||
|
pub value3: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Integration {
|
||||||
|
key: String,
|
||||||
|
uplink_values: [String; 2],
|
||||||
|
server: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Integration {
|
||||||
|
pub fn new(conf: &IftttConfiguration) -> Integration {
|
||||||
|
trace!("Initializing ifttt integration");
|
||||||
|
|
||||||
|
Integration {
|
||||||
|
key: conf.key.clone(),
|
||||||
|
uplink_values: conf.uplink_values.clone(),
|
||||||
|
server: "https://maker.ifttt.com".to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn post(&self, event: &str, v: Values) -> Result<()> {
|
||||||
|
let url = format!("{}/trigger/{}/with/key/{}", self.server, event, self.key);
|
||||||
|
let client = Client::builder().timeout(Duration::from_secs(5)).build()?;
|
||||||
|
let mut headers = HeaderMap::new();
|
||||||
|
headers.insert(CONTENT_TYPE, "application/json".parse().unwrap());
|
||||||
|
|
||||||
|
info!(event = %event, "Sending event to IFTTT");
|
||||||
|
let res = client.post(url).json(&v).headers(headers).send().await?;
|
||||||
|
match res.error_for_status() {
|
||||||
|
Ok(_) => Ok(()),
|
||||||
|
Err(e) => {
|
||||||
|
error!(event = %event, error = %e, "Sending event to IFTTT failed");
|
||||||
|
Err(anyhow::Error::new(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl IntegrationTrait for Integration {
|
||||||
|
async fn uplink_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
pl: &integration::UplinkEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
let data_measurements: HashMap<String, pbjson_types::value::Kind> = match &pl.object {
|
||||||
|
None => {
|
||||||
|
trace!("object is None, nothing to send");
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
Some(v) => codec::get_measurements(v),
|
||||||
|
};
|
||||||
|
|
||||||
|
let v = Values {
|
||||||
|
value1: pl.device_info.as_ref().unwrap().dev_eui.clone(),
|
||||||
|
value2: match data_measurements.get(&self.uplink_values[0]) {
|
||||||
|
Some(v) => kind_to_string(v),
|
||||||
|
None => "".to_string(),
|
||||||
|
},
|
||||||
|
value3: match data_measurements.get(&self.uplink_values[1]) {
|
||||||
|
Some(v) => kind_to_string(v),
|
||||||
|
None => "".to_string(),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Nothing to do.
|
||||||
|
if v.value1.is_empty() && v.value2.is_empty() && v.value3.is_empty() {
|
||||||
|
trace!("All values are empty, nothing to send");
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
self.post("up", v).await
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn join_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::JoinEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn status_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::StatusEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn ack_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::AckEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn txack_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::TxAckEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn log_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::LogEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn location_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::LocationEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn integration_event(
|
||||||
|
&self,
|
||||||
|
_vars: &HashMap<String, String>,
|
||||||
|
_pl: &integration::IntegrationEvent,
|
||||||
|
) -> Result<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn kind_to_string(k: &pbjson_types::value::Kind) -> String {
|
||||||
|
match k {
|
||||||
|
pbjson_types::value::Kind::NullValue(_) => "".to_string(),
|
||||||
|
pbjson_types::value::Kind::NumberValue(v) => v.to_string(),
|
||||||
|
pbjson_types::value::Kind::StringValue(v) => v.clone(),
|
||||||
|
pbjson_types::value::Kind::BoolValue(v) => v.to_string(),
|
||||||
|
pbjson_types::value::Kind::StructValue(_) | pbjson_types::value::Kind::ListValue(_) => {
|
||||||
|
// this should not happen
|
||||||
|
"".to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
pub mod test {
|
||||||
|
use super::*;
|
||||||
|
use httpmock::prelude::*;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_ifttt() {
|
||||||
|
let server = MockServer::start();
|
||||||
|
|
||||||
|
let i = Integration {
|
||||||
|
key: "verysecret".into(),
|
||||||
|
uplink_values: ["temp".to_string(), "door_open".to_string()],
|
||||||
|
server: server.url(""),
|
||||||
|
};
|
||||||
|
|
||||||
|
// uplink event
|
||||||
|
let pl = integration::UplinkEvent {
|
||||||
|
device_info: Some(integration::DeviceInfo {
|
||||||
|
dev_eui: "0102030405060708".to_string(),
|
||||||
|
..Default::default()
|
||||||
|
}),
|
||||||
|
object: Some(pbjson_types::Struct {
|
||||||
|
fields: [
|
||||||
|
(
|
||||||
|
"temp".to_string(),
|
||||||
|
pbjson_types::Value {
|
||||||
|
kind: Some(pbjson_types::value::Kind::NumberValue(23.5)),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"door_open".to_string(),
|
||||||
|
pbjson_types::Value {
|
||||||
|
kind: Some(pbjson_types::value::Kind::StringValue(
|
||||||
|
"closed".to_string(),
|
||||||
|
)),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.cloned()
|
||||||
|
.collect(),
|
||||||
|
}),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let mut mock = server.mock(|when, then| {
|
||||||
|
when.method(POST)
|
||||||
|
.path("/trigger/up/with/key/verysecret")
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body(
|
||||||
|
serde_json::to_string(&Values {
|
||||||
|
value1: "0102030405060708".to_string(),
|
||||||
|
value2: "23.5".to_string(),
|
||||||
|
value3: "closed".to_string(),
|
||||||
|
})
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
|
||||||
|
then.status(200);
|
||||||
|
});
|
||||||
|
|
||||||
|
i.uplink_event(&HashMap::new(), &pl).await.unwrap();
|
||||||
|
mock.assert();
|
||||||
|
mock.delete();
|
||||||
|
}
|
||||||
|
}
|
@ -17,6 +17,7 @@ mod aws_sns;
|
|||||||
mod azure_service_bus;
|
mod azure_service_bus;
|
||||||
mod gcp_pub_sub;
|
mod gcp_pub_sub;
|
||||||
mod http;
|
mod http;
|
||||||
|
mod ifttt;
|
||||||
mod influxdb;
|
mod influxdb;
|
||||||
mod loracloud;
|
mod loracloud;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -162,6 +163,9 @@ async fn for_application_id(id: &Uuid) -> Result<Vec<Box<dyn Integration + Sync
|
|||||||
application::IntegrationConfiguration::ThingsBoard(conf) => {
|
application::IntegrationConfiguration::ThingsBoard(conf) => {
|
||||||
Box::new(thingsboard::Integration::new(conf))
|
Box::new(thingsboard::Integration::new(conf))
|
||||||
}
|
}
|
||||||
|
application::IntegrationConfiguration::Ifttt(conf) => {
|
||||||
|
Box::new(ifttt::Integration::new(conf))
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,7 @@ pub enum IntegrationKind {
|
|||||||
AwsSns,
|
AwsSns,
|
||||||
AzureServiceBus,
|
AzureServiceBus,
|
||||||
PilotThings,
|
PilotThings,
|
||||||
|
Ifttt,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for IntegrationKind {
|
impl fmt::Display for IntegrationKind {
|
||||||
@ -107,6 +108,7 @@ impl FromStr for IntegrationKind {
|
|||||||
"AwsSns" => IntegrationKind::AwsSns,
|
"AwsSns" => IntegrationKind::AwsSns,
|
||||||
"AzureServiceBus" => IntegrationKind::AzureServiceBus,
|
"AzureServiceBus" => IntegrationKind::AzureServiceBus,
|
||||||
"PilotThings" => IntegrationKind::PilotThings,
|
"PilotThings" => IntegrationKind::PilotThings,
|
||||||
|
"Ifttt" => IntegrationKind::Ifttt,
|
||||||
_ => {
|
_ => {
|
||||||
return Err(anyhow!("Unexpected IntegrationKind: {}", s));
|
return Err(anyhow!("Unexpected IntegrationKind: {}", s));
|
||||||
}
|
}
|
||||||
@ -148,6 +150,7 @@ pub enum IntegrationConfiguration {
|
|||||||
AwsSns(AwsSnsConfiguration),
|
AwsSns(AwsSnsConfiguration),
|
||||||
AzureServiceBus(AzureServiceBusConfiguration),
|
AzureServiceBus(AzureServiceBusConfiguration),
|
||||||
PilotThings(PilotThingsConfiguration),
|
PilotThings(PilotThingsConfiguration),
|
||||||
|
Ifttt(IftttConfiguration),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl deserialize::FromSql<Jsonb, Pg> for IntegrationConfiguration {
|
impl deserialize::FromSql<Jsonb, Pg> for IntegrationConfiguration {
|
||||||
@ -249,6 +252,12 @@ pub struct PilotThingsConfiguration {
|
|||||||
pub token: String,
|
pub token: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct IftttConfiguration {
|
||||||
|
pub key: String,
|
||||||
|
pub uplink_values: [String; 2], // The first value is reserved for the DevEUI
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Queryable, Insertable, AsChangeset, PartialEq, Debug)]
|
#[derive(Clone, Queryable, Insertable, AsChangeset, PartialEq, Debug)]
|
||||||
#[table_name = "application_integration"]
|
#[table_name = "application_integration"]
|
||||||
pub struct Integration {
|
pub struct Integration {
|
||||||
@ -542,6 +551,40 @@ pub async fn get_integrations_for_application(
|
|||||||
.await?
|
.await?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn get_measurement_keys(application_id: &Uuid) -> Result<Vec<String>, Error> {
|
||||||
|
#[derive(QueryableByName)]
|
||||||
|
struct Measurement {
|
||||||
|
#[sql_type = "diesel::sql_types::Text"]
|
||||||
|
pub key: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
task::spawn_blocking({
|
||||||
|
let application_id = *application_id;
|
||||||
|
move || -> Result<Vec<String>, Error> {
|
||||||
|
let c = get_db_conn()?;
|
||||||
|
let keys: Vec<Measurement> = diesel::sql_query(
|
||||||
|
r#"
|
||||||
|
select
|
||||||
|
distinct jsonb_object_keys(dp.measurements) as key
|
||||||
|
from
|
||||||
|
device_profile dp
|
||||||
|
inner join device d
|
||||||
|
on d.device_profile_id = dp.id
|
||||||
|
where
|
||||||
|
d.application_id = $1
|
||||||
|
order by
|
||||||
|
key
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.bind::<diesel::pg::types::sql_types::Uuid, _>(application_id)
|
||||||
|
.load(&c)
|
||||||
|
.map_err(|e| Error::from_diesel(e, application_id.to_string()))?;
|
||||||
|
Ok(keys.iter().map(|k| k.key.clone()).collect())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.await?
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub mod test {
|
pub mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
BIN
ui/public/integrations/ifttt.png
Normal file
BIN
ui/public/integrations/ifttt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
@ -78,7 +78,12 @@ class CodeEditor extends Component<IProps, IState> {
|
|||||||
return (
|
return (
|
||||||
<Form.Item label={this.props.label} name={this.props.name} tooltip={this.props.tooltip}>
|
<Form.Item label={this.props.label} name={this.props.name} tooltip={this.props.tooltip}>
|
||||||
<div style={{ border: "1px solid #cccccc" }}>
|
<div style={{ border: "1px solid #cccccc" }}>
|
||||||
<CodeMirror key={`code-editor-refresh-${this.state.reloadKey}`} value={this.state.value} options={codeMirrorOptions} onBeforeChange={this.handleChange} />
|
<CodeMirror
|
||||||
|
key={`code-editor-refresh-${this.state.reloadKey}`}
|
||||||
|
value={this.state.value}
|
||||||
|
options={codeMirrorOptions}
|
||||||
|
onBeforeChange={this.handleChange}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
);
|
);
|
||||||
|
@ -57,6 +57,11 @@ import {
|
|||||||
GetThingsBoardIntegrationResponse,
|
GetThingsBoardIntegrationResponse,
|
||||||
UpdateThingsBoardIntegrationRequest,
|
UpdateThingsBoardIntegrationRequest,
|
||||||
DeleteThingsBoardIntegrationRequest,
|
DeleteThingsBoardIntegrationRequest,
|
||||||
|
CreateIftttIntegrationRequest,
|
||||||
|
GetIftttIntegrationRequest,
|
||||||
|
GetIftttIntegrationResponse,
|
||||||
|
UpdateIftttIntegrationRequest,
|
||||||
|
DeleteIftttIntegrationRequest,
|
||||||
GenerateMqttIntegrationClientCertificateRequest,
|
GenerateMqttIntegrationClientCertificateRequest,
|
||||||
GenerateMqttIntegrationClientCertificateResponse,
|
GenerateMqttIntegrationClientCertificateResponse,
|
||||||
} from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
} from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
||||||
@ -717,6 +722,69 @@ class ApplicationStore extends EventEmitter {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
createIftttIntegration = (req: CreateIftttIntegrationRequest, callbackFunc: () => void) => {
|
||||||
|
this.client.createIftttIntegration(req, SessionStore.getMetadata(), err => {
|
||||||
|
if (err !== null) {
|
||||||
|
HandleError(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notification.success({
|
||||||
|
message: "IFTTT integration created",
|
||||||
|
duration: 3,
|
||||||
|
});
|
||||||
|
|
||||||
|
callbackFunc();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
getIftttIntegration = (
|
||||||
|
req: GetIftttIntegrationRequest,
|
||||||
|
callbackFunc: (resp: GetIftttIntegrationResponse) => void,
|
||||||
|
) => {
|
||||||
|
this.client.getIftttIntegration(req, SessionStore.getMetadata(), (err, resp) => {
|
||||||
|
if (err !== null) {
|
||||||
|
HandleError(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
callbackFunc(resp);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
updateIftttIntegration = (req: UpdateIftttIntegrationRequest, callbackFunc: () => void) => {
|
||||||
|
this.client.updateIftttIntegration(req, SessionStore.getMetadata(), err => {
|
||||||
|
if (err !== null) {
|
||||||
|
HandleError(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notification.success({
|
||||||
|
message: "IFTTT integration updated",
|
||||||
|
duration: 3,
|
||||||
|
});
|
||||||
|
|
||||||
|
callbackFunc();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
deleteIftttIntegration = (req: DeleteIftttIntegrationRequest, callbackFunc: () => void) => {
|
||||||
|
this.client.deleteIftttIntegration(req, SessionStore.getMetadata(), err => {
|
||||||
|
if (err !== null) {
|
||||||
|
HandleError(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
notification.success({
|
||||||
|
message: "IFTTT integration deleted",
|
||||||
|
duration: 3,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.emit("integration.delete");
|
||||||
|
callbackFunc();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
generateMqttIntegrationClientCertificate = (
|
generateMqttIntegrationClientCertificate = (
|
||||||
req: GenerateMqttIntegrationClientCertificateRequest,
|
req: GenerateMqttIntegrationClientCertificateRequest,
|
||||||
callbackFunc: (resp: GenerateMqttIntegrationClientCertificateResponse) => void,
|
callbackFunc: (resp: GenerateMqttIntegrationClientCertificateResponse) => void,
|
||||||
|
@ -34,10 +34,13 @@ import EditLoRaCloudIntegration from "./integrations/EditLoRaCloudIntegration";
|
|||||||
import CreateThingsBoardIntegration from "./integrations/CreateThingsBoardIntegration";
|
import CreateThingsBoardIntegration from "./integrations/CreateThingsBoardIntegration";
|
||||||
import EditThingsBoardIntegration from "./integrations/EditThingsBoardIntegration";
|
import EditThingsBoardIntegration from "./integrations/EditThingsBoardIntegration";
|
||||||
import GenerateMqttCertificate from "./integrations/GenerateMqttCertificate";
|
import GenerateMqttCertificate from "./integrations/GenerateMqttCertificate";
|
||||||
|
import CreateIftttIntegration from "./integrations/CreateIftttIntegration";
|
||||||
|
import EditIftttIntegration from "./integrations/EditIftttIntegration";
|
||||||
|
|
||||||
interface IProps extends RouteComponentProps {
|
interface IProps extends RouteComponentProps {
|
||||||
tenant: Tenant;
|
tenant: Tenant;
|
||||||
application: Application;
|
application: Application;
|
||||||
|
measurementKeys: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
class ApplicationLayout extends Component<IProps> {
|
class ApplicationLayout extends Component<IProps> {
|
||||||
@ -243,6 +246,20 @@ class ApplicationLayout extends Component<IProps> {
|
|||||||
path={`${this.props.match.path}/integrations/mqtt/certificate`}
|
path={`${this.props.match.path}/integrations/mqtt/certificate`}
|
||||||
render={props => <GenerateMqttCertificate application={app} {...props} />}
|
render={props => <GenerateMqttCertificate application={app} {...props} />}
|
||||||
/>
|
/>
|
||||||
|
<Route
|
||||||
|
exact
|
||||||
|
path={`${this.props.match.path}/integrations/ifttt/create`}
|
||||||
|
render={props => (
|
||||||
|
<CreateIftttIntegration application={app} measurementKeys={this.props.measurementKeys} {...props} />
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
exact
|
||||||
|
path={`${this.props.match.path}/integrations/ifttt/edit`}
|
||||||
|
render={props => (
|
||||||
|
<EditIftttIntegration application={app} measurementKeys={this.props.measurementKeys} {...props} />
|
||||||
|
)}
|
||||||
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
</Card>
|
</Card>
|
||||||
</Space>
|
</Space>
|
||||||
|
@ -25,12 +25,15 @@ interface IProps extends RouteComponentProps<MatchParams> {
|
|||||||
|
|
||||||
interface IState {
|
interface IState {
|
||||||
application?: Application;
|
application?: Application;
|
||||||
|
measurementKeys: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
class ApplicationLoader extends Component<IProps, IState> {
|
class ApplicationLoader extends Component<IProps, IState> {
|
||||||
constructor(props: IProps) {
|
constructor(props: IProps) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {};
|
this.state = {
|
||||||
|
measurementKeys: [],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
@ -44,6 +47,7 @@ class ApplicationLoader extends Component<IProps, IState> {
|
|||||||
ApplicationStore.get(req, (resp: GetApplicationResponse) => {
|
ApplicationStore.get(req, (resp: GetApplicationResponse) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
application: resp.getApplication(),
|
application: resp.getApplication(),
|
||||||
|
measurementKeys: resp.getMeasurementKeysList(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -77,7 +81,17 @@ class ApplicationLoader extends Component<IProps, IState> {
|
|||||||
path={`${path}/devices/:devEui([0-9a-f]{16})`}
|
path={`${path}/devices/:devEui([0-9a-f]{16})`}
|
||||||
component={(props: any) => <DeviceLayout tenant={tenant} application={app} {...props} />}
|
component={(props: any) => <DeviceLayout tenant={tenant} application={app} {...props} />}
|
||||||
/>
|
/>
|
||||||
<Route path={path} render={props => <ApplicationLayout tenant={tenant} application={app} {...props} />} />
|
<Route
|
||||||
|
path={path}
|
||||||
|
render={props => (
|
||||||
|
<ApplicationLayout
|
||||||
|
tenant={tenant}
|
||||||
|
application={app}
|
||||||
|
measurementKeys={this.state.measurementKeys}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import InfluxdbCard from "./integrations/InfluxdbCard";
|
|||||||
import PilotThingsCard from "./integrations/PilotThingsCard";
|
import PilotThingsCard from "./integrations/PilotThingsCard";
|
||||||
import LoRaCloudCard from "./integrations/LoRaCloudCard";
|
import LoRaCloudCard from "./integrations/LoRaCloudCard";
|
||||||
import ThingsBoardCard from "./integrations/ThingsBoardCard";
|
import ThingsBoardCard from "./integrations/ThingsBoardCard";
|
||||||
|
import IftttCard from "./integrations/IftttCard";
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
application: Application;
|
application: Application;
|
||||||
@ -95,6 +96,13 @@ class ListIntegrations extends Component<IProps, IState> {
|
|||||||
available.push(<HttpCard application={this.props.application} add />);
|
available.push(<HttpCard application={this.props.application} add />);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IFTTT
|
||||||
|
if (includes(resp.getResultList(), IntegrationKind.IFTTT)) {
|
||||||
|
configured.push(<IftttCard application={this.props.application} />);
|
||||||
|
} else {
|
||||||
|
available.push(<IftttCard application={this.props.application} add />);
|
||||||
|
}
|
||||||
|
|
||||||
// InfluxDB
|
// InfluxDB
|
||||||
if (includes(resp.getResultList(), IntegrationKind.INFLUX_DB)) {
|
if (includes(resp.getResultList(), IntegrationKind.INFLUX_DB)) {
|
||||||
configured.push(<InfluxdbCard application={this.props.application} />);
|
configured.push(<InfluxdbCard application={this.props.application} />);
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
import React, { Component } from "react";
|
||||||
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
|
|
||||||
|
import { Card } from "antd";
|
||||||
|
|
||||||
|
import {
|
||||||
|
Application,
|
||||||
|
IftttIntegration,
|
||||||
|
CreateIftttIntegrationRequest,
|
||||||
|
} from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
||||||
|
|
||||||
|
import IftttIntegrationForm from "./IftttIntegrationForm";
|
||||||
|
import ApplicationStore from "../../../stores/ApplicationStore";
|
||||||
|
|
||||||
|
interface IProps extends RouteComponentProps {
|
||||||
|
application: Application;
|
||||||
|
measurementKeys: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
class CreateIftttIntegration extends Component<IProps> {
|
||||||
|
onFinish = (obj: IftttIntegration) => {
|
||||||
|
obj.setApplicationId(this.props.application.getId());
|
||||||
|
|
||||||
|
let req = new CreateIftttIntegrationRequest();
|
||||||
|
req.setIntegration(obj);
|
||||||
|
|
||||||
|
ApplicationStore.createIftttIntegration(req, () => {
|
||||||
|
this.props.history.push(
|
||||||
|
`/tenants/${this.props.application.getTenantId()}/applications/${this.props.application.getId()}/integrations`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const i = new IftttIntegration();
|
||||||
|
i.setUplinkValuesList(["", ""]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card title="Add IFTTT integration">
|
||||||
|
<IftttIntegrationForm measurementKeys={this.props.measurementKeys} initialValues={i} onFinish={this.onFinish} />
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CreateIftttIntegration;
|
@ -0,0 +1,71 @@
|
|||||||
|
import React, { Component } from "react";
|
||||||
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
|
|
||||||
|
import { Card } from "antd";
|
||||||
|
|
||||||
|
import {
|
||||||
|
Application,
|
||||||
|
IftttIntegration,
|
||||||
|
GetIftttIntegrationRequest,
|
||||||
|
GetIftttIntegrationResponse,
|
||||||
|
UpdateIftttIntegrationRequest,
|
||||||
|
} from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
||||||
|
|
||||||
|
import IftttIntegrationForm from "./IftttIntegrationForm";
|
||||||
|
import ApplicationStore from "../../../stores/ApplicationStore";
|
||||||
|
|
||||||
|
interface IProps extends RouteComponentProps {
|
||||||
|
application: Application;
|
||||||
|
measurementKeys: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IState {
|
||||||
|
integration?: IftttIntegration;
|
||||||
|
}
|
||||||
|
|
||||||
|
class EditIftttIntegration extends Component<IProps, IState> {
|
||||||
|
constructor(props: IProps) {
|
||||||
|
super(props);
|
||||||
|
this.state = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
let req = new GetIftttIntegrationRequest();
|
||||||
|
req.setApplicationId(this.props.application.getId());
|
||||||
|
|
||||||
|
ApplicationStore.getIftttIntegration(req, (resp: GetIftttIntegrationResponse) => {
|
||||||
|
this.setState({
|
||||||
|
integration: resp.getIntegration(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
onFinish = (obj: IftttIntegration) => {
|
||||||
|
let req = new UpdateIftttIntegrationRequest();
|
||||||
|
req.setIntegration(obj);
|
||||||
|
|
||||||
|
ApplicationStore.updateIftttIntegration(req, () => {
|
||||||
|
this.props.history.push(
|
||||||
|
`/tenants/${this.props.application.getTenantId()}/applications/${this.props.application.getId()}/integrations`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
if (this.state.integration === undefined) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card title="Update IFTTT integration">
|
||||||
|
<IftttIntegrationForm
|
||||||
|
measurementKeys={this.props.measurementKeys}
|
||||||
|
initialValues={this.state.integration}
|
||||||
|
onFinish={this.onFinish}
|
||||||
|
/>
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default EditIftttIntegration;
|
58
ui/src/views/applications/integrations/IftttCard.tsx
Normal file
58
ui/src/views/applications/integrations/IftttCard.tsx
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import React, { Component } from "react";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
|
||||||
|
import { Col, Card, Popconfirm } from "antd";
|
||||||
|
import { PlusOutlined, EditOutlined, DeleteOutlined } from "@ant-design/icons";
|
||||||
|
|
||||||
|
import { Application, DeleteIftttIntegrationRequest } from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
||||||
|
|
||||||
|
import ApplicationStore from "../../../stores/ApplicationStore";
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
application: Application;
|
||||||
|
add?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
class IftttCard extends Component<IProps> {
|
||||||
|
onDelete = () => {
|
||||||
|
let req = new DeleteIftttIntegrationRequest();
|
||||||
|
req.setApplicationId(this.props.application.getId());
|
||||||
|
ApplicationStore.deleteIftttIntegration(req, () => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
let actions: any[] = [];
|
||||||
|
|
||||||
|
if (!!this.props.add) {
|
||||||
|
actions = [
|
||||||
|
<Link to="integrations/ifttt/create">
|
||||||
|
<PlusOutlined />
|
||||||
|
</Link>,
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
actions = [
|
||||||
|
<Link to="integrations/ifttt/edit">
|
||||||
|
<EditOutlined />
|
||||||
|
</Link>,
|
||||||
|
<Popconfirm title="Are you sure you want to delete this integration?" onConfirm={this.onDelete}>
|
||||||
|
<DeleteOutlined />
|
||||||
|
</Popconfirm>,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Col span={8}>
|
||||||
|
<Card
|
||||||
|
title="IFTTT"
|
||||||
|
className="integration-card"
|
||||||
|
cover={<img alt="IFTTT" src="/integrations/ifttt.png" style={{ padding: 1 }} />}
|
||||||
|
actions={actions}
|
||||||
|
>
|
||||||
|
<Card.Meta description="The IFTTT integration forwards events to the IFTTT Webhooks integration." />
|
||||||
|
</Card>
|
||||||
|
</Col>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IftttCard;
|
@ -0,0 +1,67 @@
|
|||||||
|
import React, { Component } from "react";
|
||||||
|
|
||||||
|
import { Form, Input, AutoComplete, Button } from "antd";
|
||||||
|
|
||||||
|
import { IftttIntegration } from "@chirpstack/chirpstack-api-grpc-web/api/application_pb";
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
measurementKeys: string[];
|
||||||
|
initialValues: IftttIntegration;
|
||||||
|
onFinish: (obj: IftttIntegration) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
class IftttIntegrationForm extends Component<IProps> {
|
||||||
|
onFinish = (values: IftttIntegration.AsObject) => {
|
||||||
|
const v = Object.assign(this.props.initialValues.toObject(), values);
|
||||||
|
let i = new IftttIntegration();
|
||||||
|
|
||||||
|
i.setApplicationId(v.applicationId);
|
||||||
|
i.setKey(v.key);
|
||||||
|
i.setUplinkValuesList(v.uplinkValuesList);
|
||||||
|
|
||||||
|
this.props.onFinish(i);
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const options: {
|
||||||
|
value: string;
|
||||||
|
}[] = this.props.measurementKeys.map(v => {
|
||||||
|
return { value: v };
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Form layout="vertical" initialValues={this.props.initialValues.toObject()} onFinish={this.onFinish}>
|
||||||
|
<Form.Item
|
||||||
|
label="Key"
|
||||||
|
name="key"
|
||||||
|
rules={[{ required: true, message: "Please enter a key!" }]}
|
||||||
|
tooltip="This key can be obtained from the IFTTT Webhooks integrations documentation"
|
||||||
|
>
|
||||||
|
<Input.Password />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.List name="uplinkValuesList">
|
||||||
|
{fields => (
|
||||||
|
<div>
|
||||||
|
{fields.map((field, i) => (
|
||||||
|
<Form.Item
|
||||||
|
label={`Value ${i + 1} key`}
|
||||||
|
{...field}
|
||||||
|
tooltip="This must match the key in the decoded uplink payload. Nested keys are joined with a '_', array elements are indexed (starting at zero), e.g. 'sensor_0', 'sensor_1'. Auto-completion is based on measurements configuration in the device-profile(s) used within this application."
|
||||||
|
>
|
||||||
|
<AutoComplete options={options} />
|
||||||
|
</Form.Item>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Form.List>
|
||||||
|
<Form.Item>
|
||||||
|
<Button type="primary" htmlType="submit">
|
||||||
|
Submit
|
||||||
|
</Button>
|
||||||
|
</Form.Item>
|
||||||
|
</Form>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IftttIntegrationForm;
|
@ -64,7 +64,7 @@ class GatewayForm extends Component<IProps, IState> {
|
|||||||
this.setLocationFields,
|
this.setLocationFields,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
onFinish = (values: Gateway.AsObject) => {
|
onFinish = (values: Gateway.AsObject) => {
|
||||||
const v = Object.assign(this.props.initialValues.toObject(), values);
|
const v = Object.assign(this.props.initialValues.toObject(), values);
|
||||||
@ -154,7 +154,14 @@ class GatewayForm extends Component<IProps, IState> {
|
|||||||
eventHandlers={{ dragend: this.updateLocation }}
|
eventHandlers={{ dragend: this.updateLocation }}
|
||||||
/>
|
/>
|
||||||
</Map>
|
</Map>
|
||||||
<Button onClick={this.getCurrentLocation} disabled={this.state.locationPending} type="link" style={{float: "right"}}>Set to current location</Button>
|
<Button
|
||||||
|
onClick={this.getCurrentLocation}
|
||||||
|
disabled={this.state.locationPending}
|
||||||
|
type="link"
|
||||||
|
style={{ float: "right" }}
|
||||||
|
>
|
||||||
|
Set to current location
|
||||||
|
</Button>
|
||||||
</Space>
|
</Space>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Tabs.TabPane>
|
</Tabs.TabPane>
|
||||||
|
@ -1881,7 +1881,7 @@
|
|||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@chirpstack/chirpstack-api-grpc-web@file:../api/grpc-web":
|
"@chirpstack/chirpstack-api-grpc-web@file:../api/grpc-web":
|
||||||
version "4.0.0-test.6"
|
version "4.0.0-test.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/google-protobuf" "^3.15.2"
|
"@types/google-protobuf" "^3.15.2"
|
||||||
google-protobuf "^3.17.3"
|
google-protobuf "^3.17.3"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user