コード例 #1
0
ファイル: PushService.svc.cs プロジェクト: radtek/crm
        public PushResponse Process(PushRequest pRequest)
        {
            Loggers.Debug(new DebugLogInfo()
            {
                Message = pRequest.ToJSON()
            });
            PushResponse response;

            switch (pRequest.PlatForm)
            {
            case 1:
                AndroidRequestHandler handler1 = new AndroidRequestHandler();
                response = handler1.Process(pRequest);
                break;

            case 2:
                IOSRequestHandler handler2 = new IOSRequestHandler();
                response = handler2.Process(pRequest);
                break;

            default:
                response            = new PushResponse();
                response.ResultCode = 100;
                response.Message    = "错误的平台,只支持Android和IOS";
                break;
            }
            return(response);
        }
コード例 #2
0
        protected override void HandlePushRequest(PushRequest message, List <int> candidates)
        {
            var ncandidates = candidates.Take((int)TestedHostsCount).ToList();
            int instanceId  = Helpers.RandomNumberGenerator.GetInstanceRandomNumber();
            LeastFullAuction pushAuction = new LeastFullAuction(instanceId, message.SenderId, ncandidates, StrategyActionType.PushAction);

            Console.WriteLine($"\tMaster: Initiate a Push Auction of Host#{message.SenderId} with #{instanceId}");

            foreach (var candidateHostId in ncandidates)
            {
                if (candidateHostId == 0)
                {
                    throw new NotImplementedException();
                }
                PushLoadAvailabilityRequest request = new PushLoadAvailabilityRequest(candidateHostId, this.MachineId, message.SelectedContainerLoadInfo, instanceId, pushAuction.Owner);
                CommunicationModule.SendMessage(request);
                //Console.WriteLine($"+\n\tSending Message for Host #{candidateHostId} and Auction #{auctionId}");
            }
            if (_currentAuction != null)
            {
                throw new NotImplementedException();
            }
            //Auctions.Add(pushAuction);
            Used            = message.SenderId;
            _currentAuction = pushAuction;
        }
コード例 #3
0
        public ActionResult Push(PushRequest pushRequest)
        {
            var user     = this.AllorsUser ?? Singleton.Instance(this.AllorsSession).Guest;
            var response = new PushResponseBuilder(this.AllorsSession, user, pushRequest, Group);

            return(this.JsonSuccess(response.Build()));
        }
コード例 #4
0
        private async Task <IActionResult> ExecutePush(string userId, PushRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            try
            {
                if (!string.IsNullOrEmpty(request.ChannelId))
                {
                    await pushService.Push(request.ChannelId, request.Payload, request.Options);
                }
                else if (null != request.ChannelOptions)
                {
                    await pushService.Push(userId, request.ChannelOptions, request.Payload, request.Options);
                }
                return(StatusCode(201));
            }
            catch (PushConfigurationNotFoundException)
            {
                return(NotFound());
            }
            catch (PushPartiallyFailedException ex)
            {
                await HandleFailures(userId, ex);

                return(StatusCode(201));
            }
            catch (PushFailedException ex)
            {
                await HandleFailures(userId, ex);

                throw;
            }
        }
コード例 #5
0
        public override async Task <Null> Broadcast(PushRequest request, ServerCallContext context)
        {
            var count = await Frontend.PushService.Pusher.SendMessageToAll(request);

            logger.LogInformation($"{count} broadcasted message : {request.PushMessage}");
            return(new Null());
        }
コード例 #6
0
        public static string PostPackagePushRequest(PushRequest pushRequest)
        {
            string requestID = string.Empty;

            try {
                using (var client = new HttpClient()) {
                    string url     = pushRequest.InstanceUrl + pushRequest.ApiVersion + SFDCPushRequestUrl;
                    var    request = new HttpRequestMessage(HttpMethod.Post, url);
                    request.Headers.Add("Authorization", "Bearer " + pushRequest.AccessToken);
                    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    PackagePushRequest pr = new PackagePushRequest();
                    if (pushRequest.ScheduledStartTime != null && pushRequest.ScheduledStartTime != DateTime.MinValue)
                    {
                        pr.ScheduledStartTime = pushRequest.ScheduledStartTime;
                    }
                    pr.PackageVersionId = pushRequest.PackageVersionId;
                    string jsonbody = JsonConvert.SerializeObject(pr);
                    request.Content = new StringContent(jsonbody, Encoding.UTF8, "application/json");
                    var response = client.SendAsync(request).Result;
                    requestID = response.Content.ReadAsStringAsync().Result;
                }
            } catch (Exception) {
                throw;
            }
            return(requestID);
        }
コード例 #7
0
        public async void WorkspaceNewObject()
        {
            var administrator = new Users(this.Session).GetUser("administrator");

            await this.SignIn(administrator);

            var uri = new Uri(@"Database/Push", UriKind.Relative);

            var pushRequest = new PushRequest
            {
                NewObjects = new[] { new PushRequestNewObject {
                                         T = "Build", NI = "-1"
                                     }, }
            };
            var response = await this.PostAsJsonAsync(uri, pushRequest);

            var pushResponse = await this.ReadAsAsync <PushResponse>(response);

            this.Session.Rollback();

            var build = (Build)this.Session.Instantiate(pushResponse.NewObjects[0].I);

            Assert.Equal(new Guid("DCE649A4-7CF6-48FA-93E4-CDE222DA2A94"), build.Guid);
            Assert.Equal("Exist", build.String);
        }
コード例 #8
0
        public PushRequest PushRequest()
        {
            var data = new PushRequest
            {
                newObjects = new List <PushRequestNewObject>(),
                objects    = new List <PushRequestObject>()
            };

            foreach (var newSessionObject in this.newSessionObjectById.Values)
            {
                var objectData = newSessionObject.SaveNew();
                if (objectData != null)
                {
                    data.newObjects.Add(objectData);
                }
            }

            foreach (var sessionObject in this.sessionObjectById.Values)
            {
                var objectData = sessionObject.Save();
                if (objectData != null)
                {
                    data.objects.Add(objectData);
                }
            }

            return(data);
        }
コード例 #9
0
        public PushRespose Reject(string caseNum)
        {
            string hatsHost = ConfigurationManager.AppSettings["hats_host"];

            if (hatsHost.IsNullOrEmpty())
            {
                throw new Exception("缺少hats_host配置节");
            }

            var rejectCase = new PublicMortgageDto()
            {
                CaseNum = caseNum,
                Status  = 2
            };

            var resquestBody = new PushRequest()
            {
                RequestData = rejectCase.ToHatsString()
            };


            var request = new HttpItem()
            {
                URL          = string.Format("{0}/api/BaseAuditPush/AddBaseAuditByPublic", hatsHost),
                Method       = "post",
                ContentType  = "application/json;charset=utf-8",
                Postdata     = resquestBody.ToJson(),
                Accept       = "text/json",
                PostEncoding = Encoding.UTF8
            };

            var httpResult = new HttpHelper().GetHtml(request);

            return(Newtonsoft.Json.JsonConvert.DeserializeObject <PushRespose>(httpResult.Html));
        }
コード例 #10
0
        public HttpResponseMessage Post(PushRequest req)
        {
            HttpResponseMessage message = null;

            try {
                // schedule the sending of the push notification
                var ci   = _orchardServices.ContentManager.Create("BackgroundPush");
                var part = ci.As <MobilePushPart>();
                part.DevicePush       = req.DevType;
                part.PushSent         = false;
                part.TestPush         = !req.Prod;
                part.TestPushToDevice = false;
                part.TextPush         = req.Text;
                part.ToPush           = true;
                part.UseRecipientList = false;
                // set external url on a dedicated field on this content item
                var urlField = ci.Parts.FirstOrDefault(x => x.PartDefinition.Name == "BackgroundPush").Fields.FirstOrDefault(x => x.Name == "ExternalUrl");
                (urlField as TextField).Value = req.ExternalUrl;
                // force publish of content item to start scheduled task that will send push notifications
                ci.VersionRecord.Published = false;
                _orchardServices.ContentManager.Publish(ci);
                message         = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
                message.Content = new StringContent("OK");
            }
            catch (Exception ex) {
                Logger.Error(ex, "ExternalPushController - Error starting asynchronous thread to send push notifications.");
                message         = new HttpResponseMessage(System.Net.HttpStatusCode.InternalServerError);
                message.Content = new StringContent(ex.Message);
            }
            return(message);
        }
コード例 #11
0
        public async Task <IActionResult> Post([FromBody] PushRequest pushRequest)
        {
            pushRequest.Message = pushRequest.Message;
            var message = await _webPushService.SendNotificationForUser(1, pushRequest.Message);

            return(new CreatedResult("", message));
        }
コード例 #12
0
        private void HandlePushRequest(PushRequest message, List <int> candidates)
        {
            var     ncandidates = candidates.Take(calculateCountFromPercent(candidates.Count, TestedHostsCount)).ToList();
            Auction pushAuction = CreateAuctionInstance(PushAuctionType, message.SenderId, ncandidates, StrategyActionType.PushAction);

            foreach (var candidateHostId in ncandidates)
            {
                if (candidateHostId == 0)
                {
                    throw new NotImplementedException();
                }
                PushLoadAvailabilityRequest request
                    = new PushLoadAvailabilityRequest(candidateHostId, this.MachineId, message.SelectedContainerLoadInfo, pushAuction.InstanceId, pushAuction.Owner);
                CommunicationModule.SendMessage(request);
                //Console.WriteLine($"+\n\tSending Message for Host #{candidateHostId} and Auction #{auctionId}");
            }
            if (_masterState.Auction != null)
            {
                throw new NotImplementedException();
            }
            //Auctions.Add(pushAuction);
            //_masterState.CurrentAction = MasterCurrentAction.PushAuction;
            _masterState.CurrentHost = message.SenderId;
            _masterState.Auction     = pushAuction;
        }
コード例 #13
0
ファイル: PushService.cs プロジェクト: mrttmz/PushServer
        public object Any(PushRequest request)
        {
            //Check if the Api Key provided by client match the key in app.config
            if (request.ApiKey == Settings.ApiKey)
            {
                foreach (var pushNotification in request.Notifications)
                {
                    switch (pushNotification.Provider)
                    {
                    case Provider.Apple:
                        //NOTE: Apple Notification Payload has 256 chars limit.
                        PushBroker.QueueNotification(new AppleNotification().ForDeviceToken(pushNotification.PushId).WithCustomItem("data", HttpUtility.UrlDecode(pushNotification.Data)));
                        break;

                    case Provider.Android:
                        PushBroker.QueueNotification(new GcmNotification().ForDeviceRegistrationId(pushNotification.PushId)
                                                     .WithJson(HttpUtility.UrlDecode(pushNotification.Data)));
                        break;

                    case Provider.WindowsPhone:
                        PushBroker.QueueNotification(new WindowsPhoneRawNotification().ForEndpointUri(new Uri(pushNotification.PushId))
                                                     .WithRaw(HttpUtility.UrlDecode(pushNotification.Data)));
                        break;
                    }
                }

                return(new PushResponse()
                {
                    Result = request.Notifications.Length + " notifications encoded"
                });
            }

            throw new HttpError(HttpStatusCode.Unauthorized, "Invalid Api Key");
        }
コード例 #14
0
ファイル: Notify.cs プロジェクト: vuongthai91/Fund
        /// <summary>
        /// 接收推送消息
        /// </summary>
        /// <param name="xml">请求消息</param>
        /// <param name="configData">configData</param>
        /// <returns>处理结果</returns>
        public static PushResult ReceivePushMessage(string xml, ConfigData configData)
        {
            PushRequest pushRequest = new PushRequest
            {
                Xml                   = xml,
                EncodingAESKey        = configData.EncodingAESKey,
                ComponentVerifyTicket = configData.component_verify_ticket_key,
                ValidityTime          = DateTime.Now.AddDays(1)
            };
            XElement   doc            = XElement.Parse(pushRequest.Xml);
            var        encry          = doc.Element("Encrypt").GetString();
            string     encodingAESKey = pushRequest.EncodingAESKey;
            string     appid          = string.Empty;
            var        xmlContent     = Cryptography.AES_decrypt(encry, encodingAESKey, ref appid);
            PushResult pushResult     = TenpayUtil.ConvertToPushRequest(xmlContent);

            if (pushResult.InfoType == "component_verify_ticket")
            {
                // 写入缓存
                //Redis.SetRedis(pushRequest.ComponentVerifyTicket, pushResult.ComponentVerifyTicket, pushRequest.ValidityTime);
                pushResult.IsSucceed = !string.IsNullOrEmpty(pushRequest.ComponentVerifyTicket);
            }
            else
            {
                pushResult.IsSucceed = false;
                pushResult.Message   = $"暂不处理类型{pushResult.InfoType}";
            }
            return(pushResult);
        }
コード例 #15
0
        /// <summary>
        /// - Broadcast to all devices
        /// - Broadcast to one device type
        /// - Send to a targeted device
        /// - Broadcast to all devices with a different alert for each type
        /// </summary>
        /// <param name="alert">The message to be pushed</param>
        /// <param name="deviceTypes">use null for broadcast</param>
        /// <param name="deviceId">use null for broadcast or deviceTypes must contain 1 element that distinguishes this deviceId</param>
        /// <param name="deviceAlerts">per device alert messages and extras</param>
        /// <param name="customAudience">a more specific way to choose the audience for the push. If this is set, deviceId is ignored</param>
        /// <returns></returns>
        public BaseResponse Push(String alert, IList <DeviceType> deviceTypes = null, String deviceId = null, IList <BaseAlert> deviceAlerts = null, Audience customAudience = null)
        {
            var request = new PushRequest(CreatePush(alert, deviceTypes, deviceId, deviceAlerts, customAudience));

            var response = request.ExecuteAsync();

            return(response.Result);
        }
コード例 #16
0
        public void PushMessage(LoggingSessionInfo loggingSessionInfo, dynamic paramter)
        {
            DynamicInterfaceBLL dynamicInterfaceBLL = new DynamicInterfaceBLL(loggingSessionInfo);
            var eventList = dynamicInterfaceBLL.getEventList(new ReqData <getActivityListEntity>()
            {
                common = new ReqCommonData()
                {
                    customerId = loggingSessionInfo.ClientID
                }, special = new getActivityListEntity()
                {
                    type = "new", page = 1, pageSize = 5
                }
            });

            if (eventList.ItemList != null && eventList.ItemList.Length > 0)
            {
                int    channelID = 0;
                string message   = "";

                PrepareMessage(loggingSessionInfo, paramter, out channelID, out message);

                PushUserBasicBLL      pushUserBasicBLL    = new PushUserBasicBLL(loggingSessionInfo);
                PushUserBasicEntity[] pushUserBasicEntity = pushUserBasicBLL.Query(new JIT.Utility.DataAccess.Query.IWhereCondition[] {
                    new JIT.Utility.DataAccess.Query.EqualsCondition()
                    {
                        FieldName = "IsDelete", Value = "0"
                    }
                    , new JIT.Utility.DataAccess.Query.EqualsCondition()
                    {
                        FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                    }
                    , new JIT.Utility.DataAccess.Query.DirectCondition()
                    {
                        Expression = "Plat<>'Android'"
                    }
                }, null);

                string json = "";

                foreach (var item in pushUserBasicEntity)
                {
                    PushRequest pRequest2 = RequestBuilder.CreateIOSUnicastNotificationRequest(1, channelID, item.DeviceToken, message);
                    var         request   = pRequest2.Request.DeserializeJSONTo <JdSoft.Apple.Apns.Notifications.Notification>();
                    request.Payload.CustomItems.Add("EventUrl", new string[] { "http://o2oapi.aladingyidong.com/HtmlApps/html/public/xiehuibao/activity.html?customerId=" + loggingSessionInfo.ClientID + "&type=new" });
                    pRequest2.Request = request.ToJSON();
                    json = "{\"pRequest\":" + pRequest2.ToJSON() + "}";

                    ThreadPool.QueueUserWorkItem(new WaitCallback(SendHttpRequest), json);
                }

                //var response2 = SendHttpRequest(url, method, json);
            }
            else
            {
                SendMarketingMessageBLL.log.WriteEntry("无新活动", System.Diagnostics.EventLogEntryType.Information);
            }
        }
コード例 #17
0
 public static NotificationEntity ToNotificationEntity(this PushRequest request)
 {
     return(new NotificationEntity
     {
         Username = request.Username,
         NoteText = request.Text,
         NoteTitle = request.Title
     });
 }
コード例 #18
0
        public async Task <ActionResult> Put([FromBody] PushRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(new BadRequestResult());
            }
            var result = await _notificationsService.SendNotification(request.ToNotificationEntity());

            return(new JsonResult(result.ToNotificationStatusResponse()));
        }
コード例 #19
0
        public PushRequest PushRequest()
        {
            var data = new PushRequest
            {
                NewObjects = this.newSessionObjectById.Select(v => v.Value.SaveNew()).ToArray(),
                Objects    = this.sessionObjectById.Select(v => v.Value.Save()).Where(v => v != null).ToArray()
            };

            return(data);
        }
コード例 #20
0
        public void AdministratorRemoveMany()
        {
            // Arrange
            var administrator = new People(this.Session).FindBy(M.Person.UserName, Users.AdministratorUserName);

            var c1a = new C1Builder(this.Session)
                      .Build();

            var c1b = new C1Builder(this.Session)
                      .Build();

            var c1c = new C1Builder(this.Session)
                      .Build();

            c1a.AddC1C1One2Many(c1b);
            c1a.AddC1C1One2Many(c1c);

            this.Session.Derive();
            this.Session.Commit();

            var saveRequest = new PushRequest
            {
                Objects = new[] {
                    new PushRequestObject
                    {
                        I     = c1a.Id.ToString(),
                        V     = c1a.Strategy.ObjectVersion.ToString(),
                        Roles = new List <PushRequestRole>
                        {
                            new PushRequestRole
                            {
                                T = "C1C1One2Many",
                                R = new [] { c1c.Id.ToString() }
                            }
                        }
                    }
                }
            };

            var controller = new DatabaseController {
                AllorsSession = this.Session, AllorsUser = administrator
            };

            // Act
            var jsonResult   = (JsonResult)controller.Push(saveRequest);
            var saveResponse = (PushResponse)jsonResult.Data;

            // Assert
            this.Session.Rollback();

            saveResponse.HasErrors.ShouldBeFalse();

            c1a.C1C1One2Manies.ShouldNotBeSameAs(new[] { c1b });
        }
コード例 #21
0
        public async Task <PushResponse> Push(PushRequest pushRequest)
        {
            var uri      = new Uri("Database/Push", UriKind.Relative);
            var response = await this.Client.PostAsJsonAsync(uri, pushRequest);

            response.EnsureSuccessStatusCode();

            var pushResponse = await response.Content.ReadAsAsync <PushResponse>();

            return(pushResponse);
        }
コード例 #22
0
ファイル: Push.cs プロジェクト: develofun/NetCore_Push
        protected Dictionary <string, Alert> CheckAppleRequest(PushRequest request)
        {
            var dicLanguage = JsonConvert.DeserializeObject <Dictionary <string, Alert> >(request.Payload);

            // 푸시 발송 시 영어는 기본
            if (dicLanguage.ContainsKey("English") == false)
            {
                return(null);
            }

            return(dicLanguage);
        }
コード例 #23
0
ファイル: Google.cs プロジェクト: develofun/NetCore_Push
        private Dictionary <string, AndroidNotification> CheckGoogleRequest(PushRequest request)
        {
            var dicLanguage = JsonConvert.DeserializeObject <Dictionary <string, AndroidNotification> >(request.Payload);

            // 푸시 발송 시 영어는 기본
            if (dicLanguage.ContainsKey("English") == false)
            {
                return(null);
            }

            return(dicLanguage);
        }
コード例 #24
0
        public void AdministratorNewSetNewOne()
        {
            // Arrange
            var administrator = new People(this.Session).FindBy(M.Person.UserName, Users.AdministratorUserName);

            this.Session.Commit();

            var saveRequest = new PushRequest
            {
                NewObjects = new[] {
                    new PushRequestNewObject
                    {
                        NI    = "-1",
                        T     = "C1",
                        Roles = new List <PushRequestRole>
                        {
                            new PushRequestRole
                            {
                                T = "C1C1One2One",
                                S = "-1"
                            }
                        }
                    }
                }
            };

            var controller = new DatabaseController {
                AllorsSession = this.Session, AllorsUser = administrator
            };

            // Act
            var jsonResult   = (JsonResult)controller.Push(saveRequest);
            var saveResponse = (PushResponse)jsonResult.Data;

            // Assert
            this.Session.Rollback();

            saveResponse.HasErrors.ShouldBeFalse();

            saveResponse.NewObjects.Length.ShouldEqual(1);

            var newObject = saveResponse.NewObjects[0];
            var newId     = newObject.NI;
            var id        = newObject.I;

            newId.ShouldEqual("-1");
            var c1 = (C1)this.Session.Instantiate(id);

            c1.ShouldNotBeNull();

            c1.C1C1One2One = c1;
        }
コード例 #25
0
        public override async Task <PushResponse> Push(PushRequest request, ServerCallContext context)
        {
            if (await pusher.SendMessage(request.TargetUserId, request))
            {
                return(new PushResponse {
                    Result = PushResponse.Types.ResultType.Ok
                });
            }

            return(new PushResponse {
                Result = PushResponse.Types.ResultType.NotExist
            });
        }
コード例 #26
0
 public HttpRequestMessage Convert(PushRequest request, Dictionary <string, string> headers)
 {
     return(Convert(new Request
     {
         Headers = headers,
         ContentBody = request.ContentBody,
         ContentType = request.ContentType,
         MethodVerb = request.MethodVerb,
         ServiceType = request.ServiceType,
         SoapAction = request.SoapAction,
         Url = request.Url
     }));
 }
コード例 #27
0
            public async Task Create(PushRequest pushRequest)
            {
                var client = await clientFactory();

                var json = JsonConvert.SerializeObject(pushRequest);
                var res  = await client.PostAsync($"api/{userId}/push",
                                                  new StringContent(json, Encoding.UTF8, "application/json"));

                if (!res.IsSuccessStatusCode)
                {
                    throw new DigitPushServiceException($"Push creation request resulted in {res.StatusCode}.");
                }
            }
コード例 #28
0
        public void AdministratorSetUnit()
        {
            // Arrange
            var administrator = new People(this.Session).FindBy(M.Person.UserName, Users.AdministratorUserName);

            var c1a = new C1Builder(this.Session)
                      .WithC1AllorsString("c1")
                      .WithI1AllorsString("i1")
                      .WithI12AllorsString("i12")
                      .Build();

            this.Session.Derive();
            this.Session.Commit();

            var pushRequest = new PushRequest
            {
                Objects = new[] {
                    new PushRequestObject
                    {
                        I     = c1a.Id.ToString(),
                        V     = c1a.Strategy.ObjectVersion.ToString(),
                        Roles = new List <PushRequestRole>
                        {
                            new PushRequestRole
                            {
                                T = "C1AllorsString",
                                S = "new c1"
                            }
                        }
                    }
                }
            };

            var controller = new DatabaseController {
                AllorsSession = this.Session, AllorsUser = administrator
            };

            // Act
            var jsonResult   = (JsonResult)controller.Push(pushRequest);
            var pushResponse = (PushResponse)jsonResult.Data;

            // Assert
            this.Session.Rollback();

            pushResponse.HasErrors.ShouldBeFalse();

            c1a.C1AllorsString.ShouldEqual("new c1");
        }
コード例 #29
0
        protected override bool SendPushRequest()
        {
            var containerLoadInfo = GetToBeRemovedContainerLoadInfo();

            if (containerLoadInfo != null)
            {
                _hostState.CurrentAction = HostCurrentAction.Pushing;
                PushRequest m = new PushRequest(0, this.MachineId, LoadManager.GetPredictedHostLoadInfo(), containerLoadInfo);
                CommunicationModule.SendMessage(m);
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #30
0
        public async Task PushAsync(string collection, string bucket, string @object, string text, string locale = null)
        {
            using (var session = this.CreateSession())
            {
                var request = new PushRequest(text, locale);

                await this.RequestWriter.WriteOkAsync(session
                                                      , "PUSH"
                                                      , collection
                                                      , bucket
                                                      , @object
                                                      , request.Text
                                                      , request.Locale
                                                      );
            }
        }