mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-30 18:07:38 +00:00 
			
		
		
		
	Handle specific forbidden error
This commit is contained in:
		
							parent
							
								
									21121e0189
								
							
						
					
					
						commit
						1aba54d0f9
					
				| @ -38,17 +38,14 @@ import java.io.InputStream; | ||||
|  * @author masensio | ||||
|  */ | ||||
| public class ForbiddenExceptionParser { | ||||
| 
 | ||||
|     private static final String EXCEPTION_STRING = "OCA\\DAV\\Connector\\Sabre\\Exception\\Forbidden"; | ||||
| 
 | ||||
|     // No namespaces | ||||
| 	// No namespaces | ||||
| 	private static final String ns = null; | ||||
| 
 | ||||
|     // Nodes for XML Parser | ||||
|     private static final String NODE_ERROR = "d:error"; | ||||
| 	// Nodes for XML Parser | ||||
| 	private static final String NODE_ERROR = "d:error"; | ||||
| 	private static final String NODE_MESSAGE = "s:message"; | ||||
| 
 | ||||
|     /** | ||||
| 	/** | ||||
| 	 * Parse is as an forbidden exception | ||||
| 	 * @param is | ||||
| 	 * @return reason for forbidden exception | ||||
| @ -56,8 +53,8 @@ public class ForbiddenExceptionParser { | ||||
| 	 * @throws IOException | ||||
| 	 */ | ||||
| 	public String parseXMLResponse(InputStream is) throws XmlPullParserException, | ||||
|             IOException { | ||||
|         String errorMessage = ""; | ||||
| 			IOException { | ||||
| 		String errorMessage = ""; | ||||
| 
 | ||||
| 		try { | ||||
| 			// XMLPullParser | ||||
| @ -68,7 +65,7 @@ public class ForbiddenExceptionParser { | ||||
| 			parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); | ||||
| 			parser.setInput(is, null); | ||||
| 			parser.nextTag(); | ||||
|             errorMessage = readError(parser); | ||||
| 			errorMessage = readError(parser); | ||||
| 
 | ||||
| 		} finally { | ||||
| 			is.close(); | ||||
| @ -84,7 +81,7 @@ public class ForbiddenExceptionParser { | ||||
| 	 * @throws IOException | ||||
| 	 */ | ||||
| 	private String readError (XmlPullParser parser) throws XmlPullParserException, IOException { | ||||
|         String message = ""; | ||||
| 		String errorMessage = ""; | ||||
| 		parser.require(XmlPullParser.START_TAG,  ns , NODE_ERROR); | ||||
| 		while (parser.next() != XmlPullParser.END_TAG) { | ||||
| 			if (parser.getEventType() != XmlPullParser.START_TAG) { | ||||
| @ -92,14 +89,13 @@ public class ForbiddenExceptionParser { | ||||
| 			} | ||||
| 			String name = parser.getName(); | ||||
| 			// read NODE_MESSAGE | ||||
|             if (name.equalsIgnoreCase(NODE_MESSAGE)) { | ||||
|                 message = readText(parser); | ||||
|             } else { | ||||
| 			if (name.equalsIgnoreCase(NODE_MESSAGE)) { | ||||
| 				errorMessage = readText(parser); | ||||
| 			} else { | ||||
| 				skip(parser); | ||||
| 			} | ||||
| 
 | ||||
| 		} | ||||
|         return message; | ||||
| 		return errorMessage; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| @ -115,17 +111,17 @@ public class ForbiddenExceptionParser { | ||||
| 		int depth = 1; | ||||
| 		while (depth != 0) { | ||||
| 			switch (parser.next()) { | ||||
| 			case XmlPullParser.END_TAG: | ||||
| 				depth--; | ||||
| 				break; | ||||
| 			case XmlPullParser.START_TAG: | ||||
| 				depth++; | ||||
| 				break; | ||||
| 				case XmlPullParser.END_TAG: | ||||
| 					depth--; | ||||
| 					break; | ||||
| 				case XmlPullParser.START_TAG: | ||||
| 					depth++; | ||||
| 					break; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|     	/** | ||||
| 	/** | ||||
| 	 * Read the text from a node | ||||
| 	 * @param parser | ||||
| 	 * @return Text of the node | ||||
| @ -140,4 +136,4 @@ public class ForbiddenExceptionParser { | ||||
| 		} | ||||
| 		return result; | ||||
| 	} | ||||
| } | ||||
| } | ||||
| @ -107,6 +107,7 @@ public class RemoteOperationResult implements Serializable { | ||||
|         LOCAL_STORAGE_NOT_REMOVED, | ||||
|         FORBIDDEN, | ||||
|         SHARE_FORBIDDEN, | ||||
|         SPECIFIC_FORBIDDEN, | ||||
|         OK_REDIRECT_TO_NON_SECURE_CONNECTION, | ||||
|         INVALID_MOVE_INTO_DESCENDANT, | ||||
|         INVALID_COPY_INTO_DESCENDANT, | ||||
| @ -252,7 +253,11 @@ public class RemoteOperationResult implements Serializable { | ||||
|                 InputStream is = new ByteArrayInputStream(bodyResponse.getBytes()); | ||||
|                 ForbiddenExceptionParser xmlParser = new ForbiddenExceptionParser(); | ||||
|                 try { | ||||
|                     mHttpPhrase = xmlParser.parseXMLResponse(is); | ||||
|                     String errorMessage = xmlParser.parseXMLResponse(is); | ||||
|                     if (errorMessage != "" && errorMessage != null) { | ||||
|                         mCode = ResultCode.SPECIFIC_FORBIDDEN; | ||||
|                         mHttpPhrase = errorMessage; | ||||
|                     } | ||||
|                 } catch (Exception e) { | ||||
|                     Log_OC.w(TAG, "Error reading exception from server: " + e.getMessage()); | ||||
|                     // mCode stays as set in this(success, httpCode, headers) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user