Update devicemanager components
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / aaiconnector / impl / URLParamEncoder.java
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  * http://www.apache.org/licenses/LICENSE-2.0
11  * 
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.aaiconnector.impl;
19
20 class URLParamEncoder {
21
22     public static String encode(String input) {
23         StringBuilder resultStr = new StringBuilder();
24         for (char ch : input.toCharArray()) {
25             if (isUnsafe(ch)) {
26                 resultStr.append('%');
27                 resultStr.append(toHex(ch / 16));
28                 resultStr.append(toHex(ch % 16));
29             } else {
30                 resultStr.append(ch);
31             }
32         }
33         return resultStr.toString();
34     }
35
36     private static char toHex(int ch) {
37         return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10);
38     }
39
40     private static boolean isUnsafe(char ch) {
41         if (ch > 128 || ch < 0) {
42             return true;
43         }
44         return " %$&+,/:;=?@<>#%".indexOf(ch) >= 0;
45     }
46 }