com.osomapps.pt.tokenemail.DataurlValidator   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 20
dl 0
loc 24
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A validate(Object,Errors) 0 14 4
A supports(Class) 0 3 1
1
package com.osomapps.pt.tokenemail;
2
3
import java.util.Base64;
4
import org.springframework.stereotype.Component;
5
import org.springframework.validation.Errors;
6
import org.springframework.validation.Validator;
7
8
@Component
9
public class DataurlValidator implements Validator {
10
    private static final String BASE64_PREFIX = ";base64,";
11
    private static final int BASE64_PREFIX_LENGTH = 8;
12
13
    @Override
14
    public boolean supports(final Class<?> aClass) {
15
        return String.class.equals(aClass);
16
    }
17
18
    @Override
19
    public void validate(final Object obj, final Errors errors) {
20
        final String dataUrl = (String) obj;
21
        if (dataUrl != null) {
22
            try {
23
                final String encodedString =
24
                        dataUrl.substring(dataUrl.indexOf(BASE64_PREFIX) + BASE64_PREFIX_LENGTH)
25
                                .replaceAll("\\s+", "");
26
                int length = Base64.getDecoder().decode(encodedString).length;
27
                if (length > 2097152) {
28
                    errors.reject("dataUrl", "Image cannot be large than 2 megabytes");
29
                }
30
            } catch (Exception ex) {
31
                errors.reject("dataUrl", "Invalid dataUrl");
32
            }
33
        }
34
    }
35
}
36