mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-08 00:16:09 +00:00
Rename OCShare to RemoteShare
This commit is contained in:
parent
f11cab39bb
commit
54283c0ba9
@ -214,7 +214,7 @@ public class CreateRemoteShareOperation extends RemoteOperation {
|
||||
if (mPassword != null && mPassword.length() > 0) {
|
||||
formBodyBuilder.add(PARAM_PASSWORD, mPassword);
|
||||
}
|
||||
if (OCShare.DEFAULT_PERMISSION != mPermissions) {
|
||||
if (RemoteShare.DEFAULT_PERMISSION != mPermissions) {
|
||||
formBodyBuilder.add(PARAM_PERMISSIONS, Integer.toString(mPermissions));
|
||||
}
|
||||
|
||||
@ -245,7 +245,7 @@ public class CreateRemoteShareOperation extends RemoteOperation {
|
||||
|
||||
// TODO Use executeHttpMethod
|
||||
// retrieve more info - POST only returns the index of the new share
|
||||
OCShare emptyShare = result.getData().getShares().get(0);
|
||||
RemoteShare emptyShare = result.getData().getShares().get(0);
|
||||
GetRemoteShareOperation getInfo = new GetRemoteShareOperation(
|
||||
emptyShare.getRemoteId()
|
||||
);
|
||||
|
@ -34,6 +34,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
|
||||
import com.owncloud.android.lib.resources.files.FileUtils;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Contains the data of a Share from the Share API
|
||||
*
|
||||
@ -41,7 +42,14 @@ import com.owncloud.android.lib.resources.files.FileUtils;
|
||||
* @author David A. Velasco
|
||||
* @author David González Verdugo
|
||||
*/
|
||||
public class OCShare implements Parcelable, Serializable {
|
||||
public class RemoteShare implements Parcelable, Serializable {
|
||||
|
||||
/**
|
||||
* Generated - should be refreshed every time the class changes!!
|
||||
*/
|
||||
private static final long serialVersionUID = 4124975224281327921L;
|
||||
|
||||
private static final String TAG = RemoteShare.class.getSimpleName();
|
||||
|
||||
/**
|
||||
* Generated - should be refreshed every time the class changes!!
|
||||
@ -80,7 +88,6 @@ public class OCShare implements Parcelable, Serializable {
|
||||
FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9 +
|
||||
SHARE_PERMISSION_FLAG;
|
||||
|
||||
private long mId;
|
||||
private long mFileSource;
|
||||
private long mItemSource;
|
||||
private ShareType mShareType;
|
||||
@ -98,16 +105,16 @@ public class OCShare implements Parcelable, Serializable {
|
||||
private long mRemoteId;
|
||||
private String mShareLink;
|
||||
|
||||
public OCShare() {
|
||||
public RemoteShare() {
|
||||
super();
|
||||
resetData();
|
||||
}
|
||||
|
||||
public OCShare(String path) {
|
||||
public RemoteShare(String path) {
|
||||
resetData();
|
||||
if (path == null || path.length() <= 0 || !path.startsWith(FileUtils.PATH_SEPARATOR)) {
|
||||
Log_OC.e(TAG, "Trying to create a OCShare with a non valid path");
|
||||
throw new IllegalArgumentException("Trying to create a OCShare with a non valid path: " + path);
|
||||
Log_OC.e(TAG, "Trying to create a RemoteShare with a non valid path");
|
||||
throw new IllegalArgumentException("Trying to create a RemoteShare with a non valid path: " + path);
|
||||
}
|
||||
mPath = path;
|
||||
}
|
||||
@ -116,7 +123,6 @@ public class OCShare implements Parcelable, Serializable {
|
||||
* Used internally. Reset all file properties
|
||||
*/
|
||||
private void resetData() {
|
||||
mId = -1;
|
||||
mFileSource = 0;
|
||||
mItemSource = 0;
|
||||
mShareType = ShareType.NO_SHARED;
|
||||
@ -136,15 +142,6 @@ public class OCShare implements Parcelable, Serializable {
|
||||
}
|
||||
|
||||
/// Getters and Setters
|
||||
|
||||
public long getId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
mId = id;
|
||||
}
|
||||
|
||||
public long getFileSource() {
|
||||
return mFileSource;
|
||||
}
|
||||
@ -280,15 +277,15 @@ public class OCShare implements Parcelable, Serializable {
|
||||
/**
|
||||
* Parcelable Methods
|
||||
*/
|
||||
public static final Parcelable.Creator<OCShare> CREATOR = new Parcelable.Creator<OCShare>() {
|
||||
public static final Parcelable.Creator<RemoteShare> CREATOR = new Parcelable.Creator<RemoteShare>() {
|
||||
@Override
|
||||
public OCShare createFromParcel(Parcel source) {
|
||||
return new OCShare(source);
|
||||
public RemoteShare createFromParcel(Parcel source) {
|
||||
return new RemoteShare(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OCShare[] newArray(int size) {
|
||||
return new OCShare[size];
|
||||
public RemoteShare[] newArray(int size) {
|
||||
return new RemoteShare[size];
|
||||
}
|
||||
};
|
||||
|
||||
@ -297,13 +294,11 @@ public class OCShare implements Parcelable, Serializable {
|
||||
*
|
||||
* @param source The source parcel
|
||||
*/
|
||||
protected OCShare(Parcel source) {
|
||||
protected RemoteShare(Parcel source) {
|
||||
readFromParcel(source);
|
||||
}
|
||||
|
||||
public void readFromParcel(Parcel source) {
|
||||
mId = source.readLong();
|
||||
|
||||
mFileSource = source.readLong();
|
||||
mItemSource = source.readLong();
|
||||
try {
|
||||
@ -335,7 +330,6 @@ public class OCShare implements Parcelable, Serializable {
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeLong(mId);
|
||||
dest.writeLong(mFileSource);
|
||||
dest.writeLong(mItemSource);
|
||||
dest.writeString((mShareType == null) ? "" : mShareType.name());
|
@ -28,15 +28,15 @@ package com.owncloud.android.lib.resources.shares;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ShareParserResult {
|
||||
private ArrayList<OCShare> shares;
|
||||
private ArrayList<RemoteShare> shares;
|
||||
private String parserMessage;
|
||||
|
||||
public ShareParserResult(ArrayList<OCShare> shares, String parserMessage) {
|
||||
public ShareParserResult(ArrayList<RemoteShare> shares, String parserMessage) {
|
||||
this.shares = shares;
|
||||
this.parserMessage = parserMessage;
|
||||
}
|
||||
|
||||
public ArrayList<OCShare> getShares() {
|
||||
public ArrayList<RemoteShare> getShares() {
|
||||
return shares;
|
||||
}
|
||||
|
||||
|
@ -31,10 +31,8 @@ package com.owncloud.android.lib.resources.shares;
|
||||
*/
|
||||
public class SharePermissionsBuilder {
|
||||
|
||||
/**
|
||||
* Set of permissions
|
||||
*/
|
||||
private int mPermissions = OCShare.READ_PERMISSION_FLAG; // READ is minimum permission
|
||||
/** Set of permissions */
|
||||
private int mPermissions = RemoteShare.READ_PERMISSION_FLAG; // READ is minimum permission
|
||||
|
||||
/**
|
||||
* Sets or clears permission to reshare a file or folder.
|
||||
@ -43,7 +41,7 @@ public class SharePermissionsBuilder {
|
||||
* @return Instance to builder itself, to allow consecutive calls to setters
|
||||
*/
|
||||
public SharePermissionsBuilder setSharePermission(boolean enabled) {
|
||||
updatePermission(OCShare.SHARE_PERMISSION_FLAG, enabled);
|
||||
updatePermission(RemoteShare.SHARE_PERMISSION_FLAG, enabled);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -54,7 +52,7 @@ public class SharePermissionsBuilder {
|
||||
* @return Instance to builder itself, to allow consecutive calls to setters
|
||||
*/
|
||||
public SharePermissionsBuilder setUpdatePermission(boolean enabled) {
|
||||
updatePermission(OCShare.UPDATE_PERMISSION_FLAG, enabled);
|
||||
updatePermission(RemoteShare.UPDATE_PERMISSION_FLAG, enabled);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -65,7 +63,7 @@ public class SharePermissionsBuilder {
|
||||
* @return Instance to builder itself, to allow consecutive calls to setters
|
||||
*/
|
||||
public SharePermissionsBuilder setCreatePermission(boolean enabled) {
|
||||
updatePermission(OCShare.CREATE_PERMISSION_FLAG, enabled);
|
||||
updatePermission(RemoteShare.CREATE_PERMISSION_FLAG, enabled);
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -76,7 +74,7 @@ public class SharePermissionsBuilder {
|
||||
* @return Instance to builder itself, to allow consecutive calls to setters
|
||||
*/
|
||||
public SharePermissionsBuilder setDeletePermission(boolean enabled) {
|
||||
updatePermission(OCShare.DELETE_PERMISSION_FLAG, enabled);
|
||||
updatePermission(RemoteShare.DELETE_PERMISSION_FLAG, enabled);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ public class ShareToRemoteOperationResultParser {
|
||||
}
|
||||
|
||||
RemoteOperationResult<ShareParserResult> result;
|
||||
final ArrayList<OCShare> resultData = new ArrayList<>();
|
||||
final ArrayList<RemoteShare> resultData = new ArrayList<>();
|
||||
|
||||
try {
|
||||
// Parse xml response and obtain the list of shares
|
||||
@ -80,13 +80,13 @@ public class ShareToRemoteOperationResultParser {
|
||||
Log_OC.w(TAG, "No ShareXmlParser provided, creating new instance ");
|
||||
mShareXmlParser = new ShareXMLParser();
|
||||
}
|
||||
List<OCShare> shares = mShareXmlParser.parseXMLResponse(is);
|
||||
List<RemoteShare> shares = mShareXmlParser.parseXMLResponse(is);
|
||||
|
||||
if (mShareXmlParser.isSuccess()) {
|
||||
if ((shares != null && shares.size() > 0) || !mOneOrMoreSharesRequired) {
|
||||
result = new RemoteOperationResult<>(RemoteOperationResult.ResultCode.OK);
|
||||
if (shares != null) {
|
||||
for (OCShare share : shares) {
|
||||
for (RemoteShare share : shares) {
|
||||
resultData.add(share);
|
||||
// build the share link if not in the response
|
||||
// (needed for OC servers < 9.0.0, see ShareXMLParser.java#line256)
|
||||
|
@ -79,374 +79,363 @@ public class ShareXMLParser {
|
||||
private static final String NODE_SHARE_WITH_ADDITIONAL_INFO = "share_with_additional_info";
|
||||
private static final String NODE_NAME = "name";
|
||||
|
||||
private static final String NODE_URL = "url";
|
||||
private static final String NODE_URL = "url";
|
||||
|
||||
private static final String TYPE_FOLDER = "folder";
|
||||
private static final String TYPE_FOLDER = "folder";
|
||||
|
||||
private static final int SUCCESS = 200;
|
||||
private static final int ERROR_WRONG_PARAMETER = 400;
|
||||
private static final int ERROR_FORBIDDEN = 403;
|
||||
private static final int ERROR_NOT_FOUND = 404;
|
||||
private static final int SUCCESS = 200;
|
||||
private static final int ERROR_WRONG_PARAMETER = 400;
|
||||
private static final int ERROR_FORBIDDEN = 403;
|
||||
private static final int ERROR_NOT_FOUND = 404;
|
||||
|
||||
private String mStatus;
|
||||
private int mStatusCode;
|
||||
private String mMessage;
|
||||
private String mStatus;
|
||||
private int mStatusCode;
|
||||
private String mMessage;
|
||||
|
||||
// Getters and Setters
|
||||
public String getStatus() {
|
||||
return mStatus;
|
||||
}
|
||||
// Getters and Setters
|
||||
public String getStatus() {
|
||||
return mStatus;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.mStatus = status;
|
||||
}
|
||||
public void setStatus(String status) {
|
||||
this.mStatus = status;
|
||||
}
|
||||
|
||||
public int getStatusCode() {
|
||||
return mStatusCode;
|
||||
}
|
||||
public int getStatusCode() {
|
||||
return mStatusCode;
|
||||
}
|
||||
|
||||
public void setStatusCode(int statusCode) {
|
||||
this.mStatusCode = statusCode;
|
||||
}
|
||||
public void setStatusCode(int statusCode) {
|
||||
this.mStatusCode = statusCode;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return mMessage;
|
||||
}
|
||||
public String getMessage() {
|
||||
return mMessage;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.mMessage = message;
|
||||
}
|
||||
public void setMessage(String message) {
|
||||
this.mMessage = message;
|
||||
}
|
||||
|
||||
// Constructor
|
||||
public ShareXMLParser() {
|
||||
mStatusCode = -1;
|
||||
}
|
||||
// Constructor
|
||||
public ShareXMLParser() {
|
||||
mStatusCode = -1;
|
||||
}
|
||||
|
||||
public boolean isSuccess() {
|
||||
return mStatusCode == SUCCESS;
|
||||
}
|
||||
public boolean isSuccess() {
|
||||
return mStatusCode == SUCCESS;
|
||||
}
|
||||
|
||||
public boolean isForbidden() {
|
||||
return mStatusCode == ERROR_FORBIDDEN;
|
||||
}
|
||||
public boolean isForbidden() {
|
||||
return mStatusCode == ERROR_FORBIDDEN;
|
||||
}
|
||||
|
||||
public boolean isNotFound() {
|
||||
return mStatusCode == ERROR_NOT_FOUND;
|
||||
}
|
||||
public boolean isNotFound() {
|
||||
return mStatusCode == ERROR_NOT_FOUND;
|
||||
}
|
||||
|
||||
public boolean isWrongParameter() {
|
||||
return mStatusCode == ERROR_WRONG_PARAMETER;
|
||||
}
|
||||
public boolean isWrongParameter() {
|
||||
return mStatusCode == ERROR_WRONG_PARAMETER;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse is as response of Share API
|
||||
*
|
||||
* @param is
|
||||
* @return List of ShareRemoteFiles
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
public ArrayList<OCShare> parseXMLResponse(InputStream is) throws XmlPullParserException,
|
||||
IOException {
|
||||
/**
|
||||
* Parse is as response of Share API
|
||||
* @param is
|
||||
* @return List of ShareRemoteFiles
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
public ArrayList<RemoteShare> parseXMLResponse(InputStream is) throws XmlPullParserException,
|
||||
IOException {
|
||||
|
||||
try {
|
||||
// XMLPullParser
|
||||
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
||||
factory.setNamespaceAware(true);
|
||||
try {
|
||||
// XMLPullParser
|
||||
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
||||
factory.setNamespaceAware(true);
|
||||
|
||||
XmlPullParser parser = Xml.newPullParser();
|
||||
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
|
||||
parser.setInput(is, null);
|
||||
parser.nextTag();
|
||||
return readOCS(parser);
|
||||
XmlPullParser parser = Xml.newPullParser();
|
||||
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
|
||||
parser.setInput(is, null);
|
||||
parser.nextTag();
|
||||
return readOCS(parser);
|
||||
|
||||
} finally {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse OCS node
|
||||
*
|
||||
* @param parser
|
||||
* @return List of ShareRemoteFiles
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private ArrayList<OCShare> readOCS(XmlPullParser parser) throws XmlPullParserException,
|
||||
IOException {
|
||||
ArrayList<OCShare> shares = new ArrayList<>();
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_OCS);
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
// read NODE_META and NODE_DATA
|
||||
if (name.equalsIgnoreCase(NODE_META)) {
|
||||
readMeta(parser);
|
||||
} else if (name.equalsIgnoreCase(NODE_DATA)) {
|
||||
shares = readData(parser);
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
/**
|
||||
* Parse OCS node
|
||||
* @param parser
|
||||
* @return List of ShareRemoteFiles
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private ArrayList<RemoteShare> readOCS (XmlPullParser parser) throws XmlPullParserException,
|
||||
IOException {
|
||||
ArrayList<RemoteShare> shares = new ArrayList<>();
|
||||
parser.require(XmlPullParser.START_TAG, ns , NODE_OCS);
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
// read NODE_META and NODE_DATA
|
||||
if (name.equalsIgnoreCase(NODE_META)) {
|
||||
readMeta(parser);
|
||||
} else if (name.equalsIgnoreCase(NODE_DATA)) {
|
||||
shares = readData(parser);
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
|
||||
}
|
||||
return shares;
|
||||
}
|
||||
}
|
||||
return shares;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse Meta node
|
||||
*
|
||||
* @param parser
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_META);
|
||||
//Log_OC.d(TAG, "---- NODE META ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
/**
|
||||
* Parse Meta node
|
||||
* @param parser
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_META);
|
||||
//Log_OC.d(TAG, "---- NODE META ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
|
||||
if (name.equalsIgnoreCase(NODE_STATUS)) {
|
||||
setStatus(readNode(parser, NODE_STATUS));
|
||||
if (name.equalsIgnoreCase(NODE_STATUS)) {
|
||||
setStatus(readNode(parser, NODE_STATUS));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) {
|
||||
setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE)));
|
||||
} else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) {
|
||||
setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_MESSAGE)) {
|
||||
setMessage(readNode(parser, NODE_MESSAGE));
|
||||
} else if (name.equalsIgnoreCase(NODE_MESSAGE)) {
|
||||
setMessage(readNode(parser, NODE_MESSAGE));
|
||||
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse Data node
|
||||
*
|
||||
* @param parser
|
||||
* @return
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private ArrayList<OCShare> readData(XmlPullParser parser) throws XmlPullParserException,
|
||||
IOException {
|
||||
ArrayList<OCShare> shares = new ArrayList<OCShare>();
|
||||
OCShare share = null;
|
||||
/**
|
||||
* Parse Data node
|
||||
* @param parser
|
||||
* @return
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private ArrayList<RemoteShare> readData(XmlPullParser parser) throws XmlPullParserException,
|
||||
IOException {
|
||||
ArrayList<RemoteShare> shares = new ArrayList<RemoteShare>();
|
||||
RemoteShare share = null;
|
||||
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_DATA);
|
||||
//Log_OC.d(TAG, "---- NODE DATA ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||
readElement(parser, shares);
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_DATA);
|
||||
//Log_OC.d(TAG, "---- NODE DATA ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
String name = parser.getName();
|
||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||
readElement(parser, shares);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
||||
share = new OCShare();
|
||||
String value = readNode(parser, NODE_ID);
|
||||
share.setIdRemoteShared(Integer.parseInt(value));
|
||||
} else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response
|
||||
share = new RemoteShare();
|
||||
String value = readNode(parser, NODE_ID);
|
||||
share.setIdRemoteShared(Integer.parseInt(value));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||
// NOTE: this field is received in all the public shares from OC 9.0.0
|
||||
// in previous versions, it's received in the result of POST requests, but not
|
||||
// in GET requests
|
||||
share.setShareType(ShareType.PUBLIC_LINK);
|
||||
String value = readNode(parser, NODE_URL);
|
||||
share.setShareLink(value);
|
||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||
// NOTE: this field is received in all the public shares from OC 9.0.0
|
||||
// in previous versions, it's received in the result of POST requests, but not
|
||||
// in GET requests
|
||||
share.setShareType(ShareType.PUBLIC_LINK);
|
||||
String value = readNode(parser, NODE_URL);
|
||||
share.setShareLink(value);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||
share.setToken(readNode(parser, NODE_TOKEN));
|
||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||
share.setToken(readNode(parser, NODE_TOKEN));
|
||||
|
||||
} else {
|
||||
skip(parser);
|
||||
} else {
|
||||
skip(parser);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (share != null) {
|
||||
// this is the response of a request for creation; don't pass to isValidShare()
|
||||
shares.add(share);
|
||||
}
|
||||
if (share != null) {
|
||||
// this is the response of a request for creation; don't pass to isValidShare()
|
||||
shares.add(share);
|
||||
}
|
||||
|
||||
return shares;
|
||||
return shares;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parse Element node
|
||||
*
|
||||
* @param parser
|
||||
* @return
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void readElement(XmlPullParser parser, ArrayList<OCShare> shares)
|
||||
throws XmlPullParserException, IOException {
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
||||
/**
|
||||
* Parse Element node
|
||||
* @param parser
|
||||
* @return
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void readElement(XmlPullParser parser, ArrayList<RemoteShare> shares)
|
||||
throws XmlPullParserException, IOException {
|
||||
parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT);
|
||||
|
||||
OCShare share = new OCShare();
|
||||
RemoteShare share = new RemoteShare();
|
||||
|
||||
//Log_OC.d(TAG, "---- NODE ELEMENT ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
//Log_OC.d(TAG, "---- NODE ELEMENT ---");
|
||||
while (parser.next() != XmlPullParser.END_TAG) {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String name = parser.getName();
|
||||
String name = parser.getName();
|
||||
|
||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||
// patch to work around servers responding with extra <element> surrounding all
|
||||
// the shares on the same file before
|
||||
// https://github.com/owncloud/core/issues/6992 was fixed
|
||||
readElement(parser, shares);
|
||||
if (name.equalsIgnoreCase(NODE_ELEMENT)) {
|
||||
// patch to work around servers responding with extra <element> surrounding all
|
||||
// the shares on the same file before
|
||||
// https://github.com/owncloud/core/issues/6992 was fixed
|
||||
readElement(parser, shares);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
||||
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
||||
} else if (name.equalsIgnoreCase(NODE_ID)) {
|
||||
share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) {
|
||||
share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER));
|
||||
fixPathForFolder(share);
|
||||
} else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) {
|
||||
share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER));
|
||||
fixPathForFolder(share);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) {
|
||||
share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE)));
|
||||
} else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) {
|
||||
share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_PARENT)) {
|
||||
readNode(parser, NODE_PARENT);
|
||||
} else if (name.equalsIgnoreCase(NODE_PARENT)) {
|
||||
readNode(parser, NODE_PARENT);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) {
|
||||
int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE));
|
||||
share.setShareType(ShareType.fromValue(value));
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) {
|
||||
int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE));
|
||||
share.setShareType(ShareType.fromValue(value));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) {
|
||||
share.setShareWith(readNode(parser, NODE_SHARE_WITH));
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) {
|
||||
share.setShareWith(readNode(parser, NODE_SHARE_WITH));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) {
|
||||
share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE)));
|
||||
} else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) {
|
||||
share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_PATH)) {
|
||||
share.setPath(readNode(parser, NODE_PATH));
|
||||
fixPathForFolder(share);
|
||||
} else if (name.equalsIgnoreCase(NODE_PATH)) {
|
||||
share.setPath(readNode(parser, NODE_PATH));
|
||||
fixPathForFolder(share);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) {
|
||||
share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS)));
|
||||
} else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) {
|
||||
share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_STIME)) {
|
||||
share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME)));
|
||||
} else if (name.equalsIgnoreCase(NODE_STIME)) {
|
||||
share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME)));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_EXPIRATION)) {
|
||||
String value = readNode(parser, NODE_EXPIRATION);
|
||||
if (!(value.length() == 0)) {
|
||||
share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime());
|
||||
}
|
||||
} else if (name.equalsIgnoreCase(NODE_EXPIRATION)) {
|
||||
String value = readNode(parser, NODE_EXPIRATION);
|
||||
if (!(value.length() == 0)) {
|
||||
share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime());
|
||||
}
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||
share.setToken(readNode(parser, NODE_TOKEN));
|
||||
} else if (name.equalsIgnoreCase(NODE_TOKEN)) {
|
||||
share.setToken(readNode(parser, NODE_TOKEN));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_STORAGE)) {
|
||||
readNode(parser, NODE_STORAGE);
|
||||
} else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) {
|
||||
readNode(parser, NODE_MAIL_SEND);
|
||||
} else if (name.equalsIgnoreCase(NODE_STORAGE)) {
|
||||
readNode(parser, NODE_STORAGE);
|
||||
} else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) {
|
||||
readNode(parser, NODE_MAIL_SEND);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) {
|
||||
share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME));
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) {
|
||||
share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_SHARE_WITH_ADDITIONAL_INFO)) {
|
||||
share.setSharedWithAdditionalInfo(readNode(parser, NODE_SHARE_WITH_ADDITIONAL_INFO));
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||
String value = readNode(parser, NODE_URL);
|
||||
share.setShareLink(value);
|
||||
} else if (name.equalsIgnoreCase(NODE_URL)) {
|
||||
String value = readNode(parser, NODE_URL);
|
||||
share.setShareLink(value);
|
||||
|
||||
} else if (name.equalsIgnoreCase(NODE_NAME)) {
|
||||
share.setName(readNode(parser, NODE_NAME));
|
||||
|
||||
} else {
|
||||
skip(parser);
|
||||
}
|
||||
}
|
||||
skip(parser);
|
||||
}
|
||||
}
|
||||
|
||||
if (isValidShare(share)) {
|
||||
shares.add(share);
|
||||
}
|
||||
}
|
||||
if (isValidShare(share)) {
|
||||
shares.add(share);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidShare(OCShare share) {
|
||||
return (share.getRemoteId() > -1);
|
||||
}
|
||||
private boolean isValidShare(RemoteShare share) {
|
||||
return (share.getRemoteId() > -1);
|
||||
}
|
||||
|
||||
private void fixPathForFolder(OCShare share) {
|
||||
if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 &&
|
||||
!share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) {
|
||||
share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR);
|
||||
}
|
||||
}
|
||||
private void fixPathForFolder(RemoteShare share) {
|
||||
if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 &&
|
||||
!share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) {
|
||||
share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a node, to obtain its text. Needs readText method
|
||||
*
|
||||
* @param parser
|
||||
* @param node
|
||||
* @return Text of the node
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private String readNode(XmlPullParser parser, String node) throws XmlPullParserException,
|
||||
IOException {
|
||||
parser.require(XmlPullParser.START_TAG, ns, node);
|
||||
String value = readText(parser);
|
||||
//Log_OC.d(TAG, "node= " + node + ", value= " + value);
|
||||
parser.require(XmlPullParser.END_TAG, ns, node);
|
||||
return value;
|
||||
}
|
||||
/**
|
||||
* Parse a node, to obtain its text. Needs readText method
|
||||
* @param parser
|
||||
* @param node
|
||||
* @return Text of the node
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private String readNode (XmlPullParser parser, String node) throws XmlPullParserException,
|
||||
IOException{
|
||||
parser.require(XmlPullParser.START_TAG, ns, node);
|
||||
String value = readText(parser);
|
||||
//Log_OC.d(TAG, "node= " + node + ", value= " + value);
|
||||
parser.require(XmlPullParser.END_TAG, ns, node);
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the text from a node
|
||||
*
|
||||
* @param parser
|
||||
* @return Text of the node
|
||||
* @throws IOException
|
||||
* @throws XmlPullParserException
|
||||
*/
|
||||
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
|
||||
String result = "";
|
||||
if (parser.next() == XmlPullParser.TEXT) {
|
||||
result = parser.getText();
|
||||
parser.nextTag();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* Read the text from a node
|
||||
* @param parser
|
||||
* @return Text of the node
|
||||
* @throws IOException
|
||||
* @throws XmlPullParserException
|
||||
*/
|
||||
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
|
||||
String result = "";
|
||||
if (parser.next() == XmlPullParser.TEXT) {
|
||||
result = parser.getText();
|
||||
parser.nextTag();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Skip tags in parser procedure
|
||||
*
|
||||
* @param parser
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
int depth = 1;
|
||||
while (depth != 0) {
|
||||
switch (parser.next()) {
|
||||
case XmlPullParser.END_TAG:
|
||||
depth--;
|
||||
break;
|
||||
case XmlPullParser.START_TAG:
|
||||
depth++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Skip tags in parser procedure
|
||||
* @param parser
|
||||
* @throws XmlPullParserException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
|
||||
if (parser.getEventType() != XmlPullParser.START_TAG) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
int depth = 1;
|
||||
while (depth != 0) {
|
||||
switch (parser.next()) {
|
||||
case XmlPullParser.END_TAG:
|
||||
depth--;
|
||||
break;
|
||||
case XmlPullParser.START_TAG:
|
||||
depth++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -99,7 +99,7 @@ public class UpdateRemoteShareOperation extends RemoteOperation<ShareParserResul
|
||||
mPassword = null; // no update
|
||||
mExpirationDateInMillis = 0; // no update
|
||||
mPublicUpload = null;
|
||||
mPermissions = OCShare.DEFAULT_PERMISSION;
|
||||
mPermissions = RemoteShare.DEFAULT_PERMISSION;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user