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:
parent
974e55a2b9
commit
f3453f138f
@ -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();
|
||||||
@ -87,7 +88,8 @@ public class OCShare implements Parcelable{
|
|||||||
mSharedWithDisplayName = null;
|
mSharedWithDisplayName = null;
|
||||||
mIsDirectory = false;
|
mIsDirectory = false;
|
||||||
mUserId = -1;
|
mUserId = -1;
|
||||||
mIdRemoteShared = -1;
|
mIdRemoteShared = -1;
|
||||||
|
mShareLink = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Getters and Setters
|
/// Getters and Setters
|
||||||
@ -203,7 +205,15 @@ public class OCShare implements Parcelable{
|
|||||||
public void setIdRemoteShared(long idRemoteShared) {
|
public void setIdRemoteShared(long idRemoteShared) {
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,9 +76,12 @@ public class ShareXMLParser {
|
|||||||
private static final String NODE_STORAGE = "storage";
|
private static final String NODE_STORAGE = "storage";
|
||||||
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;
|
||||||
|
|
||||||
@ -206,8 +209,12 @@ public class ShareXMLParser {
|
|||||||
String name = parser.getName();
|
String name = parser.getName();
|
||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user