示例#1
0
        //===============
        // Setup
        //===============
        public static void Refresh()
        {
            var time = FileManager.GetTime();

            Event.Add("On Editor Update", FileManager.Monitor).SetPermanent();
            Event.Add("On Asset Changed", FileManager.Refresh).SetPermanent();
            FileManager.assets.Clear();
            FileManager.assetPaths.Clear();
            FileManager.filesByPath.Clear();
            FileManager.filesByType.Clear();
            FileManager.folders.Clear();
            FileManager.cache.Clear();
            FileManager.path = FileManager.dataPath.GetDirectory();
            var needsScan = !Application.isEditor || (Application.isEditor && !Utility.IsPlaying());

            if (needsScan)
            {
                FileManager.Scan(FileManager.path);
                FileManager.Scan(FileManager.path + "/Temp", true);
                if (FileManager.fullScan)
                {
                    FileManager.Scan(FileManager.dataPath, true);
                }
                FileManager.Save();
            }
            else
            {
                FileManager.Load();
            }
            if (FileManager.clock)
            {
                Debug.Log("[FileManager] : Refresh complete -- " + (FileManager.GetTime() - time) + " seconds.");
            }
        }
示例#2
0
    public Event Create(int typeId, int admId, string name, string description, string address, DateTime date, double longitude, double latitude)
    {
        if (EventType.Where(s => s.Id == typeId).Count() > 0)
        {
            Event newEvent = new Event()
            {
                TypeId          = typeId,
                AdministratorId = admId,
                Name            = name,
                Description     = description,
                Address         = address,
                Date            = date,
                Latitude        = latitude,
                Longitude       = longitude
            };

            newEvent = Event.Add(newEvent);

            SaveChanges();

            UserEvent newUserEvent = new UserEvent
            {
                UserId  = admId,
                EventId = newEvent.Id
            };

            UserEvent.Add(newUserEvent);

            SaveChanges();

            return(newEvent);
        }

        return(null);
    }
示例#3
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = nameof(RegisterDevice))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(AnalyseText)
            }))
            {
                try
                {
                    var json         = req.Content.ReadAsStringAsync().Result;
                    var registration = JsonConvert.DeserializeObject <DeviceRegistration>(json);

                    var instance = registration.AppMode == AppMode.Dev ? PushService.Dev : PushService.Production;
                    var result   = instance.Register(registration).Result;

                    var data = new Event("Registering device");
                    data.Add("mode", registration.AppMode).Add("OS", registration.Platform).Add("handle", registration.Handle).Add("tags", string.Join(", ", registration.Tags).Trim());
                    await EventHubService.Instance.SendEvent(data);

                    return(req.CreateResponse(HttpStatusCode.OK, result));
                }
                catch (Exception e)
                {
                    analytic.TrackException(e.GetBaseException());
                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e.GetBaseException()));
                }
            }
        }
 /// <summary>
 /// Add a field to the event
 /// </summary>
 /// <param name="myEvent">Event to add the field to</param>
 /// <param name="key">Key of the field</param>
 /// <param name="value">String value of the field</param>
 private static void AddToEvent(
     Event myEvent,
     string key,
     string value)
 {
     myEvent.Add(key, new Event.FieldValue(value));
 }
示例#5
0
 public void PopularStat_ReturnElements_SortedByOccurences_WhenDeleteElements()
 {
     HandleEvents(stat,
                  Event <string> .Add("A"), Event <string> .Add("B"), Event <string> .Add("B"), Event <string> .Add("A"), Event <string> .Add("A"),
                  Event <string> .Delete("A"), Event <string> .Delete("A"));
     stat.Value.ShouldBeEquivalentTo(new[] { "B", "A" }, options => options.WithStrictOrdering());
 }
示例#6
0
 public void PopularStat_WorksWithDeleting()
 {
     HandleEvents(stat,
                  Event <string> .Add("A"), Event <string> .Add("B"), Event <string> .Add("C"), Event <string> .Add("D"),
                  Event <string> .Delete("B"));
     stat.Value.ShouldBeEquivalentTo(new[] { "A", "D", "C" });
 }
示例#7
0
 public static void Setup()
 {
     Event.Add("On Late Update", (Method)Utility.CheckLoaded);
     Event.Add("On Late Update", (Method)Utility.CheckDelayed);
                 #if UNITY_EDITOR
     Event.Register("On Global Event");
     Event.Register("On Editor Update");
     Event.Register("On Prefab Changed");
     Event.Register("On Lightmap Baked");
     Event.Register("On Windows Reordered");
     Event.Register("On Hierarchy Changed");
     Event.Register("On Asset Changed");
     Event.Register("On Asset Saving");
     Event.Register("On Asset Creating");
     Event.Register("On Asset Deleting");
     Event.Register("On Asset Moving");
     Event.Register("On Scene Loaded");
     Event.Register("On Editor Scene Loaded");
     Event.Register("On Mode Changed");
     Event.Register("On Enter Play");
     Event.Register("On Exit Play");
     Event.Register("On Undo Flushing");
     Event.Register("On Undo");
     Event.Register("On Redo");
                 #if UNITY_5
     Camera.onPostRender    += (Camera camera) => Event.Call("On Camera Post Render", camera);
     Camera.onPreRender     += (Camera camera) => Event.Call("On Camera Pre Render", camera);
     Camera.onPreCull       += (Camera camera) => Event.Call("On Camera Pre Cull", camera);
     Lightmapping.completed += () => Event.Call("On Lightmap Baked");
                 #endif
     Undo.willFlushUndoRecord               += () => Event.Call("On Undo Flushing");
     Undo.undoRedoPerformed                 += () => Event.Call("On Undo");
     Undo.undoRedoPerformed                 += () => Event.Call("On Redo");
     PrefabUtility.prefabInstanceUpdated    += (GameObject target) => Event.Call("On Prefab Changed", target);
     EditorApplication.projectWindowChanged += () => Event.Call("On Project Changed");
     EditorApplication.playmodeStateChanged += () => Event.Call("On Mode Changed");
     EditorApplication.playmodeStateChanged += () => {
         bool changing = EditorApplication.isPlayingOrWillChangePlaymode;
         bool playing  = Application.isPlaying;
         if (changing && !playing)
         {
             Event.Call("On Enter Play");
         }
         if (!changing && playing)
         {
             Event.Call("On Exit Play");
         }
     };
     EditorApplication.hierarchyWindowChanged += () => Event.DelayCall("On Hierarchy Changed", 0.25f);
     EditorApplication.update += () => Event.Call("On Editor Update");
     EditorApplication.update += () => Utility.CheckLoaded(true);
     EditorApplication.update += () => Utility.CheckDelayed(true);
     CallbackFunction windowEvent = () => Event.Call("On Window Reordered");
     CallbackFunction globalEvent = () => Event.Call("On Global Event");
     var windowsReordered         = typeof(EditorApplication).GetVariable <CallbackFunction>("windowsReordered");
     typeof(EditorApplication).SetVariable("windowsReordered", windowsReordered + windowEvent);
     var globalEventHandler = typeof(EditorApplication).GetVariable <CallbackFunction>("globalEventHandler");
     typeof(EditorApplication).SetVariable("globalEventHandler", globalEventHandler + globalEvent);
                 #endif
 }
        Event BuildEvent(OleDbConnection connection, OleDbDataReader reader, FixtureProfiles fixtureProfiles, TimeSpan interval)
        {
            int i       = 0;
            int idEvent = reader.GetInt32(i++);

            FixtureClass fixtureClass;
            Boolean      firstCycle = false;

            if (reader.IsDBNull(i))
            {
                fixtureClass = FixtureClasses.Unclassified;
            }
            else
            {
                fixtureClass = fixtureProfiles[reader.GetString(i)].FixtureClass;
                firstCycle   = reader.GetString(i).Contains("@");
            }
            i++;

            Event @event = new Event(fixtureClass);

            @event.ManuallyClassified = reader.GetBoolean(i++);
            @event.Channel            = (Channel)reader.GetInt16(i++);
            @event.FirstCycle         = firstCycle;

            using (OleDbCommand commandFlows = new OleDbCommand(BuildLoadFlowsCommand(idEvent), connection)) {
                using (OleDbDataReader readerFlows = commandFlows.ExecuteReader()) {
                    while (readerFlows.Read())
                    {
                        @event.Add(BuildFlow(readerFlows, interval));
                    }
                }
            }
            return(@event);
        }
示例#9
0
        public void AddNull()
        {
            var ev        = new Event(GetLibHoney());
            var excThrown = false;

            try { ev.Add(null); } catch (ArgumentNullException) { excThrown = true; }
            Assert.True(excThrown);
        }
示例#10
0
    private int Event_Calculate(object obj1, object obj2)
    {
        int x = 0;
        int y = 0;

        int.TryParse(obj1.ToString(), out x);
        int.TryParse(obj2.ToString(), out y);
        return(Event.Add(x, y));
    }
示例#11
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = nameof(AnalyseImage))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(AnalyseImage)
            }))
            {
                try
                {
                    var allTags   = new List <string>();
                    var json      = req.Content.ReadAsStringAsync().Result;
                    var photoUrls = JsonConvert.DeserializeObject <string[]>(json);

                    foreach (var url in photoUrls)
                    {
                        var result = VisionService.Instance.GetImageDescriptionAsync(url).Result;
                        allTags.AddRange(result.Tags.Select(t => t.Name).ToArray());
                        allTags.AddRange(result.Description.Tags);
                    }

                    var attributes = new Dictionary <string, int>();
                    foreach (var tag in allTags)
                    {
                        if (tag.Equals("indoor", StringComparison.InvariantCultureIgnoreCase) ||
                            tag.Equals("outdoor", StringComparison.InvariantCultureIgnoreCase))
                        {
                            continue;
                        }

                        if (attributes.ContainsKey(tag))
                        {
                            attributes[tag]++;
                        }
                        else
                        {
                            attributes.Add(tag, 1);
                        }
                    }

                    var topAttributes = attributes.OrderByDescending(k => k.Value);
                    var toReturn      = topAttributes.Select(k => k.Key).Take(10).ToArray();

                    var data = new Event("Generic image analyzed for tags");
                    data.Add("image", photoUrls.First()).Add("tags", string.Join(", ", toReturn).Trim());
                    await EventHubService.Instance.SendEvent(data);

                    return(req.CreateResponse(HttpStatusCode.OK, toReturn));
                }
                catch (Exception e)
                {
                    analytic.TrackException(e);

                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e));
                }
            }
        }
示例#12
0
 public void PopularStat_ReturnNothing_WhenAllItemsDeleted()
 {
     HandleEvents(stat,
                  Event <string> .Add("A"), Event <string> .Add("B"),
                  Event <string> .Delete("A"),
                  Event <string> .Add("C"),
                  Event <string> .Delete("B"), Event <string> .Delete("C"));
     stat.Value.Should().BeEquivalentTo();
 }
示例#13
0
 public void PopularStat_ReturnNoMoreThan_MaxSize_Items()
 {
     HandleEvents(stat, Event <string> .Add("A"), Event <string> .Add("B"), Event <string> .Add("C"), Event <string> .Add("D"));
     stat.Value.OrderBy(s => s).ToList()
     .Should().Match <List <string> >(seq =>
                                      seq.SequenceEqual(new[] { "A", "B", "C" }) ||
                                      seq.SequenceEqual(new[] { "A", "B", "D" }) ||
                                      seq.SequenceEqual(new[] { "B", "C", "D" })
                                      );
 }
示例#14
0
        public ListenerToken AddChangeListener([CanBeNull] TaskScheduler scheduler,
                                               EventHandler <ReplicatorStatusChangedEventArgs> handler)
        {
            CBDebug.MustNotBeNull(Log.To.Sync, Tag, nameof(handler), handler);

            var cbHandler = new CouchbaseEventHandler <ReplicatorStatusChangedEventArgs>(handler, scheduler);

            _statusChanged.Add(cbHandler);
            return(new ListenerToken(cbHandler, "repl"));
        }
示例#15
0
        /// <summary>
        /// Adds a document ended listener on this replication object (similar to a C# event, but
        /// with the ability to specify a <see cref="TaskScheduler"/> to schedule the
        /// handler to run on)
        /// </summary>
        /// <param name="scheduler">The <see cref="TaskScheduler"/> to run the <c>handler</c> on
        /// (<c>null</c> for default)</param>
        /// <param name="handler">The logic to run during the callback</param>
        /// <returns>A token to remove the handler later</returns>
        public ListenerToken AddDocumentReplicationListener([CanBeNull] TaskScheduler scheduler,
                                                            [NotNull] EventHandler <DocumentReplicationEventArgs> handler)
        {
            CBDebug.MustNotBeNull(WriteLog.To.Sync, Tag, nameof(handler), handler);
            Config.Options.ProgressLevel = ReplicatorProgressLevel.PerDocument;
            var cbHandler = new CouchbaseEventHandler <DocumentReplicationEventArgs>(handler, scheduler);

            _documentEndedUpdate.Add(cbHandler);
            return(new ListenerToken(cbHandler, "repl"));
        }
示例#16
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = nameof(AnalyseText))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(AnalyseText)
            }))
            {
                try
                {
                    var text = req.GetQueryNameValuePairs().FirstOrDefault(kvp => kvp.Key == "text").Value;

                    using (var client = new HttpClient())
                    {
                        var queryString = HttpUtility.ParseQueryString(string.Empty);

                        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", ConfigManager.Instance.ContentModeratorKey);

                        queryString["autocorrect"] = "{boolean}";
                        queryString["PII"]         = "{boolean}";
                        queryString["listId"]      = "{string}";

                        var uri = ConfigManager.Instance.ContentModeratorUrl + queryString;
                        HttpResponseMessage response;
                        byte[] byteData = Encoding.UTF8.GetBytes(text);

                        using (var content = new ByteArrayContent(byteData))
                        {
                            content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
                            response = client.PostAsync(uri, content).Result;

                            var json           = response.Content.ReadAsStringAsync().Result;
                            var textModeration = JsonConvert.DeserializeObject <TextModeration>(json);

                            var terms = textModeration.Terms == null ? "NONE" : string.Join(", ", textModeration.Terms.Select(t => t.TermString).ToArray()).Trim();
                            var data  = new Event("Analyzing text for appropriate content");
                            data.Add("text", text).Add("terms", terms);
                            await EventHubService.Instance.SendEvent(data);

                            return(req.CreateResponse(HttpStatusCode.OK, textModeration.Terms == null));
                        }
                    }
                }
                catch (Exception e)
                {
                    analytic.TrackException(e);

                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e));
                }
            }
        }
示例#17
0
 static Locate()
 {
     if (!Application.isPlaying)
     {
         //Event.Add("On Application Quit",Locate.SetDirty);
         Event.Add("On Level Was Loaded", Locate.SetDirty).SetPermanent();
         Event.Add("On Hierarchy Changed", Locate.SetDirty).SetPermanent();
         Event.Add("On Asset Changed", () => Locate.assets.Clear()).SetPermanent();
     }
     Event.Register("On Components Changed");
     if (!Locate.setup)
     {
         Locate.SetDirty();
     }
 }
示例#18
0
        public ListenerToken AddChangeListener([CanBeNull] TaskScheduler scheduler,
                                               EventHandler <DatabaseChangedEventArgs> handler)
        {
            CBDebug.MustNotBeNull(Log.To.Database, Tag, nameof(handler), handler);

            return(ThreadSafety.DoLocked(() =>
            {
                CheckOpen();

                var cbHandler = new CouchbaseEventHandler <DatabaseChangedEventArgs>(handler, scheduler);
                _databaseChanged.Add(cbHandler);

                return new ListenerToken(cbHandler, "db");
            }));
        }
示例#19
0
 //Creates an EventHandler on runtime and registers that handler to the Event specified
 public void BindEvent(DependencyObject owner, string eventName)
 {
     EventName.Add(eventName);
     Owner = owner;
     Event.Add(Owner.GetType().GetEvent(eventName, BindingFlags.Public | BindingFlags.Instance));
     if (Event == null)
     {
         return;
     }
     EventHandler.Add(EventHandlerGenerator.CreateDelegate(
                          Event[Event.Count - 1].EventHandlerType,
                          typeof(CommandBehaviorBinding).GetMethod("Execute",
                                                                   BindingFlags.Public | BindingFlags.Instance),
                          this, eventName));
     Event[Event.Count - 1].AddEventHandler(Owner, EventHandler[EventHandler.Count - 1]);
 }
示例#20
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = nameof(GetGameByEntryCode))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(GetGameByEntryCode)
            }))
            {
                try
                {
                    var kvps      = req.GetQueryNameValuePairs();
                    var email     = kvps.FirstOrDefault(kvp => kvp.Key == "email").Value;
                    var entryCode = kvps.FirstOrDefault(kvp => kvp.Key == "entryCode").Value;

                    var existingGame = CosmosDataService.Instance.GetOngoingGame(email);

                    if (existingGame != null)
                    {
                        var data = new Event("Attempt to lookup game by entry code failed due to ongoing game");
                        data.Add("code", entryCode).Add("email", email);
                        await EventHubService.Instance.SendEvent(data);

                        return(req.CreateErrorResponse(HttpStatusCode.Conflict, "User already has an ongoing game"));
                    }

                    var openGame = CosmosDataService.Instance.GetGameByEntryCode(entryCode);
                    var outcome  = openGame == null ? "failed" : "succeeded";

                    {
                        var data = new Event($"Attempt to lookup game by entry code {outcome}");
                        data.Add("code", entryCode).Add("email", email);
                        await EventHubService.Instance.SendEvent(data, openGame);
                    }

                    return(req.CreateResponse(HttpStatusCode.OK, openGame));
                }
                catch (Exception e)
                {
                    // track exceptions that occur
                    analytic.TrackException(e);
                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e.Message, e));
                }
            }
        }
示例#21
0
        async public Task <bool> SendSilentNotification(string[] tags, Dictionary <string, string> payload = null)
        {
            var notification = new Dictionary <string, string> {
                { "message", "" }
            };
            var json = payload != null?JsonConvert.SerializeObject(payload) : "";

            notification.Add("title", "");
            notification.Add("badge", "0");
            notification.Add("payload", json);

            var data = new Event("Silent push notification sent");

            data.Add("tags", string.Join(", ", tags).Trim());
            await EventHubService.Instance.SendEvent(data);

            var outcome = await _hub.SendTemplateNotificationAsync(notification, tags);

            return(true);
        }
示例#22
0
        static void Main(string[] args)
        {
            Action <MockEventArgs> handler = new Action <MockEventArgs>(OnEventFired);
            Event <MockEventArgs>  ev      = new Event <MockEventArgs>();

            ev.Add(handler);

            GC.Collect();
            WeakReference weakRef   = new WeakReference(new Object());
            long          memBefore = GC.GetTotalMemory(true);

            for (int i = 0; i < 1000000; i++)
            {
                ev.Notify(new MockEventArgs());
            }

            long totalAllocated = GC.GetTotalMemory(true) - memBefore;

            Console.WriteLine("Total Allocated: " + totalAllocated);
        }
示例#23
0
        private async void EventExtraTime_Clicked(object sender, EventArgs e)
        {
            var response = await DisplayAlert("Warning", "Are you sure?", "Yes", "Cancel");

            if (response)
            {
                try
                {
                    Task <string> resultTask = Event.Add(3, App.Game.Game.Id, StopWatch.ShowTime());
                    await         resultTask;

                    App.matchPart = "Extra Time";

                    await Navigation.PushAsync(new MatchPage(App.Game));
                }
                catch (Exception)
                {
                    await DisplayAlert("Error", "Communication error.", "OK");
                }
            }
        }
示例#24
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = nameof(GetOngoingGame))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(GetOngoingGame)
            }))
            {
                try
                {
                    var email = req.GetQueryNameValuePairs().FirstOrDefault(kvp => kvp.Key == "email").Value;

                    if (string.IsNullOrWhiteSpace(email))
                    {
                        return(req.CreateErrorResponse(HttpStatusCode.BadRequest, "email address required"));
                    }

                    var json    = CosmosDataService.Instance.GetOngoingGame(email);
                    var game    = json == null ? null : JsonConvert.DeserializeObject <Game>(json.ToString()) as Game;
                    var outcome = json == null ? "no games found" : "a game found";

                    var data = new Event($"Looking for an ongoing game resulted in {outcome}");
                    data.Add("email", email);

                    await EventHubService.Instance.SendEvent(data, game);

                    return(req.CreateResponse(HttpStatusCode.OK, game));
                }
                catch (Exception e)
                {
                    // track exceptions that occur
                    analytic.TrackException(e.GetBaseException());
                    var msg = e.GetBaseException().Message;
                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e.GetBaseException().Message));
                }
            }
        }
        private async void Button_Clicked(object sender, EventArgs e)
        {
            var response = await DisplayAlert("Warning", "Are you sure?", "Yes", "Cancel");

            if (response)
            {
                try
                {
                    if (string.IsNullOrEmpty(EnEventNote.Text))
                    {
                        EnEventNote.Text = "event";
                    }

                    Task <string> resultTask = Event.Add(App.eventType, App.Game.Game.Id, App.teamId, App.memberId, EnEventNote.Text.Trim(), StopWatch.ShowTime());
                    string        result     = await resultTask;

                    await DisplayAlert("Result", result, "OK");

                    if (App.eventType == 5 && App.idScore == 1)
                    {
                        App.homeScore          += 1;
                        App.Game.Game.HomeScore = App.homeScore;
                    }
                    else if (App.eventType == 5 && App.idScore != 1)
                    {
                        App.visitorScore          += 1;
                        App.Game.Game.VisitorScore = App.visitorScore;
                    }

                    await Navigation.PushAsync(new MatchPage(App.Game));
                }
                catch (Exception)
                {
                    await DisplayAlert("Error", "Communication error.", "OK");
                }
            }
        }
示例#26
0
                public async Task AddModule(string what, string how)
                {
                    try
                    {
                        if (!Privileg.CheckById(Context.User.Id, Privileg.owner))
                        {
                            await Context.Channel.SendMessageAsync(embed : Classes.Embed.New(Context.Message.Author, Field.CreateFieldBuilder("warning", "You are not my god!"), Colors.warning));

                            Log.Warning($"command - data event add - user:{Context.User.Id} channel:{Context.Channel.Id} privileg to low");
                            return;
                        }

                        Log.Information($"command - data event add - start user:{Context.User.Id} channel:{Context.Channel.Id} command:{Context.Message.Content}");

                        try
                        {
                            await Context.Channel.SendMessageAsync(embed : Classes.Embed.New(Context.Message.Author, Field.CreateFieldBuilder("event", $"rows affected: {Event.Add(new Event(what, how))}"), Colors.information));
                        }
                        catch (Exception e)
                        {
                            await Context.Channel.SendMessageAsync(embed : Classes.Embed.New(Context.Message.Author, Field.CreateFieldBuilder("error", e.Message), Colors.error));

                            throw e;
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error($"command - data event add - user:{Context.User.Id} channel:{Context.Channel.Id} error:{ex.Message}");
                    }
                }
        /// <summary>
        /// Returns an enumerator over a set of the events 
        /// in the event stream, and gets ready for the next set.
        /// </summary>
        /// <remarks>
        /// <para>
        /// When using 'search/jobs/export endpoint', search results
        /// will be streamed back as they become available. It is possible
        /// for one or more previews to be received before the final one.
        /// The enumerator returned will be over a single preview or 
        /// the final results. Each time this method is called, 
        /// the next preview or the final results are enumerated if they are
        /// available; otherwise, an exception is thrown.
        /// </para>
        /// <para>
        /// After all events in the set is enumerated, the metadata of the 
        /// next set (if available) is read, with 
        /// <see cref="ResultsReader.IsPreview"/> 
        /// and <see cref="ResultsReader.Fields"/> being set accordingly.
        /// </para>
        /// </remarks>
        /// <returns>A enumerator.</returns>
        internal override IEnumerable<Event> GetEventsFromCurrentSet()
        {
            while (true)
            {
                if (!this.XmlReader.ReadToNextSibling("result"))
                {
                    yield break;
                }

                var result = new Event();

                this.ReadEachDescendant(
                    "field", 
                    () => 
                    {
                        var key = this.XmlReader["k"];

                        if (key == null)
                        {
                            throw new XmlException(
                                "'field' attribute 'k' not found");
                        }

                        var values = new List<string>();

                        var xmlDepthField = this.XmlReader.Depth;

                        while (this.XmlReader.Read())
                        {
                            if (this.XmlReader.Depth == xmlDepthField)
                            {
                                break;
                            }

                            Debug.Assert(
                                XmlReader.Depth > xmlDepthField,
                                "The loop should have exited earlier.");

                            if (this.XmlReader.IsStartElement("value"))
                            {
                                if (this.XmlReader.ReadToDescendant("text"))
                                {
                                    values.Add(
                                        this.XmlReader.ReadElementContentAsString());
                                }
                            }
                            else if (this.XmlReader.IsStartElement("v"))
                            {
                                result.SegmentedRaw = this.XmlReader.ReadOuterXml();
                                var value = ReadTextContentFromXml(
                                    result.SegmentedRaw);                    
                                values.Add(value);
                            }
                        }

                        result.Add(key, new Event.FieldValue(values.ToArray()));
                    });

                yield return result;
            }
        }
示例#28
0
 /// <summary>
 ///     Adds callback.
 /// </summary>
 /// <param name="callback"> The callback to remove. </param>
 public void Add(DataReceivedHandler callback)
 {
     _dataReceived.Add(callback);
 }
示例#29
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = nameof(AnalyseCustomImage))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(AnalyseCustomImage)
            }))
            {
                try
                {
                    var allTags    = new List <string>();
                    var j          = JObject.Parse(req.Content.ReadAsStringAsync().Result);
                    var imageUrl   = (string)j["imageUrl"];
                    var treasureId = (string)j["treasureId"];
                    var gameId     = (string)j["gameId"];

                    var game = CosmosDataService.Instance.GetItemAsync <Game>(gameId).Result;
                    if (game == null)
                    {
                        return(req.CreateErrorResponse(HttpStatusCode.NotFound, "Game not found"));
                    }

                    var treasure = game.Treasures.SingleOrDefault(t => t.Id == treasureId);
                    if (treasure == null)
                    {
                        var data = new Event("Custom image analyzed for treasure failed");
                        data.Add("hint", treasure.Hint).Add("source", treasure.ImageSource).Add("sent", imageUrl);
                        await EventHubService.Instance.SendEvent(data);

                        return(req.CreateErrorResponse(HttpStatusCode.NotFound, "Treasure not found"));
                    }

                    var endpoint = new PredictionEndpoint {
                        ApiKey = ConfigManager.Instance.CustomVisionPredictionKey
                    };

                    //This is where we run our prediction against the default iteration
                    var result = endpoint.PredictImageUrl(new Guid(game.CustomVisionProjectId), new ImageUrl(imageUrl));


                    ImageTagPredictionModel goodTag = null;
                    // Loop over each prediction and write out the results

                    foreach (var prediction in result.Predictions)
                    {
                        if (treasure.Attributes.Any(a => a.Name.Equals(prediction.Tag, StringComparison.InvariantCultureIgnoreCase)))
                        {
                            if (prediction.Probability >= ConfigManager.Instance.CustomVisionMinimumPredictionProbability)
                            {
                                goodTag = prediction;
                                break;
                            }
                        }
                    }

                    {
                        var outcome = goodTag == null ? "failed" : "succeeded";
                        var data    = new Event($"Custom image analyzed for treasure {outcome}");

                        if (goodTag != null)
                        {
                            data.Add("tags", goodTag.Tag).Add("probability", goodTag.Probability.ToString("P"));
                        }

                        data.Add("hint", treasure.Hint).Add("source", treasure.ImageSource).Add("sent", imageUrl);

                        await EventHubService.Instance.SendEvent(data);
                    }

                    return(req.CreateResponse(HttpStatusCode.OK, goodTag != null));
                }
                catch (Exception e)
                {
                    analytic.TrackException(e);

                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, e));
                }
            }
        }
示例#30
0
 /// <summary>
 ///     Adds callback.
 /// </summary>
 /// <param name="callback"> The callback to remove. </param>
 public void Add(ClientDataReceivedHandler <TServerClient> callback)
 {
     _dataReceived.Add(callback);
 }
示例#31
0
        public void ParseResults(byte[] response)
        {
            string responseFromServer = "";
            responseFromServer = Encoding.ASCII.GetString(response);

            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(responseFromServer);
            HtmlNode node = doc.DocumentNode;

            events = new List<Event>();
            foreach (HtmlNode row in node.GetNodesByClass("tr"))
            {
                HtmlNode temp = row.FirstChildWithClass("td");
                if (temp != null)
                {
                    if (EventTypes.Contains(temp.InnerText))
                    {
                        Event e = new Event();
                        List<HtmlNode> descriptions = row.GetNodesByClass("td").ToList();
                        HtmlNode linker = descriptions[1].FirstChildWithClass("a");
                        string link = linker.Attributes["href"].Value;

                        e.Add("Type", descriptions[0].InnerText);
                        e.Add("Name", linker.InnerText);
                        e.Add("Link", link);
                        e.Add("Event Venue", descriptions[2].InnerText);
                        e.Add("Location", descriptions[3].InnerText);
                        e.Add("Date", descriptions[4].InnerText.Trim());
                        events.Add(e);
                    }
                }
            }
        }
示例#32
0
        async public static Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = nameof(TrainClassifier))]
                                                           HttpRequestMessage req, TraceWriter log)
        {
            using (var analytic = new AnalyticService(new RequestTelemetry
            {
                Name = nameof(TrainClassifier)
            }))
            {
                try
                {
                    var allTags   = new List <string>();
                    var json      = req.Content.ReadAsStringAsync().Result;
                    var j         = JObject.Parse(json);
                    var gameId    = (string)j["gameId"];
                    var imageUrls = j["imageUrls"].ToObject <List <string> >();
                    var tags      = (JArray)j["tags"];

                    var         game = CosmosDataService.Instance.GetItemAsync <Game>(gameId).Result;
                    TrainingApi api  = new TrainingApi {
                        ApiKey = ConfigManager.Instance.CustomVisionTrainingKey
                    };
                    Project project = null;

                    //Get the existing project for this game if there is one
                    if (!string.IsNullOrEmpty(game.CustomVisionProjectId))
                    {
                        try     { project = api.GetProject(Guid.Parse(game.CustomVisionProjectId)); }
                        catch (Exception) { }
                    }

                    //Otherwise create a new project and associate it with the game
                    if (project == null)
                    {
                        project = api.CreateProject($"{game.Name}_{DateTime.Now.ToString()}_{Guid.NewGuid().ToString()}", game.Id);
                        game.CustomVisionProjectId = project.Id.ToString();
                        CosmosDataService.Instance.UpdateItemAsync <Game>(game).Wait();
                    }

                    var tagItems = tags.Select(t => api.CreateTag(project.Id, t.ToString().Trim()));
                    var entries  = imageUrls.Select(u => new ImageUrlCreateEntry(u)).ToList();

                    //Batch the image urls that were sent up from Azure Storage (blob)
                    var batch   = new ImageUrlCreateBatch(entries, tagItems.Select(t => t.Id).ToList());
                    var summary = api.CreateImagesFromUrls(project.Id, batch);

                    //if(!summary.IsBatchSuccessful)
                    //	return req.CreateErrorResponse(HttpStatusCode.BadRequest, "Image batch was unsuccessful");

                    //Traing the classifier and generate a new iteration, that we'll set as the default
                    var iteration = api.TrainProject(project.Id);

                    while (iteration.Status == "Training")
                    {
                        Thread.Sleep(1000);
                        iteration = api.GetIteration(project.Id, iteration.Id);
                    }

                    iteration.IsDefault = true;
                    api.UpdateIteration(project.Id, iteration.Id, iteration);

                    var data = new Event("Training classifier");
                    data.Add("project", project.Name);
                    data.Add("iteration", iteration.Id);
                    await EventHubService.Instance.SendEvent(data);

                    return(req.CreateResponse(HttpStatusCode.OK, true));
                }
                catch (Exception e)
                {
                    analytic.TrackException(e);

                    var baseException      = e.GetBaseException();
                    var operationException = baseException as HttpOperationException;
                    var reason             = baseException.Message;

                    if (operationException != null)
                    {
                        var jobj = JObject.Parse(operationException.Response.Content);
                        var code = jobj.GetValue("Code");

                        if (code != null && !string.IsNullOrWhiteSpace(code.ToString()))
                        {
                            reason = code.ToString();
                        }
                    }

                    return(req.CreateErrorResponse(HttpStatusCode.BadRequest, reason));
                }
            }
        }