using System.IO;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Runtime.Serialization;

namespace BLL
{
    [ServiceContract(Name = "Services")]
    internal interface IWeb
    {
        [OperationContract]
        [WebGet(UriTemplate = "StealAgv/takeOld?Place={place}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result TakeOldGet(string place);

        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "StealAgv/takeOld", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result TakeOldPost(Stream info);

        [OperationContract]
        [WebGet(UriTemplate = "StealAgv/sendNew?From={from}&Place={place}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result SendNewGet(string from, string place);

        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "StealAgv/sendNew", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result SendNewPost(Stream info);

        [OperationContract]
        [WebGet(UriTemplate = "StealAgv/storage?Place={place}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result StorageGet(string place);

        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "StealAgv/storage", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        Result StoragePost(Stream info);

    }

    [DataContract]
    internal class Result
    {
        [DataMember]
        public int Code { get; set; }

        [DataMember]
        public string Msg { get; set; }

        public Result()
        {
            Code = 0;
            Msg = "OK";
        }
    }

}