-
Notifications
You must be signed in to change notification settings - Fork 19
/
IKetarinRpc.cs
72 lines (60 loc) · 2.17 KB
/
IKetarinRpc.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using CookComputing.XmlRpc;
namespace Ketarin
{
[XmlRpcUrl("http://ketarin.canneverbe.com/rpc")]
public interface IKetarinRpc : IXmlRpcProxy
{
[XmlRpcMethod("ketarin.GetMostDownloadedApplications")]
RpcApplication[] GetMostDownloadedApplications();
[XmlRpcMethod("ketarin.GetApplications")]
RpcApplication[] GetApplications(string searchSubject);
[XmlRpcMethod("ketarin.GetSimilarApplications")]
RpcApplication[] GetSimilarApplications(string searchSubject, string appGuid);
[XmlRpcMethod("ketarin.GetUpdatedApplications")]
string[] GetUpdatedApplications(RpcAppGuidAndDate[] existingApps);
[XmlRpcMethod("ketarin.GetApplication")]
string GetApplication(int shareId);
[XmlRpcMethod("ketarin.SaveApplication")]
int SaveApplication(string xml, string authorGuid);
}
public struct RpcAppGuidAndDate
{
[XmlRpcMember("applicationguid")]
public string ApplicationGuid;
[XmlRpcMember("updatedat")]
public int UpdatedAt;
public RpcAppGuidAndDate(Guid guid, DateTime? date)
{
ApplicationGuid = guid.ToString();
UpdatedAt = date.HasValue ? RpcApplication.DotNetToUnix(date.Value) : 0;
}
}
public struct RpcApplication
{
public static DateTime UnixToDotNet(int unixTimestamp)
{
return new DateTime(1970, 1, 1).AddSeconds(unixTimestamp);
}
public static int DotNetToUnix(DateTime date)
{
return Convert.ToInt32((date - new DateTime(1970, 1, 1)).TotalSeconds);
}
[XmlRpcMember("applicationname")]
public string ApplicationName;
[XmlRpcMember("updatedat")]
public int UpdatedAt;
[XmlRpcMember("shareid")]
public int ShareId;
[XmlRpcMember("downloadcount")]
public int UseCount;
[XmlRpcMissingMapping(MappingAction.Ignore)]
public DateTime UpdatedAtDate
{
get
{
return UnixToDotNet(UpdatedAt);
}
}
}
}