Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2720727d5f | ||
|
|
4b1c698a01
|
||
|
|
1a148f6787 | ||
|
|
2508c6b93c
|
||
|
|
65f256351c | ||
|
|
cd3205e249
|
||
|
|
26aac94b52
|
||
|
|
7804c6aed7
|
||
|
|
e1f362b22c
|
||
|
|
bf57535353 | ||
|
|
48a2387ac6
|
||
|
|
da103703aa
|
||
|
|
6d4309d5a7
|
||
|
|
d74e6a1a71
|
||
|
|
c4312ea7a1
|
||
|
|
a5bae34659
|
||
|
|
0a03bfb501
|
||
|
|
4745b31a05 | ||
|
|
a8c25d213e | ||
|
|
5d15b1f584
|
||
|
|
c76f1841f2 | ||
|
|
b873dcecc8
|
||
|
|
14fbe64bd4 | ||
|
|
fd82029453
|
||
|
|
e81297d6e5 | ||
|
|
0254d1b599
|
||
|
|
c22f8ba125 | ||
|
|
cdbfef9b4c
|
||
|
|
92d42b3b07 |
No files matched your search
@@ -0,0 +1,7 @@
|
||||
name: build
|
||||
on:
|
||||
push:
|
||||
jobs:
|
||||
maven:
|
||||
uses: self:KofTwentyTwo/ci-workflows/.gitea/workflows/maven.yaml@v1
|
||||
secrets: inherit
|
||||
@@ -6,6 +6,10 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
- `SlackDeliveryDestination` now implements the QQQ 4.1 core delivery SPI (`com.kingsrook.qqq.backend.core.delivery`, qqq#1205) and the producer registers it as `slack` in the core `DeliveryDestinationsMetaData` registry; the stand-in SPI copy is removed.
|
||||
- `SlackPayloadGuard` uses core `ClassifiedValues` for field classification and `ClassifiedValueTokens.changed()` for tokenized restricted values (qqq#1142), replacing its stand-in logic.
|
||||
|
||||
### Fixed
|
||||
- QBit metadata now reports the Maven artifact version, including release versions, from a filtered properties resource.
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<properties>
|
||||
<revision>0.1.0-SNAPSHOT</revision>
|
||||
<qqq.version>4.1.0-RC.26</qqq.version> <!-- feeds qbit-build-parent's qqq-bom-pom import -->
|
||||
<revision>0.1.0-RC.7</revision>
|
||||
<maven.compiler.source>21</maven.compiler.source>
|
||||
<maven.compiler.target>21</maven.compiler.target>
|
||||
<jacoco.version>0.8.15</jacoco.version>
|
||||
@@ -34,7 +35,7 @@
|
||||
<parent>
|
||||
<groupId>com.kingsrook</groupId>
|
||||
<artifactId>qbit-build-parent</artifactId>
|
||||
<version>2.1.1</version>
|
||||
<version>2.2.1</version>
|
||||
</parent>
|
||||
|
||||
<groupId>com.kingsrook.qbits</groupId>
|
||||
@@ -77,7 +78,7 @@
|
||||
<dependency>
|
||||
<groupId>com.kingsrook.qqq</groupId>
|
||||
<artifactId>qqq-frontend-next</artifactId>
|
||||
<version>1.0.0-RC.19</version>
|
||||
<version>1.0.0-RC.38</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -241,7 +242,7 @@
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<properties>
|
||||
<qqq.snapshot.version>4.1.0-RC.7</qqq.snapshot.version>
|
||||
<qqq.snapshot.version>4.1.0-RC.26</qqq.snapshot.version>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
@@ -179,7 +179,7 @@ public class SlackQBitProducer implements QBitMetaDataProducer<SlackQBitConfig>
|
||||
output.add(new SlackOutboxMessagingProviderMetaData().withName(qBitConfig.getBridgeProviderName()));
|
||||
|
||||
output.addSelfToInstance(qInstance);
|
||||
com.kingsrook.qbits.slack.delivery.SlackDeliveryDestination.register();
|
||||
com.kingsrook.qbits.slack.delivery.SlackDeliveryDestination.register(qInstance, getQBitConfig());
|
||||
qInstance.addApp(com.kingsrook.qbits.slack.app.SlackApp.app(qInstance.getTables()));
|
||||
com.kingsrook.qbits.slack.app.SlackApp.widgets().forEach(qInstance::addWidget);
|
||||
if(isPreferencesAvailable())
|
||||
|
||||
@@ -26,15 +26,9 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import com.kingsrook.qbits.slack.SlackQBitConfig;
|
||||
import com.kingsrook.qbits.slack.api.SlackApi;
|
||||
import com.kingsrook.qbits.slack.api.SlackApiMessage;
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryDestinationContext; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryDestinationInterface; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryRequest; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryResult; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryTargetOption; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryTargetStep; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.QDeliveryDestinationMetaData; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.metadata.SlackTables;
|
||||
import com.kingsrook.qbits.slack.outbox.SlackSendRequest;
|
||||
import com.kingsrook.qbits.slack.outbox.SlackSendResult;
|
||||
@@ -45,45 +39,72 @@ import com.kingsrook.qbits.slack.support.SlackRuntime;
|
||||
import com.kingsrook.qbits.slack.support.SlackStore;
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.DataClassification;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationContext;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationInterface;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationsMetaData;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryRequest;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryResult;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryTargetOption;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryTargetStep;
|
||||
import com.kingsrook.qqq.backend.core.delivery.QDeliveryDestinationMetaData;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
||||
import com.kingsrook.qqq.backend.core.model.session.QSystemUserSession;
|
||||
|
||||
/*******************************************************************************
|
||||
** Host-callable Slack output destination until core's delivery SPI is released.
|
||||
** Targets are workspaceId and where (me or a channel address from SlackApi).
|
||||
** Slack output destination for the QQQ core delivery SPI
|
||||
** (DeliveryDestinationInterface). The producer registers it in the core
|
||||
** DeliveryDestinationsMetaData registry, so hosts that install core delivery
|
||||
** offer it in their pickers. Targets are workspaceId and where (me or a
|
||||
** channel address from SlackApi).
|
||||
*******************************************************************************/
|
||||
public class SlackDeliveryDestination implements DeliveryDestinationInterface
|
||||
{
|
||||
public static final String NAME = "slack";
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Describe the policy hosts must apply before invoking this destination.
|
||||
** Describe the policy core applies before invoking this destination, using
|
||||
** the Slack config of the current instance.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData metadata()
|
||||
{
|
||||
return (new QDeliveryDestinationMetaData().withName("slack").withLabel("Slack")
|
||||
return (metadata(SlackRuntime.config()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Describe the policy core applies before invoking this destination.
|
||||
*******************************************************************************/
|
||||
public static QDeliveryDestinationMetaData metadata(SlackQBitConfig config)
|
||||
{
|
||||
return (new QDeliveryDestinationMetaData().withName(NAME).withLabel("Slack")
|
||||
.withPermissionName("slack.send").withCodeReference(new QCodeReference(SlackDeliveryDestination.class))
|
||||
.withMaxClassification(DataClassification.CONFIDENTIAL)
|
||||
.withAboveMaxClassification(QDeliveryDestinationMetaData.AboveMaxClassification.REFUSE)
|
||||
.withMaxAttachmentBytes(SlackRuntime.config().getMaxAttachmentBytes()).withAllowBearerLinks(false));
|
||||
.withMaxAttachmentBytes(config.getMaxAttachmentBytes()).withAllowBearerLinks(false));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Detect the real SPI without registering an incompatible temporary instance.
|
||||
** Register with the core delivery registry; production may run repeatedly,
|
||||
** and a destination already registered under this name is kept.
|
||||
*******************************************************************************/
|
||||
public static void register()
|
||||
public static void register(QInstance instance, SlackQBitConfig config)
|
||||
{
|
||||
try
|
||||
DeliveryDestinationsMetaData registry = DeliveryDestinationsMetaData.ofOrWithNew(instance);
|
||||
if(registry.getDestinations().stream().noneMatch(destination -> NAME.equals(destination.getName())))
|
||||
{
|
||||
Class.forName("com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationsMetaData");
|
||||
com.kingsrook.qqq.backend.core.logging.QLogger.getLogger(SlackDeliveryDestination.class)
|
||||
.info("Slack delivery stand-in will be replaced after RC.8; host registration is deferred"); // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
}
|
||||
catch(ClassNotFoundException e)
|
||||
{
|
||||
// RC.6 hosts use this destination directly.
|
||||
registry.withDestination(metadata(config));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Offer only active connections and membership-checked targets of this user.
|
||||
*******************************************************************************/
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryAttachment.
|
||||
*******************************************************************************/
|
||||
public class DeliveryAttachment implements java.io.Serializable
|
||||
{
|
||||
private String fileName;
|
||||
private String mimeType;
|
||||
private Long size;
|
||||
private String storageTableName;
|
||||
private String storageReference;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get fileName.
|
||||
*******************************************************************************/
|
||||
public String getFileName()
|
||||
{
|
||||
return (fileName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set fileName.
|
||||
*******************************************************************************/
|
||||
public void setFileName(String fileName)
|
||||
{
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With fileName.
|
||||
*******************************************************************************/
|
||||
public DeliveryAttachment withFileName(String fileName)
|
||||
{
|
||||
this.fileName = fileName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get mimeType.
|
||||
*******************************************************************************/
|
||||
public String getMimeType()
|
||||
{
|
||||
return (mimeType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set mimeType.
|
||||
*******************************************************************************/
|
||||
public void setMimeType(String mimeType)
|
||||
{
|
||||
this.mimeType = mimeType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With mimeType.
|
||||
*******************************************************************************/
|
||||
public DeliveryAttachment withMimeType(String mimeType)
|
||||
{
|
||||
this.mimeType = mimeType;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get size.
|
||||
*******************************************************************************/
|
||||
public Long getSize()
|
||||
{
|
||||
return (size);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set size.
|
||||
*******************************************************************************/
|
||||
public void setSize(Long size)
|
||||
{
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With size.
|
||||
*******************************************************************************/
|
||||
public DeliveryAttachment withSize(Long size)
|
||||
{
|
||||
this.size = size;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get storageTableName.
|
||||
*******************************************************************************/
|
||||
public String getStorageTableName()
|
||||
{
|
||||
return (storageTableName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set storageTableName.
|
||||
*******************************************************************************/
|
||||
public void setStorageTableName(String storageTableName)
|
||||
{
|
||||
this.storageTableName = storageTableName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With storageTableName.
|
||||
*******************************************************************************/
|
||||
public DeliveryAttachment withStorageTableName(String storageTableName)
|
||||
{
|
||||
this.storageTableName = storageTableName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get storageReference.
|
||||
*******************************************************************************/
|
||||
public String getStorageReference()
|
||||
{
|
||||
return (storageReference);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set storageReference.
|
||||
*******************************************************************************/
|
||||
public void setStorageReference(String storageReference)
|
||||
{
|
||||
this.storageReference = storageReference;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With storageReference.
|
||||
*******************************************************************************/
|
||||
public DeliveryAttachment withStorageReference(String storageReference)
|
||||
{
|
||||
this.storageReference = storageReference;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryDestinationContext.
|
||||
*******************************************************************************/
|
||||
public class DeliveryDestinationContext implements java.io.Serializable
|
||||
{
|
||||
private QDeliveryDestinationMetaData destination;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get destination.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData getDestination()
|
||||
{
|
||||
return (destination);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set destination.
|
||||
*******************************************************************************/
|
||||
public void setDestination(QDeliveryDestinationMetaData destination)
|
||||
{
|
||||
this.destination = destination;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With destination.
|
||||
*******************************************************************************/
|
||||
public DeliveryDestinationContext withDestination(QDeliveryDestinationMetaData destination)
|
||||
{
|
||||
this.destination = destination;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Owner-scoped output delivery provider.
|
||||
*******************************************************************************/
|
||||
public interface DeliveryDestinationInterface
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Describe the next target in the current owner session.
|
||||
*******************************************************************************/
|
||||
DeliveryTargetStep describeTargets(DeliveryDestinationContext context, Map<String, Serializable> chosen) throws QException;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Validate a complete target before sending.
|
||||
*******************************************************************************/
|
||||
default List<String> validate(DeliveryRequest request) throws QException
|
||||
{
|
||||
return (List.of());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Deliver idempotently using the request key.
|
||||
*******************************************************************************/
|
||||
DeliveryResult deliver(DeliveryRequest request) throws QException;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Reconcile a previous delivery when supported.
|
||||
*******************************************************************************/
|
||||
default Optional<DeliveryResult> lookup(String idempotencyKey) throws QException
|
||||
{
|
||||
return (Optional.empty());
|
||||
}
|
||||
}
|
||||
@@ -1,453 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.DataClassification;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryRequest.
|
||||
*******************************************************************************/
|
||||
public class DeliveryRequest implements java.io.Serializable
|
||||
{
|
||||
private String destinationName;
|
||||
private String ownerUserId;
|
||||
private String sourceType;
|
||||
private String sourceKey;
|
||||
private String title;
|
||||
private String summary;
|
||||
private String link;
|
||||
private String idempotencyKey;
|
||||
private Map<String, Serializable> targetValues = Map.of();
|
||||
private List<DeliveryAttachment> attachments = List.of();
|
||||
private DataClassification contentClassification;
|
||||
private List<String> restrictedFieldLabels = List.of();
|
||||
private boolean leaveOutRestricted;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get destinationName.
|
||||
*******************************************************************************/
|
||||
public String getDestinationName()
|
||||
{
|
||||
return (destinationName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set destinationName.
|
||||
*******************************************************************************/
|
||||
public void setDestinationName(String destinationName)
|
||||
{
|
||||
this.destinationName = destinationName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With destinationName.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withDestinationName(String destinationName)
|
||||
{
|
||||
this.destinationName = destinationName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get ownerUserId.
|
||||
*******************************************************************************/
|
||||
public String getOwnerUserId()
|
||||
{
|
||||
return (ownerUserId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set ownerUserId.
|
||||
*******************************************************************************/
|
||||
public void setOwnerUserId(String ownerUserId)
|
||||
{
|
||||
this.ownerUserId = ownerUserId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With ownerUserId.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withOwnerUserId(String ownerUserId)
|
||||
{
|
||||
this.ownerUserId = ownerUserId;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get sourceType.
|
||||
*******************************************************************************/
|
||||
public String getSourceType()
|
||||
{
|
||||
return (sourceType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set sourceType.
|
||||
*******************************************************************************/
|
||||
public void setSourceType(String sourceType)
|
||||
{
|
||||
this.sourceType = sourceType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With sourceType.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withSourceType(String sourceType)
|
||||
{
|
||||
this.sourceType = sourceType;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get sourceKey.
|
||||
*******************************************************************************/
|
||||
public String getSourceKey()
|
||||
{
|
||||
return (sourceKey);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set sourceKey.
|
||||
*******************************************************************************/
|
||||
public void setSourceKey(String sourceKey)
|
||||
{
|
||||
this.sourceKey = sourceKey;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With sourceKey.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withSourceKey(String sourceKey)
|
||||
{
|
||||
this.sourceKey = sourceKey;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get title.
|
||||
*******************************************************************************/
|
||||
public String getTitle()
|
||||
{
|
||||
return (title);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set title.
|
||||
*******************************************************************************/
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With title.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get summary.
|
||||
*******************************************************************************/
|
||||
public String getSummary()
|
||||
{
|
||||
return (summary);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set summary.
|
||||
*******************************************************************************/
|
||||
public void setSummary(String summary)
|
||||
{
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With summary.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withSummary(String summary)
|
||||
{
|
||||
this.summary = summary;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get link.
|
||||
*******************************************************************************/
|
||||
public String getLink()
|
||||
{
|
||||
return (link);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set link.
|
||||
*******************************************************************************/
|
||||
public void setLink(String link)
|
||||
{
|
||||
this.link = link;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With link.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withLink(String link)
|
||||
{
|
||||
this.link = link;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get idempotencyKey.
|
||||
*******************************************************************************/
|
||||
public String getIdempotencyKey()
|
||||
{
|
||||
return (idempotencyKey);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set idempotencyKey.
|
||||
*******************************************************************************/
|
||||
public void setIdempotencyKey(String idempotencyKey)
|
||||
{
|
||||
this.idempotencyKey = idempotencyKey;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With idempotencyKey.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withIdempotencyKey(String idempotencyKey)
|
||||
{
|
||||
this.idempotencyKey = idempotencyKey;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get targetValues.
|
||||
*******************************************************************************/
|
||||
public Map<String, Serializable> getTargetValues()
|
||||
{
|
||||
return (targetValues);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set targetValues.
|
||||
*******************************************************************************/
|
||||
public void setTargetValues(Map<String, Serializable> targetValues)
|
||||
{
|
||||
this.targetValues = targetValues;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With targetValues.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withTargetValues(Map<String, Serializable> targetValues)
|
||||
{
|
||||
this.targetValues = targetValues;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get attachments.
|
||||
*******************************************************************************/
|
||||
public List<DeliveryAttachment> getAttachments()
|
||||
{
|
||||
return (attachments);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set attachments.
|
||||
*******************************************************************************/
|
||||
public void setAttachments(List<DeliveryAttachment> attachments)
|
||||
{
|
||||
this.attachments = attachments;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With attachments.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withAttachments(List<DeliveryAttachment> attachments)
|
||||
{
|
||||
this.attachments = attachments;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get contentClassification.
|
||||
*******************************************************************************/
|
||||
public DataClassification getContentClassification()
|
||||
{
|
||||
return (contentClassification);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set contentClassification.
|
||||
*******************************************************************************/
|
||||
public void setContentClassification(DataClassification contentClassification)
|
||||
{
|
||||
this.contentClassification = contentClassification;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With contentClassification.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withContentClassification(DataClassification contentClassification)
|
||||
{
|
||||
this.contentClassification = contentClassification;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get restrictedFieldLabels.
|
||||
*******************************************************************************/
|
||||
public List<String> getRestrictedFieldLabels()
|
||||
{
|
||||
return (restrictedFieldLabels);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set restrictedFieldLabels.
|
||||
*******************************************************************************/
|
||||
public void setRestrictedFieldLabels(List<String> restrictedFieldLabels)
|
||||
{
|
||||
this.restrictedFieldLabels = restrictedFieldLabels;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With restrictedFieldLabels.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withRestrictedFieldLabels(List<String> restrictedFieldLabels)
|
||||
{
|
||||
this.restrictedFieldLabels = restrictedFieldLabels;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get leaveOutRestricted.
|
||||
*******************************************************************************/
|
||||
public boolean getLeaveOutRestricted()
|
||||
{
|
||||
return (leaveOutRestricted);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set leaveOutRestricted.
|
||||
*******************************************************************************/
|
||||
public void setLeaveOutRestricted(boolean leaveOutRestricted)
|
||||
{
|
||||
this.leaveOutRestricted = leaveOutRestricted;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With leaveOutRestricted.
|
||||
*******************************************************************************/
|
||||
public DeliveryRequest withLeaveOutRestricted(boolean leaveOutRestricted)
|
||||
{
|
||||
this.leaveOutRestricted = leaveOutRestricted;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
@@ -1,139 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryResult.
|
||||
*******************************************************************************/
|
||||
public class DeliveryResult implements java.io.Serializable
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Recorded delivery outcome.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
public enum Status
|
||||
{
|
||||
DELIVERED, QUEUED, REFUSED, FAILED_RETRYABLE, FAILED, UNAUTHORIZED
|
||||
}
|
||||
|
||||
private Status status;
|
||||
private String externalReference;
|
||||
private List<String> reasons = List.of();
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get status.
|
||||
*******************************************************************************/
|
||||
public Status getStatus()
|
||||
{
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set status.
|
||||
*******************************************************************************/
|
||||
public void setStatus(Status status)
|
||||
{
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With status.
|
||||
*******************************************************************************/
|
||||
public DeliveryResult withStatus(Status status)
|
||||
{
|
||||
this.status = status;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get externalReference.
|
||||
*******************************************************************************/
|
||||
public String getExternalReference()
|
||||
{
|
||||
return (externalReference);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set externalReference.
|
||||
*******************************************************************************/
|
||||
public void setExternalReference(String externalReference)
|
||||
{
|
||||
this.externalReference = externalReference;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With externalReference.
|
||||
*******************************************************************************/
|
||||
public DeliveryResult withExternalReference(String externalReference)
|
||||
{
|
||||
this.externalReference = externalReference;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get reasons.
|
||||
*******************************************************************************/
|
||||
public List<String> getReasons()
|
||||
{
|
||||
return (reasons);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set reasons.
|
||||
*******************************************************************************/
|
||||
public void setReasons(List<String> reasons)
|
||||
{
|
||||
this.reasons = reasons;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With reasons.
|
||||
*******************************************************************************/
|
||||
public DeliveryResult withReasons(List<String> reasons)
|
||||
{
|
||||
this.reasons = reasons;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryTargetOption.
|
||||
*******************************************************************************/
|
||||
public class DeliveryTargetOption implements java.io.Serializable
|
||||
{
|
||||
private String value;
|
||||
private String label;
|
||||
private String description;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get value.
|
||||
*******************************************************************************/
|
||||
public String getValue()
|
||||
{
|
||||
return (value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set value.
|
||||
*******************************************************************************/
|
||||
public void setValue(String value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With value.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetOption withValue(String value)
|
||||
{
|
||||
this.value = value;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get label.
|
||||
*******************************************************************************/
|
||||
public String getLabel()
|
||||
{
|
||||
return (label);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set label.
|
||||
*******************************************************************************/
|
||||
public void setLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With label.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetOption withLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get description.
|
||||
*******************************************************************************/
|
||||
public String getDescription()
|
||||
{
|
||||
return (description);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set description.
|
||||
*******************************************************************************/
|
||||
public void setDescription(String description)
|
||||
{
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With description.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetOption withDescription(String description)
|
||||
{
|
||||
this.description = description;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
@@ -1,226 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** DeliveryTargetStep.
|
||||
*******************************************************************************/
|
||||
public class DeliveryTargetStep implements java.io.Serializable
|
||||
{
|
||||
private String name;
|
||||
private String label;
|
||||
private List<DeliveryTargetOption> options = List.of();
|
||||
private boolean freeText;
|
||||
private boolean complete;
|
||||
private String summary;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get name.
|
||||
*******************************************************************************/
|
||||
public String getName()
|
||||
{
|
||||
return (name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set name.
|
||||
*******************************************************************************/
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With name.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get label.
|
||||
*******************************************************************************/
|
||||
public String getLabel()
|
||||
{
|
||||
return (label);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set label.
|
||||
*******************************************************************************/
|
||||
public void setLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With label.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get options.
|
||||
*******************************************************************************/
|
||||
public List<DeliveryTargetOption> getOptions()
|
||||
{
|
||||
return (options);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set options.
|
||||
*******************************************************************************/
|
||||
public void setOptions(List<DeliveryTargetOption> options)
|
||||
{
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With options.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withOptions(List<DeliveryTargetOption> options)
|
||||
{
|
||||
this.options = options;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get freeText.
|
||||
*******************************************************************************/
|
||||
public boolean getFreeText()
|
||||
{
|
||||
return (freeText);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set freeText.
|
||||
*******************************************************************************/
|
||||
public void setFreeText(boolean freeText)
|
||||
{
|
||||
this.freeText = freeText;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With freeText.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withFreeText(boolean freeText)
|
||||
{
|
||||
this.freeText = freeText;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get complete.
|
||||
*******************************************************************************/
|
||||
public boolean getComplete()
|
||||
{
|
||||
return (complete);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set complete.
|
||||
*******************************************************************************/
|
||||
public void setComplete(boolean complete)
|
||||
{
|
||||
this.complete = complete;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With complete.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withComplete(boolean complete)
|
||||
{
|
||||
this.complete = complete;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get summary.
|
||||
*******************************************************************************/
|
||||
public String getSummary()
|
||||
{
|
||||
return (summary);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set summary.
|
||||
*******************************************************************************/
|
||||
public void setSummary(String summary)
|
||||
{
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With summary.
|
||||
*******************************************************************************/
|
||||
public DeliveryTargetStep withSummary(String summary)
|
||||
{
|
||||
this.summary = summary;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
-396
@@ -1,396 +0,0 @@
|
||||
/*
|
||||
* QQQ - Low-code Application Framework for Engineers.
|
||||
* Copyright (C) 2021-2026. Kingsrook, LLC
|
||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||
* contact@kingsrook.com
|
||||
* https://github.com/Kingsrook/
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.kingsrook.qbits.slack.delivery.standin; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
|
||||
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.DataClassification;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** QDeliveryDestinationMetaData.
|
||||
*******************************************************************************/
|
||||
public class QDeliveryDestinationMetaData implements java.io.Serializable
|
||||
{
|
||||
/*******************************************************************************
|
||||
** Policy for content above the destination ceiling.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
public enum AboveMaxClassification
|
||||
{
|
||||
REFUSE, LINK_ONLY
|
||||
}
|
||||
|
||||
private String name;
|
||||
private String label;
|
||||
private String icon;
|
||||
private String permissionName;
|
||||
private String emailProviderName;
|
||||
private Integer order = 0;
|
||||
private QCodeReference codeReference;
|
||||
private DataClassification maxClassification = DataClassification.PUBLIC;
|
||||
private Long maxAttachmentBytes;
|
||||
private boolean allowBearerLinks;
|
||||
private AboveMaxClassification aboveMaxClassification = AboveMaxClassification.REFUSE;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get name.
|
||||
*******************************************************************************/
|
||||
public String getName()
|
||||
{
|
||||
return (name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set name.
|
||||
*******************************************************************************/
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With name.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get label.
|
||||
*******************************************************************************/
|
||||
public String getLabel()
|
||||
{
|
||||
return (label);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set label.
|
||||
*******************************************************************************/
|
||||
public void setLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With label.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withLabel(String label)
|
||||
{
|
||||
this.label = label;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get icon.
|
||||
*******************************************************************************/
|
||||
public String getIcon()
|
||||
{
|
||||
return (icon);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set icon.
|
||||
*******************************************************************************/
|
||||
public void setIcon(String icon)
|
||||
{
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With icon.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withIcon(String icon)
|
||||
{
|
||||
this.icon = icon;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get permissionName.
|
||||
*******************************************************************************/
|
||||
public String getPermissionName()
|
||||
{
|
||||
return (permissionName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set permissionName.
|
||||
*******************************************************************************/
|
||||
public void setPermissionName(String permissionName)
|
||||
{
|
||||
this.permissionName = permissionName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With permissionName.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withPermissionName(String permissionName)
|
||||
{
|
||||
this.permissionName = permissionName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get emailProviderName.
|
||||
*******************************************************************************/
|
||||
public String getEmailProviderName()
|
||||
{
|
||||
return (emailProviderName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set emailProviderName.
|
||||
*******************************************************************************/
|
||||
public void setEmailProviderName(String emailProviderName)
|
||||
{
|
||||
this.emailProviderName = emailProviderName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With emailProviderName.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withEmailProviderName(String emailProviderName)
|
||||
{
|
||||
this.emailProviderName = emailProviderName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get order.
|
||||
*******************************************************************************/
|
||||
public Integer getOrder()
|
||||
{
|
||||
return (order);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set order.
|
||||
*******************************************************************************/
|
||||
public void setOrder(Integer order)
|
||||
{
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With order.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withOrder(Integer order)
|
||||
{
|
||||
this.order = order;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get codeReference.
|
||||
*******************************************************************************/
|
||||
public QCodeReference getCodeReference()
|
||||
{
|
||||
return (codeReference);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set codeReference.
|
||||
*******************************************************************************/
|
||||
public void setCodeReference(QCodeReference codeReference)
|
||||
{
|
||||
this.codeReference = codeReference;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With codeReference.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withCodeReference(QCodeReference codeReference)
|
||||
{
|
||||
this.codeReference = codeReference;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get maxClassification.
|
||||
*******************************************************************************/
|
||||
public DataClassification getMaxClassification()
|
||||
{
|
||||
return (maxClassification);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set maxClassification.
|
||||
*******************************************************************************/
|
||||
public void setMaxClassification(DataClassification maxClassification)
|
||||
{
|
||||
this.maxClassification = maxClassification;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With maxClassification.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withMaxClassification(DataClassification maxClassification)
|
||||
{
|
||||
this.maxClassification = maxClassification;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get maxAttachmentBytes.
|
||||
*******************************************************************************/
|
||||
public Long getMaxAttachmentBytes()
|
||||
{
|
||||
return (maxAttachmentBytes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set maxAttachmentBytes.
|
||||
*******************************************************************************/
|
||||
public void setMaxAttachmentBytes(Long maxAttachmentBytes)
|
||||
{
|
||||
this.maxAttachmentBytes = maxAttachmentBytes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With maxAttachmentBytes.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withMaxAttachmentBytes(Long maxAttachmentBytes)
|
||||
{
|
||||
this.maxAttachmentBytes = maxAttachmentBytes;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get allowBearerLinks.
|
||||
*******************************************************************************/
|
||||
public boolean getAllowBearerLinks()
|
||||
{
|
||||
return (allowBearerLinks);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set allowBearerLinks.
|
||||
*******************************************************************************/
|
||||
public void setAllowBearerLinks(boolean allowBearerLinks)
|
||||
{
|
||||
this.allowBearerLinks = allowBearerLinks;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With allowBearerLinks.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withAllowBearerLinks(boolean allowBearerLinks)
|
||||
{
|
||||
this.allowBearerLinks = allowBearerLinks;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get aboveMaxClassification.
|
||||
*******************************************************************************/
|
||||
public AboveMaxClassification getAboveMaxClassification()
|
||||
{
|
||||
return (aboveMaxClassification);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Set aboveMaxClassification.
|
||||
*******************************************************************************/
|
||||
public void setAboveMaxClassification(AboveMaxClassification aboveMaxClassification)
|
||||
{
|
||||
this.aboveMaxClassification = aboveMaxClassification;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** With aboveMaxClassification.
|
||||
*******************************************************************************/
|
||||
public QDeliveryDestinationMetaData withAboveMaxClassification(AboveMaxClassification aboveMaxClassification)
|
||||
{
|
||||
this.aboveMaxClassification = aboveMaxClassification;
|
||||
return (this);
|
||||
}
|
||||
}
|
||||
@@ -27,15 +27,16 @@ import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
import com.kingsrook.qbits.slack.support.SlackRuntime;
|
||||
import com.kingsrook.qbits.slack.template.VariableSchema;
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.AiDataClassifications;
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.DataClassification;
|
||||
import com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.ClassifiedValueTokens;
|
||||
import com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.ClassifiedValues;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
|
||||
/*******************************************************************************
|
||||
** Refuse restricted content before persistence. Uses RC.6 field classifications.
|
||||
** STAND-IN(core=QRun-IO/qqq#1142, removeBy=4.1.0-RC.8): ClassifiedValues and
|
||||
** ClassifiedValueTokens are absent in RC.6. Restricted tokens use changed:v1,
|
||||
** a deliberately non-reversible marker, never a hash of a low-entropy value.
|
||||
** Refuse restricted content before persistence. Field classification comes
|
||||
** from core ClassifiedValues (which honors a host's audit-value protector);
|
||||
** tokenized restricted values become core ClassifiedValueTokens.changed(), a
|
||||
** deliberately non-reversible marker, never a hash of a low-entropy value.
|
||||
*******************************************************************************/
|
||||
public final class SlackPayloadGuard
|
||||
{
|
||||
@@ -88,7 +89,10 @@ public final class SlackPayloadGuard
|
||||
{
|
||||
throw (new IllegalArgumentException("Unknown classified field"));
|
||||
}
|
||||
classification = DataClassification.max(classification, AiDataClassifications.ofField(table, field));
|
||||
if(ClassifiedValues.isClassified(table, field))
|
||||
{
|
||||
return (true);
|
||||
}
|
||||
}
|
||||
return (classification != null && classification.isAtLeast(DataClassification.PII));
|
||||
}
|
||||
@@ -123,7 +127,7 @@ public final class SlackPayloadGuard
|
||||
{
|
||||
throw (new RestrictedVariableException(declaration.name()));
|
||||
}
|
||||
safe.put(entry.getKey(), "changed:v1");
|
||||
safe.put(entry.getKey(), ClassifiedValueTokens.changed());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -145,7 +149,7 @@ public final class SlackPayloadGuard
|
||||
{
|
||||
throw (new RestrictedVariableException(declaration.name()));
|
||||
}
|
||||
safe.put(declaration.name(), "changed:v1");
|
||||
safe.put(declaration.name(), ClassifiedValueTokens.changed());
|
||||
}
|
||||
}
|
||||
return (safe);
|
||||
@@ -168,7 +172,7 @@ public final class SlackPayloadGuard
|
||||
{
|
||||
throw (new IllegalArgumentException("Restricted template variable"));
|
||||
}
|
||||
return ("changed:v1");
|
||||
return (ClassifiedValueTokens.changed());
|
||||
}
|
||||
return (sanitize(classified.value(), tokenize));
|
||||
}
|
||||
|
||||
@@ -25,16 +25,18 @@ import java.util.Map;
|
||||
import com.kingsrook.qbits.slack.api.SlackApi;
|
||||
import com.kingsrook.qbits.slack.delivery.SlackDeliveryDestination;
|
||||
import com.kingsrook.qbits.slack.delivery.SlackDispatcher;
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryAttachment; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryDestinationContext; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryRequest; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.delivery.standin.DeliveryResult; // STAND-IN(core=QRun-IO/qqq#1205, removeBy=4.1.0-RC.8)
|
||||
import com.kingsrook.qbits.slack.metadata.SlackTables;
|
||||
import com.kingsrook.qbits.slack.security.SlackSecurity;
|
||||
import com.kingsrook.qbits.slack.support.SlackStore;
|
||||
import com.kingsrook.qbits.slack.template.SlackTemplates;
|
||||
import com.kingsrook.qqq.backend.core.actions.ai.DataClassification;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.StorageAction;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryAttachment;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationContext;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinations;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryDestinationsMetaData;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryRequest;
|
||||
import com.kingsrook.qqq.backend.core.delivery.DeliveryResult;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.storage.StorageInput;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData;
|
||||
@@ -126,6 +128,25 @@ class SlackDeliveryDestinationTest
|
||||
assertThat(context.getDestination().getMaxAttachmentBytes()).isEqualTo(env.config().getMaxAttachmentBytes());
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** The producer registers Slack once in the core delivery registry, and core
|
||||
** loads this implementation from it.
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void registeredWithCoreDelivery() throws Exception
|
||||
{
|
||||
var registry = DeliveryDestinationsMetaData.of(env.instance());
|
||||
assertThat(registry).isNotNull();
|
||||
SlackDeliveryDestination.register(env.instance(), env.config());
|
||||
var registered = registry.getDestinations().stream().filter(d -> SlackDeliveryDestination.NAME.equals(d.getName())).toList();
|
||||
assertThat(registered).singleElement().satisfies(d ->
|
||||
{
|
||||
assertThat(d.getPermissionName()).isEqualTo("slack.send");
|
||||
assertThat(d.getMaxAttachmentBytes()).isEqualTo(env.config().getMaxAttachmentBytes());
|
||||
});
|
||||
assertThat(DeliveryDestinations.implementation(registered.getFirst())).isInstanceOf(SlackDeliveryDestination.class);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** DM and channel use the delivery template and preserve the idempotency key.
|
||||
*******************************************************************************/
|
||||
|
||||
Reference in new issue
Block a user