private static ServiceProgramVersion DownloadNewVersion(ServiceDefinition s, ProgamVersion version) { Common.DTO.MessageWrapper mw = new Common.DTO.MessageWrapper( DateTime.Now, Guid.Empty /*no user needed*/, "ZooKeeper", "N/A", // ?? "N/A", // ?? "N/A", // ?? Guid.Empty /*no org needed*/); var data = new ServiceDownloadDefinition() { AutoUpdate = s.AutoUpdateSetting, ServiceId = s.ServiceInfo.Id, CurrentVersion = version }; Common.DTO.MessageWrapperHelper <ServiceDownloadDefinition> .SetData(mw, data); Console.WriteLine("Looking for updates: " + s.ServiceInfo.Name); byte[] rpc_res = RequestClient.Instance.Rpc("servicestore.download", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(mw))); var resstring = System.Text.Encoding.UTF8.GetString(rpc_res); if (resstring == "null") { return(null); } var wrapper = Newtonsoft.Json.JsonConvert.DeserializeObject <ReturnMessageWrapper>(resstring); var innerres = System.Text.Encoding.UTF8.GetString(wrapper.Data); var program = Newtonsoft.Json.JsonConvert.DeserializeObject <ServiceProgramVersion>(innerres); return(program); }
/// <summary> /// Handle an incomming message /// </summary> /// <param name="topicparts">The topic/route as a list of strings</param> /// <param name="wrapper">Message wrapper</param> /// <returns>NULL</returns> public static ReturnMessageWrapper HandleMessage(string[] topicparts, Common.DTO.MessageWrapper wrapper) { CallContext cc = new CallContext( wrapper.OrgContext, new Common.DTO.Token() { Tokenid = wrapper.UserContextToken, Scope = GlobalValues.Scope }, wrapper.IssuedDate); var operation = topicparts[1]; switch (operation) { case "download": // BEMÆRK RPC !!! ServiceDownloadDefinition downloadDef = Common.DTO.MessageWrapperHelper <ServiceDownloadDefinition> .GetData(wrapper); var foundupdate = downloadDef.FindUpdate(); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.newversion." + downloadDef.ServiceId, new Common.DTO.EventDTO(foundupdate, wrapper.Clientid, wrapper.Messageid)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, foundupdate)); // break; case "upload": if (cc.IsServiceStoreAdmin) { ServiceProgramVersion program = Common.DTO.MessageWrapperHelper <ServiceProgramVersion> .GetData(wrapper); program.SaveToDisk(); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.newserviceupdate", new Common.DTO.EventDTO(program.Version, string.Empty, string.Empty)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, program.Version)); } break; case "create": if (cc.IsServiceStoreAdmin) { Monosoft.ServiceStore.DTO.Service createservice = Common.DTO.MessageWrapperHelper <Monosoft.ServiceStore.DTO.Service> .GetData(wrapper); createservice.SaveToDisk(false); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.newservice", new Common.DTO.EventDTO(createservice, string.Empty, string.Empty)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, createservice)); } break; case "update": if (cc.IsServiceStoreAdmin) { Monosoft.ServiceStore.DTO.Service updateservice = Common.DTO.MessageWrapperHelper <Monosoft.ServiceStore.DTO.Service> .GetData(wrapper); updateservice.SaveToDisk(true); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.serviceupdate", new Common.DTO.EventDTO(updateservice, string.Empty, string.Empty)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, updateservice)); } break; case "delete": if (cc.IsServiceStoreAdmin) { Monosoft.ServiceStore.DTO.Service deleteservice = Common.DTO.MessageWrapperHelper <Monosoft.ServiceStore.DTO.Service> .GetData(wrapper); deleteservice.Delete(); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.servicedelete", new Common.DTO.EventDTO(deleteservice, string.Empty, string.Empty)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, deleteservice)); } break; case "get": if (cc.IsServiceStoreAdmin) { var res = ServicesInformation.ServiceInformation(); Common.MessageQueue.EventClient.Instance.RaiseEvent("servicestore.servicelist", new Common.DTO.EventDTO(res, wrapper.Clientid, wrapper.Messageid)); return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "OK" } }, res)); } break; default: /*log error event*/ Common.MessageQueue.Diagnostics.Instance.LogEvent( "Unknow topic for ServiceStore.", operation + " is unknown", Common.DTO.Severity.Information, wrapper.OrgContext); break; } return(ReturnMessageWrapper.CreateResult(true, wrapper, new System.Collections.Generic.List <LocalizedString>() { new LocalizedString() { Lang = "en", Text = "missing credentials" } }, null)); }