SEBSP-143 add utf8 encoding to body encoding function
This commit is contained in:
		
							parent
							
								
									ae37a8cf12
								
							
						
					
					
						commit
						a8bcaa53e5
					
				
					 2 changed files with 50 additions and 29 deletions
				
			
		|  | @ -648,27 +648,24 @@ public final class Utils { | |||
|             return StringUtils.EMPTY; | ||||
|         } | ||||
| 
 | ||||
|         return attributes | ||||
|                 .entrySet() | ||||
|                 .stream() | ||||
|                 .reduce( | ||||
|                         new StringBuilder(), | ||||
|                         (sb, entry) -> { | ||||
|                             final String name = entry.getKey(); | ||||
|                             final List<String> values = entry.getValue(); | ||||
|                             if (values == null) { | ||||
|                                 return sb; | ||||
|                             } | ||||
|                             if (!sb.isEmpty()) { | ||||
|                                 sb.append(Constants.AMPERSAND); | ||||
|                             } | ||||
|                             if (values.size() == 1) { | ||||
|                                 return sb.append(name).append(Constants.EQUALITY_SIGN).append(values.get(0)); | ||||
|                             } | ||||
|                             return sb.append(toAppFormUrlEncodedBody(name, values)); | ||||
|                         }, | ||||
|                         StringBuilder::append) | ||||
|                 .toString(); | ||||
|         return reduceFormUrlAttributes(attributes); | ||||
|     } | ||||
| 
 | ||||
|     public static String toAppFormUrlEncodedBodyForSPService(final MultiValueMap<String, String> attributes) { | ||||
|         if (attributes == null) { | ||||
|             return StringUtils.EMPTY; | ||||
|         } | ||||
| 
 | ||||
|         for (String key : attributes.keySet()) { | ||||
|             List<String> values = attributes.get(key); | ||||
|             if (values != null) { | ||||
|                 for (int i = 0; i < values.size(); i++) { | ||||
|                     values.set(i, encodeFormURL_UTF_8(values.get(i))); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return reduceFormUrlAttributes(attributes); | ||||
|     } | ||||
| 
 | ||||
|     public static String toAppFormUrlEncodedBody(@NotNull final String name, final Collection<String> array) { | ||||
|  | @ -925,4 +922,28 @@ public final class Utils { | |||
|                 .filter(Objects::nonNull) | ||||
|                 .collect(Collectors.toSet()); | ||||
|     } | ||||
| 
 | ||||
|     private static String reduceFormUrlAttributes(final MultiValueMap<String, String> attributes){ | ||||
|         return attributes | ||||
|                 .entrySet() | ||||
|                 .stream() | ||||
|                 .reduce( | ||||
|                         new StringBuilder(), | ||||
|                         (sb, entry) -> { | ||||
|                             final String name = entry.getKey(); | ||||
|                             final List<String> values = entry.getValue(); | ||||
|                             if (values == null) { | ||||
|                                 return sb; | ||||
|                             } | ||||
|                             if (!sb.isEmpty()) { | ||||
|                                 sb.append(Constants.AMPERSAND); | ||||
|                             } | ||||
|                             if (values.size() == 1) { | ||||
|                                 return sb.append(name).append(Constants.EQUALITY_SIGN).append(values.get(0)); | ||||
|                             } | ||||
|                             return sb.append(toAppFormUrlEncodedBody(name, values)); | ||||
|                         }, | ||||
|                         StringBuilder::append) | ||||
|                 .toString(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -680,11 +680,11 @@ class ScreenProctoringAPIBinding { | |||
|         params.add(SPS_API.SESSION.ATTR_UUID, token); | ||||
|         params.add(SPS_API.SESSION.ATTR_GROUP_ID, localGroup.uuid); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_IP, clientConnection.getClientAddress()); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_NAME, Utils.encodeFormURL_UTF_8(clientConnection.getExamUserSessionId())); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_MACHINE_NAME, Utils.encodeFormURL_UTF_8(clientConnection.getClientMachineName())); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_OS_NAME, Utils.encodeFormURL_UTF_8(clientConnection.getClientOsName())); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_VERSION, Utils.encodeFormURL_UTF_8(clientConnection.getClientVersion())); | ||||
|         final String paramsFormEncoded = Utils.toAppFormUrlEncodedBody(params); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_NAME, clientConnection.getExamUserSessionId()); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_MACHINE_NAME, clientConnection.getClientMachineName()); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_OS_NAME, clientConnection.getClientOsName()); | ||||
|         params.add(SPS_API.SESSION.ATTR_CLIENT_VERSION, clientConnection.getClientVersion()); | ||||
|         final String paramsFormEncoded = Utils.toAppFormUrlEncodedBodyForSPService(params); | ||||
| 
 | ||||
|         final ResponseEntity<String> exchange = apiTemplate.exchange(uri, paramsFormEncoded); | ||||
|         if (exchange.getStatusCode() != HttpStatus.OK) { | ||||
|  | @ -851,7 +851,7 @@ class ScreenProctoringAPIBinding { | |||
|         params.add(SPS_API.GROUP.ATTR_NAME, name); | ||||
|         params.add(SPS_API.GROUP.ATTR_DESCRIPTION, description); | ||||
|         params.add(SPS_API.GROUP.ATTR_EXAM_ID, spsExamUUID); | ||||
|         final String paramsFormEncoded = Utils.toAppFormUrlEncodedBody(params); | ||||
|         final String paramsFormEncoded = Utils.toAppFormUrlEncodedBodyForSPService(params); | ||||
| 
 | ||||
|         final ResponseEntity<String> exchange = apiTemplate.exchange(uri, paramsFormEncoded); | ||||
|         if (exchange.getStatusCode() != HttpStatus.OK) { | ||||
|  | @ -886,7 +886,7 @@ class ScreenProctoringAPIBinding { | |||
| 
 | ||||
|             final String uuid = createExamUUID(exam); | ||||
|             final MultiValueMap<String, String> params = createExamCreationParams(exam, uuid, userIds); | ||||
|             final String paramsFormEncoded = Utils.toAppFormUrlEncodedBody(params); | ||||
|             final String paramsFormEncoded = Utils.toAppFormUrlEncodedBodyForSPService(params); | ||||
| 
 | ||||
|             final ResponseEntity<String> exchange = apiTemplate.exchange(uri, paramsFormEncoded); | ||||
|             if (exchange.getStatusCode() != HttpStatus.OK) { | ||||
|  | @ -996,7 +996,7 @@ class ScreenProctoringAPIBinding { | |||
|             final MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); | ||||
|             params.add(SPS_API.SEB_ACCESS.ATTR_NAME, name); | ||||
|             params.add(SPS_API.SEB_ACCESS.ATTR_DESCRIPTION, description); | ||||
|             final String paramsFormEncoded = Utils.toAppFormUrlEncodedBody(params); | ||||
|             final String paramsFormEncoded = Utils.toAppFormUrlEncodedBodyForSPService(params); | ||||
| 
 | ||||
|             final ResponseEntity<String> exchange = apiTemplate.exchange(uri, paramsFormEncoded); | ||||
|             if (exchange.getStatusCode() != HttpStatus.OK) { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Nadim Ritter
						Nadim Ritter