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