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