1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

OC-2678: Parse XML Response from Create New Share

This commit is contained in:
masensio 2014-01-31 10:12:53 +01:00
parent 974e55a2b9
commit f3453f138f
3 changed files with 68 additions and 8 deletions

View File

@ -55,6 +55,7 @@ public class OCShare implements Parcelable{
private boolean mIsDirectory;
private long mUserId;
private long mIdRemoteShared;
private String mShareLink;
public OCShare() {
super();
@ -87,7 +88,8 @@ public class OCShare implements Parcelable{
mSharedWithDisplayName = null;
mIsDirectory = false;
mUserId = -1;
mIdRemoteShared = -1;
mIdRemoteShared = -1;
mShareLink = null;
}
/// Getters and Setters
@ -203,7 +205,15 @@ public class OCShare implements Parcelable{
public void setIdRemoteShared(long idRemoteShared) {
this.mIdRemoteShared = idRemoteShared;
}
public String getShareLink() {
return this.mShareLink;
}
public void setShareLink(String shareLink) {
this.mShareLink = shareLink;
}
/**
* Parcelable Methods
*/
@ -248,6 +258,7 @@ public class OCShare implements Parcelable{
mIsDirectory = source.readInt() == 0;
mUserId = source.readLong();
mIdRemoteShared = source.readLong();
mShareLink = source.readString();
}
@ -273,6 +284,7 @@ public class OCShare implements Parcelable{
dest.writeInt(mIsDirectory ? 1 : 0);
dest.writeLong(mUserId);
dest.writeLong(mIdRemoteShared);
dest.writeString(mShareLink);
}
}

View File

@ -26,6 +26,7 @@ package com.owncloud.android.lib.operations.remote;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.http.HttpStatus;
@ -58,7 +59,8 @@ public class CreateShareRemoteOperation extends RemoteOperation {
private static final String PARAM_PASSWORD = "password";
private static final String PARAM_PERMISSIONS = "permissions";
private OCShare mShare;
private ArrayList<OCShare> mShares; // List of shares for result, one share in this case
private String mPath;
private ShareType mShareType;
private String mShareWith;
@ -125,6 +127,16 @@ public class CreateShareRemoteOperation extends RemoteOperation {
// convert String into InputStream
InputStream is = new ByteArrayInputStream(response.getBytes());
ShareXMLParser xmlParser = new ShareXMLParser();
mShares = xmlParser.parseXMLResponse(is);
if (mShares != null) {
Log.d(TAG, "Shares: " + mShares.size());
result = new RemoteOperationResult(ResultCode.OK);
ArrayList<Object> sharesObjects = new ArrayList<Object>();
for (OCShare share: mShares) {
sharesObjects.add(share);
}
result.setData(sharesObjects);
}
}
} catch (Exception e) {
@ -133,9 +145,6 @@ public class CreateShareRemoteOperation extends RemoteOperation {
} finally {
post.releaseConnection();
}
return result;
}

View File

@ -76,9 +76,12 @@ public class ShareXMLParser {
private static final String NODE_STORAGE = "storage";
private static final String NODE_MAIL_SEND = "mail_send";
private static final String NODE_SHARE_WITH_DISPLAY_NAME = "share_with_display_name";
private static final String NODE_URL = "url";
private static final String TYPE_FOLDER = "folder";
private String mStatus;
private int mStatusCode;
@ -206,8 +209,12 @@ public class ShareXMLParser {
String name = parser.getName();
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
shares.add(readElement(parser));
} else {
skip(parser);
} else {
//skip(parser);
OCShare share = tryReadCreateXMLResponse(parser);
if (share.getIdRemoteShared() > -1) {
shares.add(share);
}
}
}
@ -215,6 +222,38 @@ public class ShareXMLParser {
}
/**
* Parse Create XML Response
* @param parser
* @return
*/
private OCShare tryReadCreateXMLResponse(XmlPullParser parser) throws XmlPullParserException, IOException {
OCShare share = new OCShare();
Log.d(TAG, "---- Create Share Response ---");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equalsIgnoreCase(NODE_ID)) {
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
} else if (name.equalsIgnoreCase(NODE_URL)) {
share.setShareLink(readNode(parser, NODE_URL));
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
share.setToken(readNode(parser, NODE_TOKEN));
} else {
skip(parser);
}
}
return share;
}
/**
* Parse Element node
* @param parser