示例#1
0
        internal IFlurlRequest GetClient(Url pathSegment = null, bool anonymous = false, bool useBaseUrl = true)
        {
            var url = useBaseUrl ? BaseUrl
                      .AppendPathSegment(API_SEGMENT)
                      .AppendPathSegment(pathSegment.Path)
                      .SetQueryParams(pathSegment.QueryParams) : pathSegment;
            IFlurlRequest client = new FlurlRequest(url);

            foreach (var hea in Headers)
            {
                client = client.WithHeader(hea.Key, hea.Value);
            }
            //var client = url
            //    //.WithHeader("Content-Type", "application/json")
            //    .WithHeader("Accept", "application/json")
            //    //.WithHeader("User-Agent", Platform + "|" + AppName + "|" + GetType().GetTypeInfo().Assembly.GetName().Version)
            //    .WithHeader("Accept-Language", System.Globalization.CultureInfo.CurrentCulture.ToString());

            client = client.WithHeader("ClientVersion", "1.0.0");
            foreach (var inter in callInterceptors)
            {
                client.ConfigureRequest(httpClient =>
                {
                    inter(pathSegment, anonymous, useBaseUrl, httpClient);
                });
            }
            //if (!anonymous)
            //{
            //    var authHeader = GetAuthorizationHeader();
            //    client = client.WithHeader(authHeader.Key, authHeader.Value);
            //}
            return(client);
        }
示例#2
0
        private async Task <string> GetToken()
        {
            try
            {
                var response = await BaseUrl
                               .AppendPathSegment("auth")
                               .PostJsonAsync(new
                {
                    apiKey = ApiKey
                })
                               .ReceiveJson <AuthResponse>();

                if (response.Auth)
                {
                    _session.SetComplexData($"{SessionTokenKey}{ApiKey}", response.Token);
                    return(response.Token);
                }
            }
            catch (FlurlHttpException ex)
            {
                if (ex.Call.HttpStatus == HttpStatusCode.Unauthorized)
                {
                    _logger.LogError("Wasn't able to get token. The api key is wrong.");
                }
            }

            return(null);
        }
示例#3
0
        ///// <summary>
        ///// Append to an existing file (optional operation).
        ///// </summary>
        ///// <param name="localFile"></param>
        ///// <param name="remotePath"></param>
        ///// <returns></returns>
        //public async Task<string> AppendFile(string localFile, string remotePath)
        //{
        //	var hc = CreateHTTPClient(false);
        //	var resp = await hc.PostAsync(GetUriForOperation(remotePath) + "op=APPEND", null);
        //	if (!resp.IsSuccessStatusCode)
        //		return null;
        //	var postLocation = resp.Headers.Location;
        //	StreamContent sc = new StreamContent(File.OpenRead(localFile));
        //	var resp2 = await hc.PostAsync(postLocation, sc);
        //	if (!resp2.IsSuccessStatusCode)
        //		return null;

        //	// oddly, this is returning a 403 forbidden
        //	// due to: "IOException","javaClassName":"java.io.IOException","message":"java.io.IOException:
        //	// Append to hdfs not supported. Please refer to dfs.support.append configuration parameter.
        //	return resp2.Headers.Location.ToString();
        //}

        ///// <summary>
        ///// Append to an existing file (optional operation).
        ///// </summary>
        ///// <param name="localFile"></param>
        ///// <param name="remotePath"></param>
        ///// <returns></returns>
        //public async Task<string> AppendFile(Stream content, string remotePath)
        //{
        //	var hc = CreateHTTPClient(false);
        //	var resp = await hc.PostAsync(GetUriForOperation(remotePath) + "op=APPEND", null);
        //	if (!resp.IsSuccessStatusCode)
        //		return null;

        //	var postLocation = resp.Headers.Location;
        //	var sc = new StreamContent(content);
        //	var resp2 = await hc.PostAsync(postLocation, sc);
        //	if (!resp2.IsSuccessStatusCode)
        //		return null;
        //	return resp2.Headers.Location.ToString();
        //}

        #endregion

        private string GetUriForOperation(string path)
        {
            string uri = BaseUrl.AppendPathSegment(Prefix);

            if (!string.IsNullOrEmpty(path))
            {
                if (path[0] == '/')
                {
                    uri += path;
                }
                else
                {
                    uri.AppendPathSegment(HomeDirectory);
                }

                uri = uri.AppendPathSegment(path);
            }

            if (!string.IsNullOrEmpty(User))
            {
                uri = uri.SetQueryParam("user.name", User);
            }

            return(uri);
        }
示例#4
0
        public async Task <IEnumerable <SprdPoolInfo> > GetPoolInformationsAsync()
        {
            Logging.Logger.LogInformation("GetPoolInformationsAsync");

            var response = (await BaseUrl.AppendPathSegment(RelativeUrlQueryPool).SetQueryParam("code", AzureCode_QueryPools_TestEnvironment).GetJsonAsync <IEnumerable <SprdPoolInfo> >());

            return(response);
        }
示例#5
0
        // https://spread-api.azurewebsites.net/api/del_pool_commit/{id}?code=W/D8J7d4Q1SHIVI65umLfF3xG8aVhOXOcp3OaKkiaIv9spL/kN2KFg==
        public async Task <IFlurlResponse> AddNewPoolInfoAsync(SprdPoolInfo sprdPoolInfo)
        {
            Logging.Logger.LogInformation("AddNewPoolInfo");

            var response = (await BaseUrl.AppendPathSegment(RelativeUrlAddPoolSprd)
                            .SetQueryParam("code", AzureCode_AddSprd_TestEnvironment).PostJsonAsync(sprdPoolInfo));

            Logging.Logger.LogInformation("Response received from AddNewPoolInfo");
            return(response);
        }
示例#6
0
        public async Task <IList <StandingResult> > Standing(int seasonId)
        {
            var url = BaseUrl
                      .AppendPathSegment("standings")
                      .AppendPathSegment("season")
                      .AppendPathSegment(seasonId)
                      .SetQueryParam("api_token", _apiToken);

            var response = await url.GetJsonAsync <StandingResponse>();

            return(response.Data);
        }
示例#7
0
        public async Task <IList <LeagueResult> > AllLeagues(AllLeagueOptions allleagueOptions = null)
        {
            var url = BaseUrl
                      .AppendPathSegment("leagues")
                      .SetQueryParam("api_token", _apiToken);

            if (allleagueOptions != null)
            {
                url.SetQueryParam("include", string.Join(',', allleagueOptions.Options));
            }

            var response = await url.GetJsonAsync <AllLeaguesResponse>();

            return(response.Data);
        }
示例#8
0
        public async Task <BaseResponse <DevicesResult> > GetDevicesAsync(string accountId, string token)
        {
            var body = new DevicesRequest
            {
                Token     = token,
                AccountId = accountId,
            };

            return(await BaseUrl
                   .AppendPathSegment("cloud/v1/deviceManaged/devices")
                   .WithHeader("Content-Type", "application/json")
                   .PostJsonAsync(body)
                   .ReceiveJson <BaseResponse <DevicesResult> >()
                   .ConfigureAwait(false));
        }
示例#9
0
        protected override void ProcessRecord()
        {
            Path = GetUnresolvedProviderPathFromPSPath(Path);
            var builder    = new StringBuilder();
            var dir        = new DirectoryInfo(Path);
            var files      = dir.GetFiles(Filter, SearchOption.AllDirectories);
            var listMarker = ListType == "Unordered" ? "-" : "1.";

            foreach (var file in files.OrderBy(f => f.Name))
            {
                var uri = BaseUrl.AppendPathSegment(System.IO.Path.GetFileNameWithoutExtension(file.FullName));
                builder.Append($"{listMarker} [{System.IO.Path.GetFileNameWithoutExtension(file.FullName)}]({uri}){Environment.NewLine}");
            }

            WriteObject(builder.ToString());
        }
 public async virtual Task <OkApiResult <List <WorkerTotalAvailability> > > GetTotalAvailability(TotalAvailabilityRequest request)
 {
     try
     {
         return(await BaseUrl
                .AppendPathSegment("availability/getoverallacrossintervals")
                .SetQueryParam("api-version", ApiVersion)
                .WithHeader(ApiKeyName, ApiKey)
                .PostJsonAsync(request)
                .ReceiveJson <OkApiResult <List <WorkerTotalAvailability> > >());
     }
     catch (FlurlHttpException flEx)
     {
         throw flEx;
         throw await flEx.Handle();
     }
 }
示例#11
0
        public async Task <BaseResponse <LoginResult> > LoginAsync()
        {
            var body = new LoginBody
            {
                Email    = _config.Email,
                Password = HashPassword(_config.Password),
                Method   = "login"
            };

            var response = await BaseUrl
                           .AppendPathSegment("/cloud/v1/user/login")
                           .WithHeader("Content-Type", "application/json")
                           .PostJsonAsync(body)
                           .ReceiveString().
                           ConfigureAwait(false);

            return(JsonConvert.DeserializeObject <BaseResponse <LoginResult> >(response));
        }
 public async virtual Task <OkApiResult <List <WorkerAvailabilityIntervals> > > GetAvailabilityDailyAsync
     (DateTimeOffset start, DateTimeOffset end, int daysToRepeat, IEnumerable <string> workerIds)
 {
     try
     {
         return(await BaseUrl
                .AppendPathSegment("availability/getperdailyinterval")
                .SetQueryParam("api-version", ApiVersion)
                .SetQueryParam("start", start.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"))
                .SetQueryParam("end", end.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"))
                .SetQueryParam("daysToRepeat", daysToRepeat)
                .WithHeader(ApiKeyName, ApiKey)
                .PostJsonAsync(workerIds)
                .ReceiveJson <OkApiResult <List <WorkerAvailabilityIntervals> > >());
     }
     catch (FlurlHttpException flEx)
     {
         throw await flEx.Handle();
     }
 }
示例#13
0
        /// <summary>
        /// GET the list of all companies that you have visibility to.
        /// </summary>
        public List <Company> GetCompanies()
        {
            var token = Tokens.Get();

            return(HttpHelper.Get <List <Company> >(BaseUrl.AppendPathSegment("companies").ToString(), token));
        }