@@ -11,6 +11,11 @@ using System.Xml;
|
||||
using umbraco.cms.businesslogic.web;
|
||||
using umbraco.cms;
|
||||
using umbraco.cms.businesslogic.member;
|
||||
using umbraco.cms.businesslogic.media;
|
||||
using System.IO;
|
||||
using umbraco.cms.businesslogic.property;
|
||||
using umbraco.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace umbraco.webservices.media
|
||||
{
|
||||
@@ -28,6 +33,305 @@ namespace umbraco.webservices.media
|
||||
return Services.MediaService;
|
||||
}
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void update(mediaCarrier carrier, string username, string password) {
|
||||
|
||||
Authenticate(username, password);
|
||||
|
||||
if (carrier == null) throw new Exception("No carrier specified");
|
||||
|
||||
Media m = new Media(carrier.Id);
|
||||
|
||||
if (carrier.MediaProperties != null)
|
||||
{
|
||||
foreach (mediaProperty updatedproperty in carrier.MediaProperties)
|
||||
{
|
||||
if (!(updatedproperty.Key.ToLower().Equals("umbracofile")))
|
||||
{
|
||||
Property property = m.getProperty(updatedproperty.Key);
|
||||
if (property == null)
|
||||
throw new Exception("property " + updatedproperty.Key + " was not found");
|
||||
property.Value = updatedproperty.PropertyValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.Save();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int create(mediaCarrier carrier, string username, string password)
|
||||
{
|
||||
|
||||
Authenticate(username, password);
|
||||
|
||||
if (carrier == null) throw new Exception("No carrier specified");
|
||||
if (carrier.ParentId == 0) throw new Exception("Media needs a parent");
|
||||
if (carrier.TypeId == 0) throw new Exception("Type must be specified");
|
||||
if (carrier.Text == null || carrier.Text.Length == 0) carrier.Text = "unnamed";
|
||||
|
||||
umbraco.BusinessLogic.User user = GetUser(username, password);
|
||||
|
||||
|
||||
MediaType mt = new MediaType(carrier.TypeId);
|
||||
|
||||
Media m = Media.MakeNew(carrier.Text, mt, user, carrier.ParentId);
|
||||
|
||||
if (carrier.MediaProperties != null)
|
||||
{
|
||||
foreach (mediaProperty updatedproperty in carrier.MediaProperties)
|
||||
{
|
||||
if(!(updatedproperty.Key.ToLower().Equals("umbracofile"))) {
|
||||
Property property = m.getProperty(updatedproperty.Key);
|
||||
if (property == null)
|
||||
throw new Exception("property " + updatedproperty.Key + " was not found");
|
||||
property.Value = updatedproperty.PropertyValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m.Id;
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void delete(int id, string username, string password)
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
Media m = new Media(id);
|
||||
|
||||
if (m.HasChildren)
|
||||
throw new Exception("Cannot delete Media " + id + " as it has child nodes");
|
||||
|
||||
Property p = m.getProperty("umbracoFile");
|
||||
if (p != null)
|
||||
{
|
||||
if (!(p.Value == System.DBNull.Value))
|
||||
{
|
||||
string fileName = (string)p.Value;
|
||||
string filePath = umbraco.IO.IOHelper.MapPath(fileName);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.delete();
|
||||
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void writeContents(int id, string filename, Byte[] contents, string username, string password)
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
filename = filename.Replace("/", IOHelper.DirSepChar.ToString());
|
||||
filename = filename.Replace(@"\", IOHelper.DirSepChar.ToString());
|
||||
filename = filename.Substring(filename.LastIndexOf(IOHelper.DirSepChar) + 1, filename.Length - filename.LastIndexOf(IOHelper.DirSepChar) - 1).ToLower();
|
||||
|
||||
Media m = new Media(id);
|
||||
|
||||
|
||||
System.IO.Directory.CreateDirectory(IOHelper.MapPath(SystemDirectories.Media + "/" + m.getProperty("umbracoFile").Id ));
|
||||
string fullFilePath = IOHelper.MapPath(SystemDirectories.Media + "/" + m.getProperty("umbracoFile").Id + "/" + filename);
|
||||
|
||||
File.WriteAllBytes(fullFilePath, contents);
|
||||
|
||||
FileInfo f = new FileInfo(fullFilePath);
|
||||
m.getProperty("umbracoFile").Value = SystemDirectories.Media + "/" + filename;
|
||||
m.getProperty("umbracoExtension").Value = f.Extension.Replace(".","");
|
||||
m.getProperty("umbracoBytes").Value = f.Length.ToString();
|
||||
|
||||
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public mediaCarrier read(int id, string username, string password)
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
|
||||
Media m = new Media(id);
|
||||
|
||||
|
||||
return createCarrier(m);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public List<mediaCarrier> readList(int parentId, string username, string password)
|
||||
{
|
||||
Authenticate(username, password);
|
||||
|
||||
List<mediaCarrier> carriers = new List<mediaCarrier>();
|
||||
Media[] mediaList;
|
||||
|
||||
if (parentId < 1)
|
||||
{
|
||||
mediaList = Media.GetRootMedias();
|
||||
}
|
||||
else
|
||||
{
|
||||
Media m = new Media(parentId);
|
||||
mediaList = m.Children;
|
||||
}
|
||||
|
||||
foreach (Media child in mediaList)
|
||||
{
|
||||
carriers.Add(createCarrier(child));
|
||||
}
|
||||
|
||||
return carriers;
|
||||
}
|
||||
|
||||
private mediaCarrier createCarrier(Media m)
|
||||
{
|
||||
mediaCarrier carrier = new mediaCarrier();
|
||||
carrier.Id = m.Id;
|
||||
carrier.Text = m.Text;
|
||||
|
||||
carrier.TypeAlias = m.ContentType.Alias;
|
||||
carrier.TypeId = m.ContentType.Id;
|
||||
|
||||
carrier.CreateDateTime = m.CreateDateTime;
|
||||
carrier.HasChildren = m.HasChildren;
|
||||
carrier.Level = m.Level;
|
||||
|
||||
carrier.Path = m.Path;
|
||||
carrier.SortOrder = m.sortOrder;
|
||||
|
||||
try
|
||||
{
|
||||
carrier.ParentId = m.Parent.Id;
|
||||
}
|
||||
catch
|
||||
{
|
||||
carrier.ParentId = -1;
|
||||
}
|
||||
|
||||
foreach(Property p in m.getProperties) {
|
||||
|
||||
mediaProperty carrierprop = new mediaProperty();
|
||||
|
||||
if (p.Value == System.DBNull.Value)
|
||||
{
|
||||
carrierprop.PropertyValue = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
carrierprop.PropertyValue = p.Value;
|
||||
}
|
||||
|
||||
carrierprop.Key = p.PropertyType.Alias;
|
||||
carrier.MediaProperties.Add(carrierprop);
|
||||
|
||||
}
|
||||
|
||||
return carrier;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[Serializable]
|
||||
[XmlType(Namespace = "http://umbraco.org/webservices/")]
|
||||
public class mediaCarrier
|
||||
{
|
||||
|
||||
public int Id
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
public string Text
|
||||
{
|
||||
get;
|
||||
set;
|
||||
|
||||
}
|
||||
|
||||
public string TypeAlias
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int TypeId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public DateTime CreateDateTime
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public Boolean HasChildren
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int Level
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int ParentId
|
||||
{
|
||||
get;
|
||||
set;
|
||||
|
||||
}
|
||||
|
||||
public string Path
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public int SortOrder
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public List<mediaProperty> MediaProperties
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public mediaCarrier()
|
||||
{
|
||||
MediaProperties = new List<mediaProperty>();
|
||||
}
|
||||
}
|
||||
|
||||
[XmlType(Namespace = "http://umbraco.org/webservices/")]
|
||||
public class mediaProperty
|
||||
{
|
||||
public mediaProperty()
|
||||
{
|
||||
}
|
||||
|
||||
public object PropertyValue
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
public string Key
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user