예제 #1
0
        public async Task Setting_Should_ResultInOptionsSet(string method, HttpMethodParameterPosition pos)
        {
            // arrange
            // act
            var client = new TestRestClient(new TestClientOptions()
            {
                Api1Options = new RestApiClientOptions
                {
                    BaseAddress = "http://test.address.com"
                }
            });

            client.Api1.SetParameterPosition(new HttpMethod(method), pos);

            client.SetResponse("{}", out var request);

            await client.RequestWithParams <TestObject>(new HttpMethod(method), new Dictionary <string, object>
            {
                { "TestParam1", "Value1" },
                { "TestParam2", 2 },
            },
                                                        new Dictionary <string, string>
            {
                { "TestHeader", "123" }
            });

            // assert
            Assert.AreEqual(request.Method, new HttpMethod(method));
            Assert.AreEqual(request.Content?.Contains("TestParam1") == true, pos == HttpMethodParameterPosition.InBody);
            Assert.AreEqual(request.Uri.ToString().Contains("TestParam1"), pos == HttpMethodParameterPosition.InUri);
            Assert.AreEqual(request.Content?.Contains("TestParam2") == true, pos == HttpMethodParameterPosition.InBody);
            Assert.AreEqual(request.Uri.ToString().Contains("TestParam2"), pos == HttpMethodParameterPosition.InUri);
            Assert.AreEqual(request.GetHeaders().First().Key, "TestHeader");
            Assert.IsTrue(request.GetHeaders().First().Value.Contains("123"));
        }
        public override void AuthenticateRequest(RestApiClient apiClient, Uri uri, HttpMethod method, Dictionary <string, object> providedParameters,
                                                 bool auth, ArrayParametersSerialization arraySerialization,
                                                 HttpMethodParameterPosition parameterPosition, out SortedDictionary <string, object> uriParameters, out SortedDictionary <string, object> bodyParameters, out Dictionary <string, string> headers)
        {
            var uriParam = new SortedDictionary <string, object>();

            bodyParameters = new();
            uriParameters  = new();
            headers        = new();
            if (parameterPosition == HttpMethodParameterPosition.InBody && method == HttpMethod.Post)
            {
                bodyParameters = new SortedDictionary <string, object>(providedParameters);
            }
            if (parameterPosition == HttpMethodParameterPosition.InUri && method == HttpMethod.Get)
            {
                uriParam = new SortedDictionary <string, object>(providedParameters);
            }

            if (auth)
            {
                if (uri.PathAndQuery.Contains("v3"))
                {
                    headers = AddAuthenticationToHeaders(uri.ToString(), method, providedParameters, auth, parameterPosition, arraySerialization);
                }
                else
                {
                    var uriAuthParam = AddAuthenticationToParameters(uri.ToString(), method, providedParameters, auth, parameterPosition, arraySerialization);
                    foreach (var p in uriAuthParam)
                    {
                        uriParam.Add(p.Key, p.Value);
                    }
                }
            }
            uriParameters = uriParam;
        }
 /// <summary>
 /// Authenticate a request. Output parameters should include the providedParameters input
 /// </summary>
 /// <param name="apiClient">The Api client sending the request</param>
 /// <param name="uri">The uri for the request</param>
 /// <param name="method">The method of the request</param>
 /// <param name="providedParameters">The request parameters</param>
 /// <param name="auth">If the requests should be authenticated</param>
 /// <param name="arraySerialization">Array serialization type</param>
 /// <param name="parameterPosition">The position where the providedParameters should go</param>
 /// <param name="uriParameters">Parameters that need to be in the Uri of the request. Should include the provided parameters if they should go in the uri</param>
 /// <param name="bodyParameters">Parameters that need to be in the body of the request. Should include the provided parameters if they should go in the body</param>
 /// <param name="headers">The headers that should be send with the request</param>
 public abstract void AuthenticateRequest(
     RestApiClient apiClient,
     Uri uri,
     HttpMethod method,
     Dictionary <string, object> providedParameters,
     bool auth,
     ArrayParametersSerialization arraySerialization,
     HttpMethodParameterPosition parameterPosition,
     out SortedDictionary <string, object> uriParameters,
     out SortedDictionary <string, object> bodyParameters,
     out Dictionary <string, string> headers
     );
예제 #4
0
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri,
                                                                               HttpMethod method, Dictionary <string, object> parameters, bool signed,
                                                                               HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            if (ExanteCredentials.ApplicationId is null ||
                ExanteCredentials.ClientId is null ||
                ExanteCredentials.SharedKey is null)
            {
                throw new ArgumentException("No valid API credentials");
            }

            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ExanteCredentials.SharedKey));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
            var payload     = new JwtPayload(ExanteCredentials.ClientId,
                                             null,
                                             new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, ExanteCredentials.ApplicationId),
                new Claim(JwtRegisteredClaimNames.Iss, ExanteCredentials.ClientId),
            },
                                             new Dictionary <string, object> {
                { JwtRegisteredClaimNames.Aud, tokenPermissions }
            },
                                             null,
                                             DateTime.UtcNow.AddHours(1),
                                             DateTime.UtcNow
                                             );
            var securityToken = new JwtSecurityToken(new JwtHeader(credentials), payload);
            var token         = new JwtSecurityTokenHandler().WriteToken(securityToken);

            return(new Dictionary <string, string>
            {
                { "Authorization", $"Bearer {token}" }
            });
        }
        public override void AuthenticateRequest(RestApiClient apiClient, Uri uri, HttpMethod method, Dictionary <string, object> providedParameters, bool auth, ArrayParametersSerialization arraySerialization, HttpMethodParameterPosition parameterPosition, out SortedDictionary <string, object> uriParameters, out SortedDictionary <string, object> bodyParameters, out Dictionary <string, string> headers)
        {
            uriParameters  = parameterPosition == HttpMethodParameterPosition.InUri ? new SortedDictionary <string, object>(providedParameters) : new SortedDictionary <string, object>();
            bodyParameters = parameterPosition == HttpMethodParameterPosition.InBody ? new SortedDictionary <string, object>(providedParameters) : new SortedDictionary <string, object>();
            headers        = new Dictionary <string, string>();

            if (!auth)
            {
                return;
            }

            // Auth requests are always POST
            if (uri.AbsolutePath.Contains("v1"))
            {
                bodyParameters.Add("request", uri.AbsolutePath);
                bodyParameters.Add("nonce", _nonceProvider.GetNonce().ToString());

                var signature  = JsonConvert.SerializeObject(bodyParameters);
                var payload    = Convert.ToBase64String(Encoding.ASCII.GetBytes(signature));
                var signedData = Sign(payload);

                headers.Add("X-BFX-APIKEY", Credentials.Key !.GetString());
                headers.Add("X-BFX-PAYLOAD", payload);
                headers.Add("X-BFX-SIGNATURE", signedData.ToLower(CultureInfo.InvariantCulture));
            }
            else if (uri.AbsolutePath.Contains("v2"))
            {
                var json       = JsonConvert.SerializeObject(bodyParameters);
                var n          = _nonceProvider.GetNonce().ToString();
                var signature  = $"/api{uri.AbsolutePath}{n}{json}";
                var signedData = SignHMACSHA384(signature);

                headers.Add("bfx-apikey", Credentials.Key !.GetString());
                headers.Add("bfx-nonce", n);
                headers.Add("bfx-signature", signedData.ToLower(CultureInfo.InvariantCulture));
            }
        }
예제 #6
0
        //Create hmac signature with secretKey as a key and sign request "method+timestamp+url+body"
        //Like as basic authorization add header "Authorization: HS256 " + base64(publicKey+":"+timestamp+":"+signature hex encoded)
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arrayParametersSerialization)
        {
            // var time = TimeStamp;

            //if (!signed)
            //    return new Dictionary<string, string>();
            //var result = new Dictionary<string, string>();
            //string additionalData = String.Empty;
            //if (parameters != null && parameters.Any() && method != HttpMethod.Delete && method != HttpMethod.Get)
            //{
            //    additionalData = JsonConvert.SerializeObject(parameters.ToDictionary(p => p.Key, p => p.Value));
            //}
            //var dataToSign = CreateAuthPayload(method, time, uri.Split(new[] { ".com" }, StringSplitOptions.None)[1],  additionalData);
            //var signedData = Sign(dataToSign);
            //var b64 = Base64Encode($"{Credentials.Key.GetString()}:{time}:{signedData}");
            //result.Add("Authorization", $"HS256 {b64}");
            //return result;
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            if (Credentials.Key == null)
            {
                throw new ArgumentException("ApiKey/Secret needed");
            }

            if (Credentials.Secret == null)
            {
                throw new ArgumentException("ApiKey/Secret needed");
            }

            var result = new Dictionary <string, string>();

            var encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(Credentials.Key.GetString() + ":" + Credentials.Secret.GetString()));

            result.Add("Authorization", "Basic " + encoded);

            return(result);
        }
예제 #7
0
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arrayParametersSerialization)
        {
            var apiexpires = ApiExpires;

            if (!signed)
            {
                return(new Dictionary <string, string>());
            }
            var result = new Dictionary <string, string>();

            result.Add("api-key", Credentials.Key.GetString());
            result.Add("api-expires", apiexpires.ToString(CultureInfo.InvariantCulture));

            string additionalData = String.Empty;

            if (parameters != null && parameters.Any() && method != HttpMethod.Get)
            {
                additionalData = JsonConvert.SerializeObject(parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value));
            }
            var dataToSign = CreateAuthPayload(method, uri.Split(new[] { ".com" }, StringSplitOptions.None)[1], apiexpires, additionalData);
            var signedData = Sign(dataToSign);

            result.Add("api-signature", signedData);
            return(result);
        }
        public Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition postParameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(parameters);
            }
            if (uri.Contains("v2"))
            {
                parameters.Add("access_key", Credentials.Key.GetString());
                var n = Nonce;
                parameters.Add("tonce", n);

                parameters = parameters.OrderBy(p => p.Key).ToDictionary(k => k.Key, v => v.Value);

                var paramString = parameters.CreateParamString(false, ArrayParametersSerialization.MultipleValues);
                var signData    = method + "|";
                signData += uri + "|";
                signData += paramString;
                byte[] signBytes;
                lock (encryptLock)
                    signBytes = encryptor.ComputeHash(Encoding.UTF8.GetBytes(signData));
                parameters.Add("signature", ByteArrayToString(signBytes));
            }

            return(parameters);
        }
        public override void AuthenticateRequest(RestApiClient apiClient, Uri uri, HttpMethod method, Dictionary <string, object> providedParameters, bool auth, ArrayParametersSerialization arraySerialization, HttpMethodParameterPosition parameterPosition, out SortedDictionary <string, object> uriParameters, out SortedDictionary <string, object> bodyParameters, out Dictionary <string, string> headers)
        {
            uriParameters  = parameterPosition == HttpMethodParameterPosition.InUri ? new SortedDictionary <string, object>(providedParameters) : new SortedDictionary <string, object>();
            bodyParameters = parameterPosition == HttpMethodParameterPosition.InBody ? new SortedDictionary <string, object>(providedParameters) : new SortedDictionary <string, object>();
            headers        = new Dictionary <string, string>();

            if (!auth)
            {
                return;
            }

            var parameters = parameterPosition == HttpMethodParameterPosition.InUri ? uriParameters: bodyParameters;

            parameters.Add("access_id", Credentials.Key !.GetString());
            parameters.Add("tonce", _nonceProvider.GetNonce());
            headers.Add("Authorization", SignMD5(uri.SetParameters(parameters).Query.Replace("?", "") + "&secret_key=" + Credentials.Secret !.GetString()));
        }
        public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(parameters);
            }

            parameters.Add("nonce", _nonceProvider.GetNonce());
            return(parameters);
        }
예제 #11
0
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            if (Credentials.Key == null)
            {
                throw new ArgumentException("ApiKey/Secret needed");
            }

            var result = new Dictionary <string, string>
            {
                ["KC-API-KEY"]        = Credentials.Key.GetString(),
                ["KC-API-TIMESTAMP"]  = Math.Round((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds).ToString(CultureInfo.InvariantCulture),
                ["KC-API-PASSPHRASE"] = ((KucoinApiCredentials)Credentials).PassPhrase.GetString()
            };

            var jsonContent = string.Empty;

            if (parameterPosition == HttpMethodParameterPosition.InBody)
            {
                jsonContent = JsonConvert.SerializeObject(parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value));
            }
            uri = uri.Substring(uri.IndexOf(".com", StringComparison.InvariantCulture) + 4);
            var signData = result["KC-API-TIMESTAMP"] + method + Uri.UnescapeDataString(uri) + jsonContent;

            result["KC-API-SIGN"] = Convert.ToBase64String(encryptor.ComputeHash(Encoding.UTF8.GetBytes(signData)));
            return(result);
        }
        public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(parameters);
            }

            if (!parameters.ContainsKey("request_id"))
            {
                parameters.Add("request_id", Nonce);
            }
            else
            {
                parameters["request_id"] = Nonce;
            }
            return(parameters);
        }
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arrayParametersSerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            var result = new Dictionary <string, string>();

            result.Add("login-token", Credentials.Key.GetString());
            // result.Add("X-Auth-Token", Credentials.Key.GetString());
            var dataToSign = CreateAuthPayload(parameters);
            var signedData = Sign(dataToSign);

            result.Add("x-auth-sign", signedData);
            return(result);
        }
 /// <summary>
 /// Add authentication to the header dictionary based on the provided credentials
 /// </summary>
 /// <param name="uri">The uri the request is for</param>
 /// <param name="method">The HTTP method of the request</param>
 /// <param name="parameters">The provided parameters for the request</param>
 /// <param name="signed">Wether or not the request needs to be signed. If not typically the parameters list can just be returned</param>
 /// <param name="parameterPosition">Where post parameters are placed, in the URI or in the request body</param>
 /// <param name="arraySerialization">How array parameters are serialized</param>
 /// <returns>Should return a dictionary containing any header key/value pairs needed for authenticating the request</returns>
 public virtual Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed,
                                                                       HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
 {
     return(new Dictionary <string, string>());
 }
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            if (Credentials.Key == null || Credentials.Secret == null)
            {
                throw new ArgumentException("No valid API credentials provided. Key/Secret needed.");
            }

            if (uri.Contains("/v1/"))
            {
                var    sign      = string.Empty;
                var    apiKey    = Credentials.Key.GetString();
                var    apiSecret = Credentials.Secret.GetString();
                var    nonce     = DateTime.UtcNow.ToUnixTimeMilliseconds();
                string message   = apiKey + nonce;
                using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String(apiSecret)))
                {
                    byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
                    sign = Convert.ToBase64String(signatureBytes);
                }

                return(new Dictionary <string, string> {
                    { "X-PCK", Credentials.Key.GetString() },
                    { "X-Stamp", nonce.ToString() },
                    { "X-Signature", sign },
                });
            }
            else if (uri.Contains("/v3/"))
            {
                return(new Dictionary <string, string>());
            }

            return(new Dictionary <string, string>());
        }
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition postParameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed && !signPublicRequests)
            {
                return(new Dictionary <string, string>());
            }

            if (Credentials == null || Credentials.Key == null || PassPhrase == null)
            {
                throw new ArgumentException("No valid API credentials provided. Key/Secret/PassPhrase needed.");
            }

            var time     = (DateTime.UtcNow.ToUnixTimeMilliSeconds() / 1000.0m).ToString(CultureInfo.InvariantCulture);
            var signtext = time + method.Method.ToUpper() + uri.Replace("https://www.okx.com", "").Trim('?');

            if (method == HttpMethod.Post)
            {
                if (parameters.Count == 1 && parameters.Keys.First() == OkexClient.BodyParameterKey)
                {
                    signtext += JsonConvert.SerializeObject(parameters[OkexClient.BodyParameterKey]);
                }
                else
                {
                    signtext += JsonConvert.SerializeObject(parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value));
                }
            }

            var signature        = Base64Encode(encryptor.ComputeHash(Encoding.UTF8.GetBytes(signtext)));
            var headerParameters = new Dictionary <string, string> {
                { "OK-ACCESS-KEY", Credentials.Key.GetString() },
                { "OK-ACCESS-SIGN", signature },
                { "OK-ACCESS-TIMESTAMP", time },
                { "OK-ACCESS-PASSPHRASE", PassPhrase.GetString() },
            };

            if (this.demoTradingService)
            {
                headerParameters.Add("x-simulated-trading", "1");
            }

            return(headerParameters);
        }
예제 #17
0
        public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(parameters);
            }

            string signData;

            if (parameterPosition == HttpMethodParameterPosition.InUri)
            {
                signData = parameters.CreateParamString(true, arraySerialization);
            }
            else
            {
                var formData = HttpUtility.ParseQueryString(string.Empty);
                foreach (var kvp in parameters.OrderBy(p => p.Key))
                {
                    if (kvp.Value.GetType().IsArray)
                    {
                        var array = (Array)kvp.Value;
                        foreach (var value in array)
                        {
                            formData.Add(kvp.Key, value.ToString());
                        }
                    }
                    else
                    {
                        formData.Add(kvp.Key, kvp.Value.ToString());
                    }
                }
                signData = formData.ToString();
            }

            lock (signLock)
                parameters.Add("signature", ByteToString(encryptor.ComputeHash(Encoding.UTF8.GetBytes(signData))));
            return(parameters);
        }
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            if (Credentials.Key == null)
            {
                throw new ArgumentException("ApiKey/Secret needed");
            }

            var nonce     = parameters.Single(n => n.Key == "nonce").Value;
            var paramList = parameters.OrderBy(o => o.Key != "nonce");
            var pars      = string.Join("&", paramList.Select(p => $"{p.Key}={p.Value}"));

            var result = new Dictionary <string, string> {
                { "API-Key", Credentials.Key.GetString() }
            };
            var np = nonce + pars;

            byte[] nonceParamsBytes;
            using (var sha = SHA256.Create())
                nonceParamsBytes = sha.ComputeHash(Encoding.UTF8.GetBytes(np));
            var pathBytes = Encoding.UTF8.GetBytes(uri.Split(new[] { ".com" }, StringSplitOptions.None)[1].Split('?')[0]);
            var allBytes  = pathBytes.Concat(nonceParamsBytes).ToArray();
            var sign      = encryptor.ComputeHash(allBytes);

            result.Add("API-Sign", Convert.ToBase64String(sign));
            return(result);
        }
예제 #19
0
        public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(parameters);
            }

            var query = parameters.CreateParamString(true, arraySerialization);

            parameters.Add("signature", ByteToString(encryptor.ComputeHash(Encoding.UTF8.GetBytes(query))).ToLower());

            return(parameters);
        }
예제 #20
0
 public void SetParameterPosition(HttpMethod method, HttpMethodParameterPosition position)
 {
     ParameterPositions[method] = position;
 }
예제 #21
0
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (Credentials.Key == null)
            {
                throw new ArgumentException("No valid API credentials provided. Key/Secret needed.");
            }

            return(new Dictionary <string, string> {
                { "X-BH-APIKEY", Credentials.Key.GetString() }
            });
        }
        public Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition postParameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed)
            {
                return(new Dictionary <string, string>());
            }

            var result = new Dictionary <string, string>();

            if (uri.Contains("v3"))
            {
                var json = JsonConvert.SerializeObject(parameters.OrderBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value));
                if (string.IsNullOrEmpty(json) && method == HttpMethod.Post)
                {
                    json = "{}";
                }
                var n          = Nonce;
                var signature  = $"{uri.Split(new[] { ".io" }, StringSplitOptions.None)[1]}{n}{json}";
                var signedData = SignV3(signature);

                result.Add("kun-apikey", Credentials.Key.GetString());
                result.Add("kun-nonce", n);
                result.Add("kun-signature", signedData.ToLower());
            }

            return(result);
        }
        public override Dictionary <string, string> AddAuthenticationToHeaders(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            var headers = new Dictionary <string, string>
            {
                { "user-agent", "ParibuApp/342 (Android 12)" },
                { "x-app-version", "342" },
            };

            // Check Point
            if (!signed)
            {
                return(headers);
            }

            // Authorization
            headers["Authorization"] = "Bearer " + AccessToken.GetString();

            // Return
            return(headers);
        }
예제 #24
0
        public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition parameterPosition, ArrayParametersSerialization arraySerialization)
        {
            if (!signed && !signPublicRequests)
            {
                return(parameters);
            }

            return(SignRequest(uri, method, parameters,
                               "AccessKeyId", "SignatureMethod", "SignatureVersion", "Timestamp", "Signature", 2));
        }
예제 #25
0
 public override Dictionary <string, object> AddAuthenticationToParameters(string uri, HttpMethod method, Dictionary <string, object> parameters, bool signed, HttpMethodParameterPosition postParameters, ArrayParametersSerialization arraySerialization)
 {
     return(base.AddAuthenticationToParameters(uri, method, parameters, signed, postParameters, arraySerialization));
 }