IMethodResponse.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* This file is part of OpenSubtitles Handler
  2. A library that handle OpenSubtitles.org XML-RPC methods.
  3. Copyright © Ala Ibrahim Hadid 2013
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. using System;
  16. namespace OpenSubtitlesHandler
  17. {
  18. /// <summary>
  19. /// When you call a method to communicate with OpenSubtitles server, that method should return this response with the reuired information.
  20. /// </summary>
  21. public abstract class IMethodResponse
  22. {
  23. public IMethodResponse() { LoadAttributes(); }
  24. public IMethodResponse(string name, string message)
  25. {
  26. this.name = name;
  27. this.message = message;
  28. }
  29. protected string name;
  30. protected string message;
  31. protected double seconds;
  32. protected string status;
  33. protected void LoadAttributes()
  34. {
  35. //foreach (Attribute attr in Attribute.GetCustomAttributes(this.GetType()))
  36. //{
  37. // if (attr.GetType() == typeof(MethodResponseDescription))
  38. // {
  39. // this.name = ((MethodResponseDescription)attr).Name;
  40. // this.message = ((MethodResponseDescription)attr).Message;
  41. // break;
  42. // }
  43. //}
  44. }
  45. [Description("The name of this response"), Category("MethodResponse")]
  46. public virtual string Name { get { return name; } set { name = value; } }
  47. [Description("The message about this response"), Category("MethodResponse")]
  48. public virtual string Message { get { return message; } set { message = value; } }
  49. [Description("Time taken to execute this command on server"), Category("MethodResponse")]
  50. public double Seconds { get { return seconds; } set { seconds = value; } }
  51. [Description("The status"), Category("MethodResponse")]
  52. public string Status { get { return status; } set { status = value; } }
  53. }
  54. public class DescriptionAttribute : Attribute
  55. {
  56. public DescriptionAttribute(string text) { }
  57. }
  58. public class CategoryAttribute : Attribute
  59. {
  60. public CategoryAttribute(string text) { }
  61. }
  62. }