Skip to content

Commit

Permalink
Merge branch 'release/0.8.0' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Pascal Holy committed Feb 9, 2021
2 parents f3081fe + c44efc5 commit 01d4b9d
Show file tree
Hide file tree
Showing 329 changed files with 2,806 additions and 2,297 deletions.
17 changes: 1 addition & 16 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,5 @@
"react": {
"version": "16.12"
}
},
"overrides": [
{
"files": ["frontend/chat-plugin/**/*.tsx"],
"settings": {
"react": {
"pragma": "h"
},
"import/resolver": {
"node": {
"extensions": [".ts", ".tsx"]
}
}
}
}
]
}
}
1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ jobs:

- name: Lint
run: |
sudo apt-get install -y shellcheck
./scripts/lint.sh
- name: Test
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
docs/docs/cli/*.md
build/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ Here is a quick overview of how the repository is organized:

- `frontend`

This directory contains the code of a demo epplication which showcases
This directory contains the code of a demo application which showcases
the feature of the platform.

- `infrastructure`
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.7.0
0.8.0
4 changes: 2 additions & 2 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
name = "com_github_airyhq_bazel_tools",
commit = "cdb56bffd21ea94fe909394a2c7321135dfd506f",
commit = "5f3c835f4320292e76ad1b23308ea3704a35bd64",
remote = "https://github.com/airyhq/bazel-tools.git",
shallow_since = "1607079534 +0100",
shallow_since = "1612440527 +0100",
)

load("@com_github_airyhq_bazel_tools//:repositories.bzl", "airy_bazel_tools_dependencies", "airy_jvm_deps")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ ResponseEntity<ChannelsResponsePayload> listChannels() {
.collect(toList())));
}

@PostMapping("/chatplugin.connect")
@PostMapping("/channels.chatplugin.connect")
ResponseEntity<?> connect(@RequestBody @Valid ConnectChannelRequestPayload requestPayload) {
final String sourceChannelId = requestPayload.getName();
final String sourceIdentifier = "chat_plugin";
Expand All @@ -69,7 +69,7 @@ ResponseEntity<?> connect(@RequestBody @Valid ConnectChannelRequestPayload reque
return ResponseEntity.ok(fromChannel(channel));
}

@PostMapping("/chatplugin.disconnect")
@PostMapping("/channels.chatplugin.disconnect")
ResponseEntity<?> disconnect(@RequestBody @Valid ChannelDisconnectRequestPayload requestPayload) {
final String channelId = requestPayload.getChannelId().toString();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import co.airy.core.api.communication.payload.ConversationListResponsePayload;
import co.airy.core.api.communication.payload.ConversationResponsePayload;
import co.airy.core.api.communication.payload.ConversationTagRequestPayload;
import co.airy.core.api.communication.payload.ResponseMetadata;
import co.airy.core.api.communication.payload.PaginationData;
import co.airy.model.metadata.MetadataKeys;
import co.airy.model.metadata.Subject;
import co.airy.pagination.Page;
Expand Down Expand Up @@ -98,8 +98,8 @@ private ResponseEntity<?> queryConversations(ConversationListRequestPayload requ
return ResponseEntity.ok(
ConversationListResponsePayload.builder()
.data(response)
.responseMetadata(
ResponseMetadata.builder()
.paginationData(
PaginationData.builder()
.filteredTotal(conversationIndices.size())
.nextCursor(page.getNextCursor())
.previousCursor(page.getPreviousCursor())
Expand All @@ -126,8 +126,8 @@ private ResponseEntity<ConversationListResponsePayload> listConversations(Conver
return ResponseEntity.ok(
ConversationListResponsePayload.builder()
.data(response)
.responseMetadata(
ResponseMetadata.builder()
.paginationData(
PaginationData.builder()
.filteredTotal(conversations.size())
.nextCursor(page.getNextCursor())
.previousCursor(page.getPreviousCursor())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
package co.airy.core.api.communication;

import co.airy.avro.communication.Message;
import co.airy.core.api.communication.dto.Conversation;
import co.airy.core.api.communication.dto.DisplayName;
import co.airy.core.api.communication.dto.MessageContainer;
import co.airy.core.api.communication.payload.ContactResponsePayload;
import co.airy.core.api.communication.payload.ConversationResponsePayload;
import co.airy.core.api.communication.payload.MessageResponsePayload;
import co.airy.model.channel.ChannelPayload;
import co.airy.model.message.dto.MessageResponsePayload;
import co.airy.model.metadata.MetadataKeys;
import org.springframework.stereotype.Component;

import java.util.Map;

import static co.airy.date.format.DateFormat.isoFromMillis;
import static co.airy.model.metadata.MetadataRepository.getConversationInfo;
import static co.airy.model.message.MessageRepository.resolveContent;

@Component
public class Mapper {
Expand All @@ -32,7 +29,7 @@ public ConversationResponsePayload fromConversation(Conversation conversation) {
.tags(conversation.getTagIds())
.createdAt(isoFromMillis(conversation.getCreatedAt()))
.contact(getContact(conversation))
.lastMessage(fromMessageContainer(conversation.getLastMessageContainer()))
.lastMessage(MessageResponsePayload.fromMessageContainer(conversation.getLastMessageContainer()))
.build();
}

Expand All @@ -46,15 +43,4 @@ private ContactResponsePayload getContact(Conversation conversation) {
.info(getConversationInfo(metadata))
.build();
}

public MessageResponsePayload fromMessageContainer(MessageContainer messageContainer) {
final Message message = messageContainer.getMessage();
return MessageResponsePayload.builder()
.content(resolveContent(message, messageContainer.getMetadataMap()))
.senderType(message.getSenderType().toString().toLowerCase())
.deliveryState(message.getDeliveryState().toString().toLowerCase())
.id(message.getId())
.sentAt(isoFromMillis(message.getSentAt()))
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package co.airy.core.api.communication;

import co.airy.core.api.communication.dto.MessageContainer;
import co.airy.core.api.communication.payload.MessageListRequestPayload;
import co.airy.core.api.communication.payload.MessageListResponsePayload;
import co.airy.core.api.communication.payload.PaginationData;
import co.airy.model.message.dto.MessageContainer;
import co.airy.model.message.dto.MessageResponsePayload;
import co.airy.pagination.Page;
import co.airy.pagination.Paginator;
import org.springframework.http.ResponseEntity;
Expand All @@ -19,11 +21,9 @@
@RestController
public class MessagesController {
private final Stores stores;
private final Mapper mapper;

MessagesController(Stores stores, Mapper mapper) {
MessagesController(Stores stores) {
this.stores = stores;
this.mapper = mapper;
}

@PostMapping("/messages.list")
Expand Down Expand Up @@ -53,8 +53,8 @@ private MessageListResponsePayload fetchMessages(String conversationId, int page
Page<MessageContainer> page = paginator.page();

return MessageListResponsePayload.builder()
.data(page.getData().stream().map(mapper::fromMessageContainer).collect(toList()))
.responseMetadata(MessageListResponsePayload.ResponseMetadata.builder()
.data(page.getData().stream().map(MessageResponsePayload::fromMessageContainer).collect(toList()))
.paginationData(PaginationData.builder()
.nextCursor(page.getNextCursor())
.previousCursor(cursor)
.total(messages.size())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
import co.airy.avro.communication.Message;
import co.airy.avro.communication.SenderType;
import co.airy.core.api.communication.dto.Conversation;
import co.airy.core.api.communication.dto.MessageContainer;
import co.airy.core.api.communication.payload.SendMessageRequestPayload;
import co.airy.kafka.schema.application.ApplicationCommunicationMessages;
import co.airy.model.message.dto.MessageContainer;
import co.airy.model.message.dto.MessageResponsePayload;
import co.airy.spring.web.payload.EmptyResponsePayload;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -72,7 +73,6 @@ public ResponseEntity<?> sendMessage(@RequestBody @Valid SendMessageRequestPaylo
.build();

producer.send(new ProducerRecord<>(applicationCommunicationMessages.name(), message.getId(), message)).get();

return ResponseEntity.ok(mapper.fromMessageContainer(new MessageContainer(message, Map.of())));
return ResponseEntity.ok(MessageResponsePayload.fromMessageContainer(new MessageContainer(message, Map.of())));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import co.airy.avro.communication.SenderType;
import co.airy.core.api.communication.dto.Conversation;
import co.airy.core.api.communication.dto.CountAction;
import co.airy.core.api.communication.dto.MessageContainer;
import co.airy.core.api.communication.dto.MessagesTreeSet;
import co.airy.core.api.communication.dto.UnreadCountState;
import co.airy.core.api.communication.lucene.IndexingProcessor;
Expand All @@ -19,6 +18,7 @@
import co.airy.kafka.schema.application.ApplicationCommunicationMetadata;
import co.airy.kafka.schema.application.ApplicationCommunicationReadReceipts;
import co.airy.kafka.streams.KafkaStreamsWrapper;
import co.airy.model.message.dto.MessageContainer;
import co.airy.model.metadata.Subject;
import org.apache.avro.specific.SpecificRecordBase;
import org.apache.kafka.clients.producer.KafkaProducer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,16 @@ public Message<?> preSend(Message<?> message, MessageChannel channel) {
final StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

if (accessor != null && StompCommand.CONNECT.equals(accessor.getCommand())) {
final String jwtToken = accessor.getFirstNativeHeader(HttpHeaders.AUTHORIZATION);
String authToken = accessor.getFirstNativeHeader(HttpHeaders.AUTHORIZATION);
if (authToken != null && authToken.startsWith("Bearer")) {
authToken = authToken.substring(7);
}

try {
final String userId = jwt.authenticate(jwtToken);
final String userId = jwt.authenticate(authToken);
accessor.setUser(new UsernamePasswordAuthenticationToken(userId, null, List.of()));
} catch (Exception e) {
log.error(String.format("STOMP Command: %s, token: %s \n Failed to authenticate", accessor.getCommand(), jwtToken));
log.error(String.format("STOMP Command: %s, token: %s \n Failed to authenticate", accessor.getCommand(), authToken));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@

import co.airy.avro.communication.Channel;
import co.airy.avro.communication.Message;
import co.airy.model.channel.ChannelPayload;
import co.airy.core.api.communication.dto.MessageContainer;
import co.airy.core.api.communication.dto.UnreadCountState;
import co.airy.core.api.communication.payload.MessageUpsertPayload;
import co.airy.core.api.communication.payload.UnreadCountPayload;
import co.airy.model.channel.ChannelPayload;
import co.airy.model.message.dto.MessageContainer;
import co.airy.model.message.dto.MessageResponsePayload;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.time.Instant;
import java.util.Map;

import static co.airy.avro.communication.ChannelConnectionState.CONNECTED;
import static co.airy.date.format.DateFormat.isoFromMillis;
Expand All @@ -25,18 +26,16 @@ public class WebSocketController {
public static final String QUEUE_UNREAD_COUNT = "/queue/unread-count";

private final SimpMessagingTemplate messagingTemplate;
private final Mapper mapper;

WebSocketController(SimpMessagingTemplate messagingTemplate, Mapper mapper) {
WebSocketController(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
this.mapper = mapper;
}

public void onNewMessage(Message message) {
final MessageUpsertPayload messageUpsertPayload = MessageUpsertPayload.builder()
.channelId(message.getChannelId())
.conversationId(message.getConversationId())
.message(mapper.fromMessageContainer(new MessageContainer(message, Map.of())))
.message(MessageResponsePayload.fromMessageContainer(new MessageContainer(message, Map.of())))
.build();
messagingTemplate.convertAndSend(QUEUE_MESSAGE, messageUpsertPayload);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package co.airy.core.api.communication.dto;

import co.airy.avro.communication.Channel;
import co.airy.model.message.dto.MessageContainer;
import co.airy.model.metadata.MetadataKeys;
import co.airy.model.metadata.MetadataRepository;
import com.fasterxml.jackson.annotation.JsonIgnore;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package co.airy.core.api.communication.dto;

import co.airy.model.message.dto.MessageContainer;
import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Comparator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@
@AllArgsConstructor
public class ConversationListResponsePayload {
private List<ConversationResponsePayload> data;
private ResponseMetadata responseMetadata;
private PaginationData paginationData;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package co.airy.core.api.communication.payload;

import co.airy.model.channel.ChannelPayload;
import co.airy.model.message.dto.MessageResponsePayload;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package co.airy.core.api.communication.payload;

import co.airy.model.message.dto.MessageResponsePayload;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand All @@ -13,15 +14,5 @@
@AllArgsConstructor
public class MessageListResponsePayload {
private List<MessageResponsePayload> data;
private ResponseMetadata responseMetadata;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class ResponseMetadata {
private String previousCursor;
private String nextCursor;
private long total; // total message count
}
private PaginationData paginationData;
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package co.airy.core.api.communication.payload;

import co.airy.model.message.dto.MessageResponsePayload;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResponseMetadata {
public class PaginationData {
private String previousCursor;
private String nextCursor;
private long filteredTotal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ void canFetchAllConversations() throws Exception {
() -> webTestHelper.post("/conversations.list", "{} ", userId)
.andExpect(status().isOk())
.andExpect(jsonPath("$.data", hasSize(conversations.size())))
.andExpect(jsonPath("response_metadata.total", is(conversations.size())))
.andExpect(jsonPath("pagination_data.total", is(conversations.size())))
.andExpect(jsonPath("$.data[*].last_message.sent_at").value(contains(
conversations.stream()
.map(TestConversation::getLastMessageSentAt)
Expand Down Expand Up @@ -178,8 +178,8 @@ private void checkConversationsFound(String payload, int count) throws Interrupt
() -> webTestHelper.post("/conversations.list", payload, userId)
.andExpect(status().isOk())
.andExpect(jsonPath("$.data", hasSize(count)))
.andExpect(jsonPath("response_metadata.filtered_total", is(count)))
.andExpect(jsonPath("response_metadata.total", is(conversations.size()))),
.andExpect(jsonPath("pagination_data.filtered_total", is(count)))
.andExpect(jsonPath("pagination_data.total", is(conversations.size()))),
String.format("Expected %d conversation returned", count));
}
}
Loading

0 comments on commit 01d4b9d

Please sign in to comment.