예제 #1
0
    protected void refreshRoomList()
    {
        var liststore = new ListStore(typeof(Gdk.Pixbuf), typeof(string));

        foreach (var channel in this.rooms.Values)
        {
            var label = getRoomLabel(channel);
            System.Drawing.Image avatar = null;

            if (channel.Members.Count == 2)
            {
                var other = getOtherRoomMember(channel);
                if (this.avatars.ContainsKey(other))
                {
                    avatar = this.avatars [other];
                }
            }

            var icon = AvatarGenerator.createRoomAvatar(label, channel.Encryption != null, avatar);
            liststore.AppendValues(icon, label);

            channel.OnMessage -= onRoomMessage;
            channel.OnMessage += onRoomMessage;
        }

        channelList.Model = liststore;
    }
예제 #2
0
        public void ShouldGenerateAvatarWithSpacedColors()
        {
            var ag = new AvatarGenerator(
                new SpacedColorGenerator {
                Accuracy = 50
            }
                )
            {
                ImageFormat = ImageFormat.Png
            };

            var imageList = new List <string>();

            for (var i = 0; i < 25; i++)
            {
                var stream     = ag.Generate("Hello", "World");
                var base64Data = Convert.ToBase64String(stream.ToArray());

                var imgTag = $"<img src='data:image/png;base64,{base64Data}' />";
                imageList.Add(imgTag);
            }

            var images = string.Join("<br/>", imageList);

            Assert.IsFalse(string.IsNullOrEmpty(images));
        }
예제 #3
0
        public ActionResult LoginByFacebook(UserLoginByFacebookDTO userLoginDTO)
        {
            if (IsUserLogIn)
            {
                return(RedirectToAction("Index", "Desktop"));
            }
            if (!userLoginDTO.Validate())
            {
                return(RedirectToAction("Registration", "Errors"));
            }
            // get user
            var user = _DL.User.Get.ByExternalID(userLoginDTO.ExternalID, EN_RegistrationSource.Facebook);

            // login
            if (user != null)
            {
                CurrentUser = user;
                return(RedirectToAction("Index", "Desktop"));
            }
            // register
            else
            {
                VM_UserRegister regUser = userLoginDTO.TO_VM();
                regUser.InvitedBy        = _DL.User.Get.SystemUser();
                regUser.UserLoginDetails = new Security.Salted_Hash();
                var userNew = _DL.User.Account.Register(regUser);
                CurrentUser = _DL.User.Get.ByID(userNew.UserID);
                // Get avatars
                System.Net.WebClient client = new System.Net.WebClient();
                Stream avatatLarge          = client.OpenRead(userLoginDTO.PictureLarge);
                // replace avatars
                AvatarGenerator.Generate(avatatLarge, CurrentUser.UserID);
                return(RedirectToAction("Index", "Desktop"));
            }
        }
예제 #4
0
        public API_Response <UserAvatar> UploadAvatar([FromUri] long UserID, [FromUri] string api_key = "")
        {
            return(InvokeAPI(() =>
            {
                if (!Global.Cache.CheckUserExists(UserID))
                {
                    throw new UserNotFoundException();
                }
                //
                var httpRequest = System.Web.HttpContext.Current.Request;
                if (httpRequest.Files.Count == 0)
                {
                    throw new Exception("Image not found");
                }
                else
                {
                    var file = httpRequest.Files[0];
                    switch (System.IO.Path.GetExtension(file.FileName).ToLower())
                    {
                    case ".jpg":
                    case ".png":
                    case ".jpeg":
                    case ".gif":
                        return AvatarGenerator.Generate(file.InputStream, UserID);

                    default: throw new Exception("Incorrect format");;
                    }
                }
            }, api_key));
        }
예제 #5
0
        public override Task <IdentityResult> CreateAsync(User user, string password)
        {
            var generator = new AvatarGenerator();

            user.Avatar = generator.Generate(user.UserName);

            return(base.CreateAsync(user, password));
        }
예제 #6
0
 public MockGenerator()
 {
     generator = new AvatarGenerator()
                 .WithNamingConvention(new MockNamingConvention())
                 .WithGeneratorAttribute(typeof(MockGeneratorAttribute))
                 .WithProcessor(new DefaultImports(typeof(IMocked).Namespace, typeof(LazyInitializer).Namespace))
                 .WithProcessor(new CSharpMocked())
                 .WithSyntaxReceiver(() => new RecursiveMockCandidatesReceiver());
 }
예제 #7
0
파일: World.cs 프로젝트: UWBCapstone/User
                      public void Start()
                      {
                          AvatarGenerator ___avaGen00;

                          ___avaGen00 = AvatarGenerator.Find();
                          derp        = true;
                          Persons     = (

                              Enumerable.Empty <Person>()).ToList <Person>();
                          AvatarGen = ___avaGen00;
                      }
예제 #8
0
        public void ShouldGenerateAvatar()
        {
            var ag = new AvatarGenerator(new PaletteColorGenerator()) {ImageFormat = ImageFormat.Png};
            var imageList = new List<string>();
            for (int i = 0; i < 25; i++)
            {
                var stream = ag.Generate("Hello", "World");
                var base64Data = Convert.ToBase64String(stream.ToArray());

                var imgTag = $"<img src='data:image/png;base64,{base64Data}' />";
                imageList.Add(imgTag);
            }

            var images = string.Join("<br/>", imageList);

            Assert.IsFalse(string.IsNullOrEmpty(images));
        }
        public JsonResult Upload(HttpPostedFileBase avatar)
        {
            if (avatar != null)
            {
                switch (Path.GetExtension(avatar.FileName).ToLower())
                {
                case ".jpg":
                case ".png":
                case ".jpeg":
                case ".gif":
                case ".tiff":
                    return(GetJson(AvatarGenerator.Generate(avatar.InputStream, CurrentUser.UserID)));

                default: return(GetJson(EN_ErrorCodes.IncorrectFileType));
                }
            }
            else
            {
                return(GetJson(EN_ErrorCodes.NoData));
            }
        }
예제 #10
0
        static (ImmutableArray <Diagnostic>, Compilation) GetGeneratedOutput(string source, string[] additionalSources = null, [CallerMemberName] string?test = null)
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(source, path: test + ".cs");

            var references = new List <MetadataReference>();
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            foreach (var assembly in assemblies)
            {
                if (!assembly.IsDynamic && !string.IsNullOrEmpty(assembly.Location))
                {
                    references.Add(MetadataReference.CreateFromFile(assembly.Location));
                }
            }

            var compilation = CSharpCompilation.Create(test, (additionalSources ?? Array.Empty <string>())
                                                       .Select((code, index) => CSharpSyntaxTree.ParseText(code, path: $"AdditionalSource{index}.cs"))
                                                       .Concat(new SyntaxTree[]
            {
                syntaxTree,
                CSharpSyntaxTree.ParseText(File.ReadAllText("Avatar/Avatar.cs"), path: "Avatar.cs"),
                CSharpSyntaxTree.ParseText(File.ReadAllText("Avatar/Avatar.StaticFactory.cs"), path: "Avatar.StaticFactory.cs"),
            }), references, new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            var diagnostics = compilation.GetDiagnostics().RemoveAll(d => d.Severity == DiagnosticSeverity.Hidden || d.Severity == DiagnosticSeverity.Info);

            if (diagnostics.Any())
            {
                return(diagnostics, compilation);
            }

            var generator = new AvatarGenerator();
            var driver    = CSharpGeneratorDriver.Create(generator);

            driver.RunGeneratorsAndUpdateCompilation(compilation, out var output, out diagnostics);

            return(diagnostics, output);
        }
예제 #11
0
        static (ImmutableArray <Diagnostic>, Compilation) GetGeneratedOutput(string source, [CallerMemberName] string?test = null)
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(source, path: test + ".cs");

            var references = new List <MetadataReference>();
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            foreach (var assembly in assemblies)
            {
                if (!assembly.IsDynamic && !string.IsNullOrEmpty(assembly.Location))
                {
                    references.Add(MetadataReference.CreateFromFile(assembly.Location));
                }
            }

            var compilation = CSharpCompilation.Create(test,
                                                       new SyntaxTree[]
            {
                syntaxTree,
                CSharpSyntaxTree.ParseText(File.ReadAllText("Avatar/Avatar.cs"), path: "Avatar.cs"),
            }, references, new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            var diagnostics = compilation.GetDiagnostics();

            if (diagnostics.Any())
            {
                return(diagnostics, compilation);
            }

            ISourceGenerator generator = new AvatarGenerator();

            var driver = CSharpGeneratorDriver.Create(generator);

            driver.RunGeneratorsAndUpdateCompilation(compilation, out var output, out diagnostics);

            return(diagnostics, output);
        }
예제 #12
0
 /// <summary>
 /// <see cref="AvatarController"/> constructor.
 /// </summary>
 public AvatarController(AvatarGenerator avatarGenerator)
 {
     AvatarGenerator = avatarGenerator ?? throw new ArgumentNullException(nameof(avatarGenerator));
 }
예제 #13
0
    public void MatrixRoutine()
    {
        var storage = new Storage();

        client = new MatrixClient(storage.Server);
        cache  = new Cache(client);

        try{
            client.UseExistingToken(storage.UserId, storage.Token);
            this.user = client.GetUser();
            Gtk.Application.Invoke(delegate {
                var statusContext = statusbar.GetContextId("matrix");
                statusbar.Push(statusContext, "Logged in to " + storage.Server + " as " + storage.UserId);
                displayName.Text = user.DisplayName;
            });
        }catch (Exception loginException) {
            Gtk.Application.Invoke(delegate {
                var statusContext = statusbar.GetContextId("matrix");
                statusbar.Push(statusContext, "Login failed: " + loginException.Message);
            });

            storage.Token = null;
            storage.Save();
        }

        var rooms = client.GetAllRooms();

        channelList.AppendColumn("Icon", new Gtk.CellRendererPixbuf(), "pixbuf", 0);
        channelList.AppendColumn("Artist", new Gtk.CellRendererText(), "text", 1);


        var liststore = new ListStore(typeof(Gdk.Pixbuf), typeof(string));

        int roomIndex = 0;

        foreach (var channel in rooms)
        {
            var label = getRoomLabel(channel);
            var icon  = AvatarGenerator.createRoomAvatar(label, channel.Encryption != null);
            liststore.AppendValues(icon, label);
            this.rooms.Add(roomIndex, channel);
            roomIndex++;

            foreach (var member in channel.Members)
            {
                if (!this.users.ContainsKey(member.Key))
                {
                    this.users.Add(member.Key, member.Value);
                }
            }
        }

        channelList.Model = liststore;
        var avatar       = cache.GetAvatarObject(user.AvatarURL);
        var avatarScaled = Utils.resizeImage(System.Drawing.Image.FromStream(avatar), 48, 48);

        profileImage.Pixbuf = Utils.bitmapToPixbuf(avatarScaled);

        foreach (var member in this.users)
        {
            if (member.Value.avatar_url != null)
            {
                var memberAvatar = cache.GetAvatarObject(member.Value.avatar_url);
                var scaled       = Utils.resizeImage(System.Drawing.Image.FromStream(memberAvatar), 32, 32);
                this.avatars.Add(member.Key, scaled);
            }
        }
        refreshRoomList();
        Console.WriteLine("Matrix thread done");
    }
예제 #14
0
    protected void loadRoom(MatrixRoom room)
    {
        this.currentRoom = room;

        foreach (var widget in chatBox.Children)
        {
            chatBox.Remove(widget);
        }

        foreach (var message in room.Messages)
        {
            Widget messageContents = null;
            if (message.msgtype == "m.text")
            {
                messageContents = new Label(message.body);
                ((Label)messageContents).Justify = Justification.Left;
            }
            if (message.msgtype == "m.image")
            {
                messageContents = new VBox();
                var imageLabel = new Label(message.body);
                imageLabel.Justify = Justification.Left;

                var loader        = new AsyncImageLoader((MMessageImage)message, this.client);
                var imageContents = loader.GetImageWidget(250, 200);

                ((VBox)messageContents).PackStart(imageLabel);
                ((VBox)messageContents).PackStart(imageContents);
            }
            if (messageContents != null)
            {
                var    messageContainer = new HBox();
                string senderName;

                senderName = this.users [message.sender].displayname;
                if (senderName == null)
                {
                    senderName = message.sender;
                }

                var alignmentBox = new Gtk.Alignment(0, -1, 0, 0);
                if (this.avatars.ContainsKey(message.sender))
                {
                    var senderIcon = new System.Drawing.Bitmap(this.avatars [message.sender]);
                    alignmentBox.Add(new Gtk.Image(Utils.bitmapToPixbuf(senderIcon)));
                }
                else
                {
                    var senderIcon = AvatarGenerator.createRoomAvatar(senderName);
                    alignmentBox.Add(new Gtk.Image(senderIcon));
                }
                messageContainer.PackStart(alignmentBox, false, false, 6);

                messageContainer.PackStart(messageContents, false, false, 6);
                chatBox.PackStart(messageContainer, false, false, 0);
            }

            Console.WriteLine(message.msgtype);
        }
        chatBox.ShowAll();
    }