/// <summary>
        /// Used to change the password of the current user account.
        /// </summary>
        /// <param name="oldPassword">The current password of the user account.</param>
        /// <param name="newPassword">The new password.</param>
        public async Task ChangePasswordAsync(string oldPassword, string newPassword)
        {
            var parameters = new ApiParameters(OperationParameters.UserManagement.ChangePassword,
                                               new { oldPassword, newPassword });

            await _httpClient.Get(nameof(UserManagementOperations.ChangePassword), parameters);
        }
Example #2
0
        protected override string Post(ServiceProxyInvokeEventArgs invokeArgs, HttpWebRequest request)
        {
            string baseAddress = invokeArgs.BaseAddress;
            string className   = invokeArgs.ClassName;
            string methodName  = invokeArgs.MethodName;

            object[] parameters = invokeArgs.PostParameters;
            if (className.Equals("securechannel", StringComparison.InvariantCultureIgnoreCase) && methodName.Equals("invoke", StringComparison.InvariantCultureIgnoreCase))
            {
                // the target is the SecureChannel.Invoke method but we
                // need the actual className and method that is in the parameters
                // object
                string   actualClassName  = (string)parameters[0];
                string   actualMethodName = (string)parameters[1];
                string   jsonParams       = (string)parameters[2];
                HttpArgs args             = new HttpArgs();
                args.ParseJson(jsonParams);

                if (TypeRequiresApiKey || MethodRequiresApiKey(actualMethodName))
                {
                    ApiKeyResolver.SetKeyToken(request, ApiParameters.GetStringToHash(actualClassName, actualMethodName, args["jsonParams"]));
                }
            }
            return(base.Post(invokeArgs, request));
        }
Example #3
0
        // GET: api/Report/ThisWeek/{workspaceKey}
        public Report GetThisWeek(string workspaceKey)
        {
            string domain            = Properties.Settings.Default.Domain;
            string workspaceEndpoint = Properties.Settings.Default.WorkspaceEndpoint;
            string reportEndpoint    = Properties.Settings.Default.ReportEndpoint;
            string apiPassword       = Properties.Settings.Default.DefaultApiPassword;
            string apiToken          = WebUtil.GetHeader("ApiToken", Request.Headers);
            string email             = WebUtil.GetHeader("Email", Request.Headers);

            var paths      = new ApiPaths(domain, workspaceEndpoint, reportEndpoint);
            var parameters = new ApiParameters()
            {
                WorkspaceKey = workspaceKey,
                Since        = DateTime.Today,
                Until        = DateTime.Today.AddDays(7)
            };
            var credentials = new ApiCredentials
            {
                ApiKey      = apiToken,
                ApiPassword = apiPassword,
                Email       = email
            };
            var context = new ApiContext(paths, credentials, parameters);

            return(new TogglApiRequest(context).GetReport());
        }
Example #4
0
        public void SecureExecutionRequest_ShouldExecute()
        {
            EnsureRepository();
            IHttpContext context = CreateFakeContext(MethodInfo.GetCurrentMethod().Name);

            string input      = "monkey";
            string jsonParams = ApiParameters.ParametersToJsonParamsArray(new object[] { input }).ToJson();

            Incubator testIncubator = new Incubator();

            testIncubator.Set <Echo>(new Echo());
            SecureExecutionRequest request = new SecureExecutionRequest(context, "Echo", "Send", jsonParams);

            request.ServiceProvider = testIncubator;

            AesKeyVectorPair kvp = new AesKeyVectorPair();

            // ensure the symettric key is set
            request.Session.SetSymmetricKey(kvp.Key, kvp.IV);
            //

            request.Execute();

            Expect.IsTrue(request.Result.GetType() == typeof(string)); // should be base64 cipher of json result

            string result = request.GetResultAs <string>();

            Expect.AreEqual(input, result);

            CleanUp();
        }
        public void ApiKey_ExecutionRequestShouldValidateApiKey()
        {
            RegisterDb();
            ServiceProxySystem.Register <ApiKeyRequiredEcho>();
            string        testName         = MethodBase.GetCurrentMethod().Name;
            IUserResolver mockUserResolver = Substitute.For <IUserResolver>();

            mockUserResolver.GetUser(Arg.Any <IHttpContext>()).Returns("testUser");
            LocalApiKeyManager.Default.UserResolver = mockUserResolver;

            IApplicationNameProvider nameProvider = new TestApplicationNameProvider(testName.RandomLetters(6));
            IApiKeyProvider          keyProvider  = new LocalApiKeyProvider();

            ExecutionRequest er = new ExecutionRequest("ApiKeyRequiredEcho", "Send", "json")
            {
                ApiKeyResolver = new ApiKeyResolver(keyProvider, nameProvider),
                Request        = new ServiceProxyTestHelpers.JsonTestRequest()
            };

            string data = ApiParameters.ParametersToJsonParamsObjectString("some random data");

            er.InputString = data;

            ValidationResult result = er.Validate();

            result.Success.IsFalse();
            List <ValidationFailures> failures = new List <ValidationFailures>(result.ValidationFailures);

            failures.Contains(ValidationFailures.InvalidApiKeyToken).IsTrue();
        }
Example #6
0
        private string AddQueryStrings(ApiParameters queryStringParameters)
        {
            if (queryStringParameters?.Parameters == null)
            {
                return(string.Empty);
            }

            int count = queryStringParameters.Parameters.Count;

            if (count > 0)
            {
                StringBuilder builder = new StringBuilder(35);

                builder.Append("?");
                int i = 0;
                foreach (KeyValuePair <string, string> parameter in queryStringParameters.Parameters)
                {
                    builder.Append($"{parameter.Key}={HttpUtility.UrlEncode(parameter.Value)}");
                    AppendAmpersandConditonallyBetweenParameters(builder, i, count);
                    i++;
                }

                return(builder.ToString());
            }

            return(string.Empty);
        }
        public void ApiKey_ExecutionRequestValidationShouldSucceedIfGoodToken()
        {
            Prepare();
            ServiceProxySystem.Register <ApiKeyRequiredEcho>();

            string methodName = MethodBase.GetCurrentMethod().Name;
            IApplicationNameProvider nameProvider = new TestApplicationNameProvider(methodName);
            IApiKeyProvider          keyProvider  = new LocalApiKeyProvider();

            string           className = "ApiKeyRequiredEcho";
            string           method    = "Send";
            string           data      = ApiParameters.ParametersToJsonParamsArray("some random data").ToJson();
            ExecutionRequest er        = new ExecutionRequest(className, method, "json")
            {
                JsonParams     = data,
                ApiKeyResolver = new ApiKeyResolver(keyProvider, nameProvider),
                Request        = new ServiceProxyTestHelpers.FormUrlEncodedTestRequest()
            };

            er.ApiKeyResolver.SetKeyToken(er.Request.Headers, ApiParameters.GetStringToHash(className, method, data));

            ValidationResult result = er.Validate();

            Expect.IsTrue(result.Success);
        }
        public void ApiKey_ExecutionRequestValidationShouldFailIfBadToken()
        {
            RegisterDb();
            ServiceProxySystem.Register <ApiKeyRequiredEcho>();

            IUserResolver mockUserResolver = Substitute.For <IUserResolver>();

            mockUserResolver.GetUser(Arg.Any <IHttpContext>()).Returns("testUser");
            LocalApiKeyManager.Default.UserResolver = mockUserResolver;

            string methodName = MethodBase.GetCurrentMethod().Name;
            IApplicationNameProvider nameProvider = new TestApplicationNameProvider(methodName.RandomLetters(4));
            IApiKeyProvider          keyProvider  = new LocalApiKeyProvider();

            ExecutionRequest er = new ExecutionRequest("ApiKeyRequiredEcho", "Send", "json")
            {
                ApiKeyResolver = new ApiKeyResolver(keyProvider, nameProvider),
                Request        = new ServiceProxyTestHelpers.JsonTestRequest()
            };
            string data = ApiParameters.ParametersToJsonParamsObjectString("some random data");

            er.InputString = data;
            ApiKeyResolver resolver = new ApiKeyResolver(keyProvider, nameProvider);

            resolver.SetKeyToken(er.Request.Headers, data);

            er.Request.Headers[Headers.KeyToken] = "bad token value";

            ValidationResult result = er.Validate();

            Expect.IsFalse(result.Success, "Validation should have failed");
            List <ValidationFailures> failures = new List <ValidationFailures>(result.ValidationFailures);

            Expect.IsTrue(failures.Contains(ValidationFailures.InvalidApiKeyToken), "ValidationFailure should have been InvalidApiKeyToken");
        }
Example #9
0
        public async Task <SpotibroModels.PlaylistContents> GetPlaylistContentsAsync(PartyGoer user, string playlistId)
        {
            var parameters = new ApiParameters
            {
                Parameters = new Dictionary <string, string>
                {
                    { "fields", "items(track(id,name,album(images(url)),artists(name,id),explicit(),duration_ms()))" },
                    { "market", user.GetMarket() }
                },
                Keys = new Dictionary <string, string> {
                    { "{playlist_id}", playlistId },
                }
            };

            var response = await _spotifyHttpClient.SendHttpRequestAsync(user, _apiEndpoints[ApiEndpointType.GetPlaylistItems], parameters);

            response.EnsureSuccessStatusCode();

            var playlistItems = await response.Content.ReadFromJsonAsync <PlaylistItems>();

            playlistItems.Items.RemoveAll(p => p.Track == null);

            return(new SpotibroModels.PlaylistContents()
            {
                Tracks = playlistItems.Items.Select(p => _mapper.Convert(p.Track)).ToList()
            });
        }
Example #10
0
        public async Task <T> Get <T>(string action, ApiParameters parameters)
        {
            var apiParams = ApiUrl.Create(_apiSettings, action, parameters);
            var response  = await _httpClient.GetAsync(apiParams);

            return(await HandleResponse <T>(response));
        }
Example #11
0
        public async Task Get(string action, ApiParameters parameters = null)
        {
            var apiParams = ApiUrl.Create(_apiSettings, action, parameters);
            var response  = await _httpClient.GetAsync(apiParams);

            await HandleResponse(response);
        }
        public static SecureExecutionRequest Create <T>(IHttpContext context, string methodName, Incubator serviceProvider, params object[] parameters)
        {
            string jsonParams = ApiParameters.ParametersToJsonParamsArray(parameters).ToJson();
            SecureExecutionRequest request = new SecureExecutionRequest(context, typeof(T).Name, methodName, jsonParams);

            request.ServiceProvider = serviceProvider;
            return(request);
        }
Example #13
0
        public static ApiParameters convertToApiParameters(Record obj)
        {
            ApiParameters param = new ApiParameters();

            param.Id = obj.Id.ToString();
            /*record to apiparameter id sini alacaksın id ye yazacaksın*/
            return(param);
        }
        public void Validation_ShouldBeAbleToCreateToken()
        {
            Prepare();

            IHttpContext  context    = CreateFakeContext(MethodBase.GetCurrentMethod().Name);
            SecureSession session    = SecureSession.Get(context);
            string        postString = ApiParameters.ParametersToJsonParamsObjectString("random information");

            EncryptedValidationToken token = ApiEncryptionValidation.CreateEncryptedValidationToken(postString, session);
        }
Example #15
0
        private async Task <Domain.Contracts.SpotifyApi.Models.ArtistInformation> GetBasicArtistInformationAsync(PartyGoer partyGoer, string artistId)
        {
            var parameters = new ApiParameters {
                Keys = new Dictionary <string, string> {
                    { "{id}", artistId }
                }
            };
            var artistResponse = await SendHttpRequestAsync(partyGoer, _apiEndpoints[ApiEndpointType.ArtistInformation], parameters);

            return(await artistResponse.Content.ReadFromJsonAsync <Domain.Contracts.SpotifyApi.Models.ArtistInformation>());
        }
        public static PaginationViewModel <T> Build(IEnumerable <T> items, ApiParameters apiParameters, int totalCount)
        {
            var paginationViewModel = new PaginationViewModel <T>
            {
                _items = items.ToList()
            };

            paginationViewModel.SetPaginationState(totalCount, apiParameters);

            return(paginationViewModel);
        }
 public AsyncExecutionRequest CreateRequest(Type type, string methodName, params object[] arguments)
 {
     return(new AsyncExecutionRequest
     {
         RespondToHostName = HostPrefix.HostName,
         RespondToPort = HostPrefix.Port,
         Ssl = HostPrefix.Ssl,
         ClassName = type.Name,
         MethodName = methodName,
         JsonParams = ApiParameters.ParametersToJsonParamsArray(arguments).ToJson()
     });
 }
Example #18
0
        private async Task <TopTracks> GetTopTracksAsync(PartyGoer partyGoer, string artistId)
        {
            ApiParameters parameters = new ApiParameters {
                Keys = new Dictionary <string, string> {
                    { "{id}", artistId }
                }, Parameters = new Dictionary <string, string> {
                    { "market", partyGoer.GetMarket() }
                }
            };
            var artistTopTracksResponse = await SendHttpRequestAsync(partyGoer, _apiEndpoints[ApiEndpointType.ArtistTopTracks], parameters);

            return(await artistTopTracksResponse.Content.ReadFromJsonAsync <TopTracks>());
        }
Example #19
0
        public bool IsValidRequest(ExecutionRequest request)
        {
            Args.ThrowIfNull(request, "request");
            string stringToHash = ApiParameters.GetStringToHash(request);
            string token        = request.Context.Request.Headers[CustomHeaders.KeyToken];
            bool   result       = false;

            if (!string.IsNullOrEmpty(token))
            {
                result = IsValidKeyToken(stringToHash, token);
            }
            return(result);
        }
        public void SetPaginationState(int totalCount, ApiParameters apiParameters)
        {
            Pagination = new PaginationStateViewModel
            {
                Count = totalCount
            };

            if (apiParameters != null)
            {
                Pagination.Page  = apiParameters.Page;
                Pagination.Limit = apiParameters.Limit;
            }
        }
        public static string Create(ApiSettings settings, string action, ApiParameters parameters)
        {
            var parametersQuery = parameters.ToQuery();

            var query = $"?lang=en&account={settings.Account}&username={settings.Username}" +
                        $"&password={settings.Password}&apikey={settings.ApiKey}&outputformat=json&action={action}";

            if (!string.IsNullOrEmpty(parametersQuery))
            {
                query += $"&{parametersQuery}";
            }

            return(query);
        }
Example #22
0
        public List <DeliveryPoint> GetDeliveryPoints(ApiParameters pars, RequestSettings rs = null)
        {
            var result = new List <DeliveryPoint>();

            for (int i = 0; i < 3; i++)
            {
                result.Add(new DeliveryPoint
                {
                    Id  = "id" + i,
                    Lat = 1,
                    Lng = 1
                });
            }
            return(result);
        }
Example #23
0
        public IActionResult RecordList(ApiParameters param)
        {
            if (param.sortOrderString == "0")
            {
                param.sortOrderString = "asc";
            }
            else
            {
                param.sortOrderString = "desc";
            }

            var model = record.getRecords("fromIndex=" + param.fromIndex + "&toIndex=" + param.toIndex + "&sortOrderString=" + param.sortOrderString);

            TempData["recordList"] = model;

            return(View());
        }
Example #24
0
        public async Task <Domain.Errors.ServiceResult <UpdateSongError> > UpdateSongForPartyGoerAsync(PartyGoer partyGoer, List <string> songUris, int currentSongProgressInMs)
        {
            string perferredDeviceId = partyGoer.GetPerferredDeviceId();

            ApiParameters parameters = null;

            if (!string.IsNullOrWhiteSpace(perferredDeviceId))
            {
                parameters = new ApiParameters
                {
                    Parameters = new Dictionary <string, string>
                    {
                        { "device_id", perferredDeviceId }
                    }
                };
            }

            HttpResponseMessage response = null;

            if (parameters != null)
            {
                response = await SendHttpRequestAsync(partyGoer, _apiEndpoints[ApiEndpointType.PlaySong], parameters,
                                                      new StartUserPlaybackSong { uris = songUris.Select(song => song.Contains("spotify:track:") ? song : $"spotify:track:{song}".Split('+').First()).ToList(), position_ms = currentSongProgressInMs });
            }
            else
            {
                response = await SendHttpRequestAsync(partyGoer, _apiEndpoints[ApiEndpointType.PlaySong],
                                                      new StartUserPlaybackSong { uris = songUris.Select(song => song.Contains("spotify:track:") ? song : $"spotify:track:{song}".Split('+').First()).ToList(), position_ms = currentSongProgressInMs });
            }

            Domain.Errors.ServiceResult <UpdateSongError> error = new Domain.Errors.ServiceResult <UpdateSongError>();

            if (response.IsSuccessStatusCode)
            {
                return(error);
            }
            else
            {
                await _logService.LogExceptionAsync(new Exception($"Unable to update song for {partyGoer.GetId()}"), await response.Content.ReadAsStringAsync());

                // TODO: Check status codes and add specific messaging for status codes based on Spotifys API
                error.AddError(new UpdateSongError($"Unable to update song for {partyGoer.GetId()}"));
                return(error);
            }
        }
Example #25
0
        public async Task <ServiceResult <PaginationViewModel <string> > > GetDictionaryKeys(ApiParameters apiParameters)
        {
            if (apiParameters == null)
            {
                apiParameters = new ApiParameters();
            }

            var serviceResult = new ServiceResult <PaginationViewModel <string> >();

            serviceResult.Data = (await UnitOfWork
                                  .RepositoryAsync <Dictionary>()
                                  .Query()
                                  .OrderBy(q => q.OrderBy(dictionary => dictionary.Key))
                                  .SelectPageAsync(apiParameters.Page, apiParameters.Limit, true))
                                 .Mutate(q => q.Key);

            return(serviceResult);
        }
Example #26
0
        public void GetDeliveryPointsTests()
        {
            var pointForMapParams = new ApiParameters
            {
                MinLat = 55.30077916694387m,
                MaxLat = 56.200586833056136m,
                MinLng = 36.974153699712836m,
                MaxLng = 38.26083830028717m
            };

            var deliveryPoints = _client.GetDeliveryPoints(pointForMapParams);
            var first          = deliveryPoints.FirstOrDefault();

            Assert.True(deliveryPoints != null);
            Assert.True(deliveryPoints.Count > 0);
            Assert.True(first != null && !string.IsNullOrWhiteSpace(first.Id) &&
                        first.Lat > 0 && first.Lng > 0);
        }
Example #27
0
        public bool IsValidRequest(ExecutionRequest request)
        {
            Args.ThrowIfNull(request, "request");

            string className    = request.ClassName;
            string methodName   = request.MethodName;
            string stringToHash = ApiParameters.GetStringToHash(className, methodName, request.JsonParams);

            string token  = request.Context.Request.Headers[Headers.KeyToken];
            bool   result = false;

            if (!string.IsNullOrEmpty(token))
            {
                result = IsValidKeyToken(stringToHash, token);
            }

            return(result);
        }
Example #28
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            ApiParameters.CarregarParametros();
            services.AddControllers();
            services.AddJsonSetup();
            services.RegisterServices();
            services.AddAutoMapperSetup();
            services.AddSwaggerSetup();
            services.AddDataBaseSetup();

            services.AddMvc().AddFluentValidation((mvcConfiguration => mvcConfiguration.RegisterValidatorsFromAssemblyContaining <Startup>()));

            services.AddRouting(options =>
            {
                options.LowercaseUrls         = true;
                options.LowercaseQueryStrings = true;
            });
        }
Example #29
0
        } /*-*/

        #endregion

        #region convert string to ApiParameters
        public static ApiParameters convertToApiParameters(string obj)
        {
            var parameters = obj.Split("&");
            Dictionary <string, string> dicti = new Dictionary <string, string>();

            foreach (var item in parameters)
            {
                var param = item.Split("=");
                dicti.Add(param[0], param[1]);
            }
            ApiParameters api = new ApiParameters();

            api.fromIndex = dicti["fromIndex"];
            api.toIndex   = dicti["toIndex"];
            //api.sortColumnString = dicti["sortColumnString"];
            api.sortOrderString = dicti["sortOrderString"];
            //api.lastModifiedTime =Convert.ToDateTime(dicti["lastModifiedTime"]);

            return(api);
        }
Example #30
0
        public async Task <List <SpotibroModels.PlaylistSummary> > GetUsersPlaylistsAsync(PartyGoer user, int limit = 10, int offset = 0)
        {
            try
            {
                var parameters = new ApiParameters
                {
                    Parameters = new Dictionary <string, string>
                    {
                        { "limit", limit.ToString() },
                        { "offset", offset.ToString() }
                    }
                };

                var response = await _spotifyHttpClient.SendHttpRequestAsync(user, _apiEndpoints[ApiEndpointType.GetUserPlaylists], parameters, null);

                response.EnsureSuccessStatusCode();

                PagedObject <UsersPlaylist> spotifyPlaylists = await response.Content.ReadFromJsonAsync <PagedObject <UsersPlaylist> >();

                List <SpotibroModels.PlaylistSummary> playlistSummaries = new List <SpotibroModels.PlaylistSummary>();

                foreach (var playlist in spotifyPlaylists.Items)
                {
                    playlistSummaries.Add(new SpotibroModels.PlaylistSummary {
                        Name = playlist.Name, PlaylistCoverArtUrl = playlist.Images.FirstOrDefault().Url, Id = playlist.Id
                    });
                }

                return(playlistSummaries);
            }
            catch (Exception ex)
            {
                await _logService.LogExceptionAsync(ex, "Error occurred in GetUsersPlaylistsAsync");

                return(null);
            }
        }