Skip to content

Commit

Permalink
Hotfixes, relaxed serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
Idan Harel committed Jan 22, 2017
1 parent b6fa8a7 commit fbe1482
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 13 deletions.
12 changes: 6 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ apply plugin: 'signing'
sourceCompatibility = projectSourceCompatibility

project.ext {
slf4jVersion = '1.7.21'
jacksonVersion = '2.8.5'
slf4jVersion = '1.7.22'
jacksonVersion = '2.8.6'
findbugsVersion = '3.0.1'
guavaVersion = '20.0'
okhttp3Version = '3.4.2'
guavaVersion = '21.0'
okhttp3Version = '3.5.0'
}

dependencies {
Expand All @@ -35,8 +35,8 @@ dependencies {
compile group: 'com.google.guava', name: 'guava', version: guavaVersion

testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.5.2'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.9.5'
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.6.1'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
testCompile group: 'com.jayway.awaitility', name: 'awaitility', version: '1.7.0'
}

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/com/viber/bot/ViberSignatureValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ public ViberSignatureValidator(final @Nonnull String secret) {
this.secret = checkNotEmpty(secret);
}

private String encode(final @Nonnull String key, final @Nonnull String data) {
final byte[] bytes = Hashing.hmacSha256(key.getBytes()).hashString(data, Charsets.UTF_8).asBytes();
return BaseEncoding.base16().lowerCase().encode(bytes);
}

public boolean isSignatureValid(final @Nonnull String signature, final @Nonnull String data) {
final String calculatedHash = encode(secret, data);
logger.debug("Validating signature '{}' == '{}'", signature, calculatedHash);
return calculatedHash.equals(signature);
}

private String encode(final @Nonnull String key, final @Nonnull String data) {
final byte[] bytes = Hashing.hmacSha256(key.getBytes()).hashString(data, Charsets.UTF_8).asBytes();
return BaseEncoding.base16().lowerCase().encode(bytes);
}
}
14 changes: 13 additions & 1 deletion src/main/java/com/viber/bot/message/MessageKeyboard.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.viber.bot.message;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.common.collect.ForwardingMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
Expand Down Expand Up @@ -38,12 +42,20 @@ protected Map<String, Object> delegate() {
}

static class KeyboardDeserializer extends JsonDeserializer<MessageKeyboard> {
private static final Logger logger = LoggerFactory.getLogger(KeyboardDeserializer.class);
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final String EMPTY_JSON_OBJECT = "{}";

@Override
public MessageKeyboard deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
return new MessageKeyboard(objectMapper.readValue(MoreObjects.firstNonNull(Strings.emptyToNull(p.getValueAsString().trim()), EMPTY_JSON_OBJECT), Map.class));
Map<String, Object> messageKeyboard = null;
try {
messageKeyboard = objectMapper.readValue(MoreObjects.firstNonNull(
Strings.emptyToNull(p.getValueAsString().trim()), EMPTY_JSON_OBJECT), Map.class);
} catch (JsonMappingException | JsonParseException exception) {
logger.warn("Could not deserialize message keyboard '{}'", p.getValueAsString().trim());
}
return new MessageKeyboard(messageKeyboard);
}
}
}
14 changes: 13 additions & 1 deletion src/main/java/com/viber/bot/message/TrackingData.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.viber.bot.message;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.common.collect.ForwardingMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
Expand Down Expand Up @@ -38,12 +42,20 @@ protected Map<String, Object> delegate() {
}

static class TrackingDataDeserializer extends JsonDeserializer<TrackingData> {
private static final Logger logger = LoggerFactory.getLogger(TrackingDataDeserializer.class);
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final String EMPTY_JSON_OBJECT = "{}";

@Override
public TrackingData deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
return new TrackingData(objectMapper.readValue(MoreObjects.firstNonNull(Strings.emptyToNull(p.getValueAsString().trim()), EMPTY_JSON_OBJECT), Map.class));
Map<String, Object> trackingData = null;
try {
trackingData = objectMapper.readValue(MoreObjects.firstNonNull(
Strings.emptyToNull(p.getValueAsString().trim()), EMPTY_JSON_OBJECT), Map.class);
} catch (JsonMappingException | JsonParseException exception) {
logger.warn("Could not deserialize tracking data '{}'", p.getValueAsString().trim());
}
return new TrackingData(trackingData);
}
}
}

0 comments on commit fbe1482

Please sign in to comment.