1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-08 00:16:09 +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 boolean mIsDirectory;
private long mUserId; private long mUserId;
private long mIdRemoteShared; private long mIdRemoteShared;
private String mShareLink;
public OCShare() { public OCShare() {
super(); super();
@ -88,6 +89,7 @@ public class OCShare implements Parcelable{
mIsDirectory = false; mIsDirectory = false;
mUserId = -1; mUserId = -1;
mIdRemoteShared = -1; mIdRemoteShared = -1;
mShareLink = null;
} }
/// Getters and Setters /// Getters and Setters
@ -204,6 +206,14 @@ public class OCShare implements Parcelable{
this.mIdRemoteShared = idRemoteShared; this.mIdRemoteShared = idRemoteShared;
} }
public String getShareLink() {
return this.mShareLink;
}
public void setShareLink(String shareLink) {
this.mShareLink = shareLink;
}
/** /**
* Parcelable Methods * Parcelable Methods
*/ */
@ -248,6 +258,7 @@ public class OCShare implements Parcelable{
mIsDirectory = source.readInt() == 0; mIsDirectory = source.readInt() == 0;
mUserId = source.readLong(); mUserId = source.readLong();
mIdRemoteShared = source.readLong(); mIdRemoteShared = source.readLong();
mShareLink = source.readString();
} }
@ -273,6 +284,7 @@ public class OCShare implements Parcelable{
dest.writeInt(mIsDirectory ? 1 : 0); dest.writeInt(mIsDirectory ? 1 : 0);
dest.writeLong(mUserId); dest.writeLong(mUserId);
dest.writeLong(mIdRemoteShared); 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.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList;
import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.http.HttpStatus; 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_PASSWORD = "password";
private static final String PARAM_PERMISSIONS = "permissions"; 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 String mPath;
private ShareType mShareType; private ShareType mShareType;
private String mShareWith; private String mShareWith;
@ -125,6 +127,16 @@ public class CreateShareRemoteOperation extends RemoteOperation {
// convert String into InputStream // convert String into InputStream
InputStream is = new ByteArrayInputStream(response.getBytes()); InputStream is = new ByteArrayInputStream(response.getBytes());
ShareXMLParser xmlParser = new ShareXMLParser(); 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) { } catch (Exception e) {
@ -133,9 +145,6 @@ public class CreateShareRemoteOperation extends RemoteOperation {
} finally { } finally {
post.releaseConnection(); post.releaseConnection();
} }
return result; return result;
} }

View File

@ -77,8 +77,11 @@ public class ShareXMLParser {
private static final String NODE_MAIL_SEND = "mail_send"; 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_SHARE_WITH_DISPLAY_NAME = "share_with_display_name";
private static final String NODE_URL = "url";
private static final String TYPE_FOLDER = "folder"; private static final String TYPE_FOLDER = "folder";
private String mStatus; private String mStatus;
private int mStatusCode; private int mStatusCode;
@ -207,7 +210,11 @@ public class ShareXMLParser {
if (name.equalsIgnoreCase(NODE_ELEMENT)) { if (name.equalsIgnoreCase(NODE_ELEMENT)) {
shares.add(readElement(parser)); shares.add(readElement(parser));
} else { } else {
skip(parser); //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 * Parse Element node
* @param parser * @param parser