Example usage for io.netty.handler.codec.http QueryStringDecoder parameters

List of usage examples for io.netty.handler.codec.http QueryStringDecoder parameters

Introduction

In this page you can find the example usage for io.netty.handler.codec.http QueryStringDecoder parameters.

Prototype

public Map<String, List<String>> parameters() 

Source Link

Document

Returns the decoded key-value parameter pairs of the URI.

Usage

From source file:org.traccar.protocol.PathAwayProtocolDecoder.java

License:Apache License

@Override
protected Object decode(Channel channel, SocketAddress remoteAddress, Object msg) throws Exception {

    FullHttpRequest request = (FullHttpRequest) msg;
    QueryStringDecoder decoder = new QueryStringDecoder(request.uri());

    DeviceSession deviceSession = getDeviceSession(channel, remoteAddress,
            decoder.parameters().get("UserName").get(0));
    if (deviceSession == null) {
        return null;
    }//w w  w.j a  v a2 s. c  om

    Parser parser = new Parser(PATTERN, decoder.parameters().get("LOC").get(0));
    if (!parser.matches()) {
        return null;
    }

    Position position = new Position(getProtocolName());
    position.setDeviceId(deviceSession.getDeviceId());

    position.setTime(parser.nextDateTime(Parser.DateTimeFormat.DMY_HMS));

    position.setValid(true);
    position.setLatitude(parser.nextDouble(0));
    position.setLongitude(parser.nextDouble(0));
    position.setAltitude(parser.nextDouble(0));
    position.setSpeed(parser.nextDouble(0));
    position.setCourse(parser.nextDouble(0));

    if (channel != null) {
        FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
        channel.writeAndFlush(new NetworkMessage(response, remoteAddress))
                .addListener(ChannelFutureListener.CLOSE);
    }

    return position;
}

From source file:org.traccar.protocol.PiligrimProtocolDecoder.java

License:Apache License

@Override
protected Object decode(Channel channel, SocketAddress remoteAddress, Object msg) throws Exception {

    FullHttpRequest request = (FullHttpRequest) msg;
    String uri = request.uri();//from   www . jav a 2 s .c  o m

    if (uri.startsWith("/config")) {

        sendResponse(channel, "CONFIG: OK");

    } else if (uri.startsWith("/addlog")) {

        sendResponse(channel, "ADDLOG: OK");

    } else if (uri.startsWith("/inform")) {

        sendResponse(channel, "INFORM: OK");

    } else if (uri.startsWith("/bingps")) {

        sendResponse(channel, "BINGPS: OK");

        QueryStringDecoder decoder = new QueryStringDecoder(request.uri());
        DeviceSession deviceSession = getDeviceSession(channel, remoteAddress,
                decoder.parameters().get("imei").get(0));
        if (deviceSession == null) {
            return null;
        }

        List<Position> positions = new LinkedList<>();
        ByteBuf buf = request.content();

        while (buf.readableBytes() > 2) {

            buf.readUnsignedByte(); // header
            int type = buf.readUnsignedByte();
            buf.readUnsignedByte(); // length

            if (type == MSG_GPS || type == MSG_GPS_SENSORS) {

                Position position = new Position(getProtocolName());
                position.setDeviceId(deviceSession.getDeviceId());

                DateBuilder dateBuilder = new DateBuilder().setDay(buf.readUnsignedByte())
                        .setMonth(buf.getByte(buf.readerIndex()) & 0x0f)
                        .setYear(2010 + (buf.readUnsignedByte() >> 4))
                        .setTime(buf.readUnsignedByte(), buf.readUnsignedByte(), buf.readUnsignedByte());
                position.setTime(dateBuilder.getDate());

                double latitude = buf.readUnsignedByte();
                latitude += buf.readUnsignedByte() / 60.0;
                latitude += buf.readUnsignedByte() / 6000.0;
                latitude += buf.readUnsignedByte() / 600000.0;

                double longitude = buf.readUnsignedByte();
                longitude += buf.readUnsignedByte() / 60.0;
                longitude += buf.readUnsignedByte() / 6000.0;
                longitude += buf.readUnsignedByte() / 600000.0;

                int flags = buf.readUnsignedByte();
                if (BitUtil.check(flags, 0)) {
                    latitude = -latitude;
                }
                if (BitUtil.check(flags, 1)) {
                    longitude = -longitude;
                }
                position.setLatitude(latitude);
                position.setLongitude(longitude);

                int satellites = buf.readUnsignedByte();
                position.set(Position.KEY_SATELLITES, satellites);
                position.setValid(satellites >= 3);

                position.setSpeed(buf.readUnsignedByte());

                double course = buf.readUnsignedByte() << 1;
                course += (flags >> 2) & 1;
                course += buf.readUnsignedByte() / 100.0;
                position.setCourse(course);

                if (type == MSG_GPS_SENSORS) {
                    double power = buf.readUnsignedByte();
                    power += buf.readUnsignedByte() << 8;
                    position.set(Position.KEY_POWER, power * 0.01);

                    double battery = buf.readUnsignedByte();
                    battery += buf.readUnsignedByte() << 8;
                    position.set(Position.KEY_BATTERY, battery * 0.01);

                    buf.skipBytes(6);
                }

                positions.add(position);

            } else if (type == MSG_EVENTS) {

                buf.skipBytes(13);
            }
        }

        return positions;
    }

    return null;
}

From source file:org.waarp.gateway.ftp.adminssl.HttpSslHandler.java

License:Open Source License

private void getParams() {
    if (request.method() == HttpMethod.GET) {
        params = null;//from  ww w . j  a  va 2 s.  c o  m
    } else if (request.method() == HttpMethod.POST) {
        ByteBuf content = request.content();
        if (content.isReadable()) {
            String param = content.toString(WaarpStringUtils.UTF8);
            QueryStringDecoder queryStringDecoder2 = new QueryStringDecoder("/?" + param);
            params = queryStringDecoder2.parameters();
        } else {
            params = null;
        }
    }
}

From source file:org.waarp.gateway.kernel.http.HttpRequestHandler.java

License:Open Source License

/**
 * set values from URI//from  w  ww  .  ja  v  a  2 s  .co m
 * 
 * @throws HttpIncorrectRequestException
 */
protected void getUriArgs() throws HttpIncorrectRequestException {
    QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri());
    Map<String, List<String>> uriAttributes = decoderQuery.parameters();
    Set<String> attributes = uriAttributes.keySet();
    for (String name : attributes) {
        List<String> values = uriAttributes.get(name);
        if (values != null) {
            if (values.size() == 1) {
                // only one element is allowed
                httpPage.setValue(businessRequest, name, values.get(0), FieldPosition.URL);
            } else if (values.size() > 1) {
                // more than one element is not allowed
                values.clear();
                values = null;
                attributes = null;
                uriAttributes = null;
                decoderQuery = null;
                throw new HttpIncorrectRequestException("Too many values for " + name);
            }
            values.clear();
        }
        values = null;
    }
    attributes = null;
    uriAttributes = null;
    decoderQuery = null;
}

From source file:org.waarp.gateway.kernel.rest.RestArgument.java

License:Open Source License

/**
 * Set values according to the request URI
 * /*from w  ww .  j  av a 2  s. c om*/
 * @param request
 */
public void setRequest(HttpRequest request) {
    arguments.put(REST_ROOT_FIELD.ARG_HASBODY.field, (request instanceof FullHttpRequest
            && ((FullHttpRequest) request).content() != Unpooled.EMPTY_BUFFER));
    arguments.put(REST_ROOT_FIELD.ARG_METHOD.field, request.method().name());
    QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri());
    String path = decoderQuery.path();
    arguments.put(REST_ROOT_FIELD.ARG_PATH.field, path);
    // compute path main uri
    String basepath = path;
    int pos = basepath.indexOf('/');
    if (pos >= 0) {
        if (pos == 0) {
            int pos2 = basepath.indexOf('/', 1);
            if (pos2 < 0) {
                basepath = basepath.substring(1);
            } else {
                basepath = basepath.substring(1, pos2);
            }
        } else {
            basepath = basepath.substring(0, pos);
        }
    }
    arguments.put(REST_ROOT_FIELD.ARG_BASEPATH.field, basepath);
    // compute sub path args
    if (pos == 0) {
        pos = path.indexOf('/', 1);
    }
    if (pos >= 0) {
        int pos2 = path.indexOf('/', pos + 1);
        if (pos2 > 0) {
            ArrayNode array = arguments.putArray(REST_ROOT_FIELD.ARGS_SUBPATH.field);
            while (pos2 > 0) {
                array.add(path.substring(pos + 1, pos2));
                pos = pos2;
                pos2 = path.indexOf('/', pos + 1);
            }
        }
        pos2 = path.indexOf('?', pos + 1);
        if (pos2 > 0 && pos2 > pos + 1) {
            ArrayNode array = (ArrayNode) arguments.get(REST_ROOT_FIELD.ARGS_SUBPATH.field);
            if (array == null) {
                array = arguments.putArray(REST_ROOT_FIELD.ARGS_SUBPATH.field);
            }
            array.add(path.substring(pos + 1, pos2));
        } else {
            String last = path.substring(pos + 1);
            if (!last.isEmpty()) {
                ArrayNode array = (ArrayNode) arguments.get(REST_ROOT_FIELD.ARGS_SUBPATH.field);
                if (array == null) {
                    array = arguments.putArray(REST_ROOT_FIELD.ARGS_SUBPATH.field);
                }
                array.add(last);
            }
        }
    }
    Map<String, List<String>> map = decoderQuery.parameters();
    ObjectNode node = arguments.putObject(REST_GROUP.ARGS_URI.group);
    for (String key : map.keySet()) {
        if (key.equalsIgnoreCase(REST_ROOT_FIELD.ARG_X_AUTH_KEY.field)) {
            arguments.put(REST_ROOT_FIELD.ARG_X_AUTH_KEY.field, map.get(key).get(0));
            continue;
        }
        if (key.equalsIgnoreCase(REST_ROOT_FIELD.ARG_X_AUTH_USER.field)) {
            arguments.put(REST_ROOT_FIELD.ARG_X_AUTH_USER.field, map.get(key).get(0));
            continue;
        }
        if (key.equalsIgnoreCase(REST_ROOT_FIELD.ARG_X_AUTH_TIMESTAMP.field)) {
            arguments.put(REST_ROOT_FIELD.ARG_X_AUTH_TIMESTAMP.field, map.get(key).get(0));
            continue;
        }
        List<String> list = map.get(key);
        if (list.size() > 1) {
            ArrayNode array = node.putArray(key);
            for (String val : map.get(key)) {
                array.add(val);
            }
        } else if (list.isEmpty()) {
            node.putNull(key);
        } else {
            //1
            node.put(key, list.get(0));
        }
    }
}

From source file:org.waarp.gateway.kernel.rest.RestArgument.java

License:Open Source License

/**
 * The encoder is completed with extra necessary URI part containing ARG_X_AUTH_TIMESTAMP & ARG_X_AUTH_KEY
 * /*ww  w.  j  a v a 2  s.  co m*/
 * @param hmacSha256
 *            SHA-256 key to create the signature
 * @param encoder
 * @param user
 *            might be null
 * @param extraKey
 *            might be null
 * @return an array of 2 value in order ARG_X_AUTH_TIMESTAMP and ARG_X_AUTH_KEY
 * @throws HttpInvalidAuthenticationException
 *             if the computation of the authentication failed
 */
public static String[] getBaseAuthent(HmacSha256 hmacSha256, QueryStringEncoder encoder, String user,
        String extraKey) throws HttpInvalidAuthenticationException {
    QueryStringDecoder decoderQuery = new QueryStringDecoder(encoder.toString());
    Map<String, List<String>> map = decoderQuery.parameters();
    TreeMap<String, String> treeMap = new TreeMap<String, String>();
    for (Entry<String, List<String>> entry : map.entrySet()) {
        String keylower = entry.getKey().toLowerCase();
        List<String> values = entry.getValue();
        if (values != null && !values.isEmpty()) {
            String last = values.get(values.size() - 1);
            treeMap.put(keylower, last);
        }
    }
    DateTime date = new DateTime();
    treeMap.put(REST_ROOT_FIELD.ARG_X_AUTH_TIMESTAMP.field.toLowerCase(), date.toString());
    if (user != null) {
        treeMap.put(REST_ROOT_FIELD.ARG_X_AUTH_USER.field.toLowerCase(), user);
    }
    try {
        String key = computeKey(hmacSha256, extraKey, treeMap, decoderQuery.path());
        String[] result = { date.toString(), key };
        return result;
        /* encoder.addParam(REST_ROOT_FIELD.ARG_X_AUTH_TIMESTAMP.field, date.toString());
        encoder.addParam(REST_ROOT_FIELD.ARG_X_AUTH_KEY.field, key); */
    } catch (Exception e) {
        throw new HttpInvalidAuthenticationException(e);
    }

}

From source file:org.waarp.openr66.protocol.http.adminssl.HttpResponsiveSslHandler.java

License:Open Source License

private String Spooled(boolean detailed) {
    // XXXSPOOLEDXXX
    if (request.method() == HttpMethod.POST) {
        getParams();// w w  w  .j a v a 2  s. co  m
    }
    String spooled = REQUEST.Spooled.read(this);
    String uri = null;
    if (detailed) {
        uri = "SpooledDetailed.html";
    } else {
        uri = "Spooled.html";
    }
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
    params = queryStringDecoder.parameters();
    String name = null;
    if (params.containsKey("name")) {
        name = getTrimValue("name");
    }
    int istatus = 0;
    if (params.containsKey("status")) {
        String status = getTrimValue("status");
        try {
            istatus = Integer.parseInt(status);
        } catch (NumberFormatException e1) {
            istatus = 0;
        }
    }
    if (spooled.contains("XXXSPOOLEDXXX")) {
        if (name != null && !name.isEmpty()) {
            // name is specified
            uri = request.uri();
            if (istatus != 0) {
                uri += "&status=" + istatus;
            }
            StringBuilder builder = SpooledInformTask.buildSpooledUniqueTable(uri, name);
            return spooled.replace("XXXSPOOLEDXXX", builder.toString());
        } else {
            if (istatus != 0) {
                uri += "&status=" + istatus;
            }
            StringBuilder builder = SpooledInformTask.buildSpooledTable(detailed, istatus, uri);
            return spooled.replace("XXXSPOOLEDXXX", builder.toString());
        }
    }
    if (name != null && !name.isEmpty()) {
        // name is specified
        uri = request.uri();
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        String builder = SpooledInformTask.buildSpooledUniqueJson(uri, name);
        return spooled.replace(XXXDATAJSONXXX, builder);
    } else {
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        String builder = SpooledInformTask.buildSpooledJson(detailed, istatus, uri);
        return spooled.replace(XXXDATAJSONXXX, builder);
    }
}

From source file:org.waarp.openr66.protocol.http.adminssl.HttpResponsiveSslHandler.java

License:Open Source License

private void getParams() {
    if (request.method() == HttpMethod.GET) {
        params = null;/*w w w .j  a va2 s .  c  o  m*/
    } else if (request.method() == HttpMethod.POST) {
        Map<String, List<String>> paramsOld = params;
        ByteBuf content = request.content();
        if (content.isReadable()) {
            String param = content.toString(WaarpStringUtils.UTF8);
            QueryStringDecoder queryStringDecoder2 = new QueryStringDecoder("/?" + param);
            params = queryStringDecoder2.parameters();
            if (params.containsKey(sREFRESH)) {
                List<String> parms = params.get("ACTION");
                if (parms != null) {
                    String parm = parms.get(0);
                    if ("Disabling".equalsIgnoreCase(parm)) {
                        setREFRESH(0);
                    } else {
                        String snb = getTrimValue(sREFRESH);
                        if (snb != null) {
                            try {
                                int old = getREFRESH();
                                setREFRESH(Integer.parseInt(snb) * 1000);
                                if (getREFRESH() < 0) {
                                    setREFRESH(old);
                                }
                            } catch (Exception e1) {
                            }
                        }
                    }
                }
                params = paramsOld;
                return;
            }
            if (params.containsKey(sLIMITROW)) {
                String snb = getTrimValue(sLIMITROW);
                if (snb != null) {
                    try {
                        int old = getLIMITROW();
                        setLIMITROW(Integer.parseInt(snb));
                        if (getLIMITROW() < 5) {
                            setLIMITROW(old);
                        }
                    } catch (Exception e1) {
                    }
                }
            }
        } else {
            params = null;
        }
    }
}

From source file:org.waarp.openr66.protocol.http.adminssl.HttpSslHandler.java

License:Open Source License

private String Spooled(boolean detailed) {
    // XXXSPOOLEDXXX
    String spooled = REQUEST.Spooled.readFileUnique(this);
    String uri = null;/*from w  w  w .  ja  va2s  .  c om*/
    if (detailed) {
        uri = "SpooledDetailed.html";
    } else {
        uri = "Spooled.html";
    }
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
    params = queryStringDecoder.parameters();
    String name = null;
    if (params.containsKey("name")) {
        name = getTrimValue("name");
    }
    int istatus = 0;
    if (params.containsKey("status")) {
        String status = getTrimValue("status");
        try {
            istatus = Integer.parseInt(status);
        } catch (NumberFormatException e1) {
            istatus = 0;
        }
    }
    if (name != null && !name.isEmpty()) {
        // name is specified
        uri = request.uri();
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        StringBuilder builder = SpooledInformTask.buildSpooledUniqueTable(uri, name);
        return spooled.replace("XXXSPOOLEDXXX", builder.toString());
    } else {
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        StringBuilder builder = SpooledInformTask.buildSpooledTable(detailed, istatus, uri);
        return spooled.replace("XXXSPOOLEDXXX", builder.toString());
    }
}

From source file:org.waarp.openr66.protocol.http.adminssl.HttpSslHandler.java

License:Open Source License

private void getParams() {
    if (request.method() == HttpMethod.GET) {
        params = null;// w ww  . j a  va 2s  .  c  o m
    } else if (request.method() == HttpMethod.POST) {
        ByteBuf content = request.content();
        if (content.isReadable()) {
            String param = content.toString(WaarpStringUtils.UTF8);
            QueryStringDecoder queryStringDecoder2 = new QueryStringDecoder("/?" + param);
            params = queryStringDecoder2.parameters();
            if (params.containsKey(sLIMITROW)) {
                String snb = getTrimValue(sLIMITROW);
                if (snb != null) {
                    try {
                        int old = getLIMITROW();
                        setLIMITROW(Integer.parseInt(snb));
                        if (getLIMITROW() < 5) {
                            setLIMITROW(old);
                        }
                    } catch (Exception e1) {
                    }
                }
            }
        } else {
            params = null;
        }
    }
}