static void Main(string[] args) { if (args.Length <= 0) { return; } var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../../../info.xml"); // ASP.NETが保存しているファイルを見ます var webPushClient = new WebPushClient(); var vapidDetails = new VapidDetails("mailto:[email protected]", pushInformation.VapidPublic, pushInformation.VapipPrivate); var targetList = pushInformation.Targets.ToArray(); foreach (var target in targetList) { try { var subscription = new PushSubscription(target.EndPoint, target.PublicKey, target.AuthSecret); webPushClient.SendNotification(subscription, @"test application", vapidDetails); } catch (Exception exp) { if (exp.Message == "Subscription no longer valid") // 購読者がいなくなるとこんな感じの例外を吐くので送信先から消しておこう { pushInformation.Targets.Remove(target); } } } PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../../../info.xml"); Console.ReadKey(); }
public void Post(NotificationTarget target) { var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../info.xml"); // 保存先はてきとうに if (pushInformation == null) { return; } pushInformation.Targets.Remove(pushInformation.Targets.FirstOrDefault(t => t.EndPoint == target.EndPoint)); pushInformation.Targets.Add(target); PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../info.xml"); }
public ActionResult Index() { var model = new HomeModel(); var pushInformation = PushInformation.Load(AppDomain.CurrentDomain.BaseDirectory + "../info.xml"); // 保存先はてきとうに if (pushInformation == null) // VAPIDで使用する公開鍵を作成 { pushInformation = new PushInformation(); var vapidKeys = VapidHelper.GenerateVapidKeys(); pushInformation.VapidPublic = vapidKeys.PublicKey; pushInformation.VapipPrivate = vapidKeys.PrivateKey; PushInformation.Save(pushInformation, AppDomain.CurrentDomain.BaseDirectory + "../info.xml"); // 作ったら保存しとく } model.VapidPublic = pushInformation.VapidPublic; model.Data = Request.QueryString.Get("data"); return(View(model)); }
public void drawSystem() { //SETS TRANSFORM TO BOTTOM CENTRE OF SCREEN transform.position = new Vector2(0, -9.5f); //RESETS ROTATION transform.rotation = Quaternion.Euler(0, 0, 0); foreach (char c in sentences[generationStep]) { //TURTLE GRAPHICS INSTRUCTIONS if (c == 'F') { //SAVES INITIAL POSITION IN LOCAL VARIABLE Vector3 startingPosition = transform.position; //MOVES TRANSFORM TO NEW POINT transform.Translate(Vector3.up * Rules.instance.activeLineLength); //CREATES LINE GameObject line = Instantiate(drawnLine); //SETS LINE'S STARTING POINT AS SAVED VARIABLE AND END POINT AS CURRENT POSITION line.GetComponent <LineRenderer>().SetPosition(0, startingPosition); line.GetComponent <LineRenderer>().SetPosition(1, transform.position); //CALCULATES LEAF ANGLE BY FINDING THE VECTOR BETWEEN THESE TWO POINTS leafAngle = returnAngle(startingPosition, transform.position); } else if (c == 'X') { } else if (c == '+') { float a = angle + Random.Range(-Rules.instance.activeRandomAngle, Rules.instance.activeRandomAngle); //TURNS TRANSFORM transform.Rotate(Vector3.forward * a); } else if (c == '-') { float a = angle + Random.Range(-Rules.instance.activeRandomAngle, Rules.instance.activeRandomAngle); //TURNS TRANSFORM transform.Rotate(Vector3.back * a); } else if (c == '[') { //SAVES POSITION TO STACK pushStack.Push(new PushInformation() { pushPosition = transform.position, pushRotation = transform.rotation }); } else if (c == ']') { //CREATES A NEW LEAF GameObject newLeaf = Instantiate(leaf, transform.position, Quaternion.Euler(0, 0, leafAngle)); //SETS RANDOM LEAF SIZE float size = Random.Range(0.05f, 0.15f); newLeaf.transform.localScale = new Vector3(size, size, 1); //RETURNS SAVED STACK INFORMATION AND MOVES/ROTATES TRANSFORM PushInformation returnPosition = pushStack.Pop(); transform.position = returnPosition.pushPosition; transform.rotation = returnPosition.pushRotation; } } }