コード例 #1
0
        public ETradeClient(Stocks.OAuthToken consumerToken, bool productionMode = false, Stocks.OAuthToken accessToken = null)
        {
            _consumerToken = new ConsumerToken {
                Token = consumerToken.Token, TokenSecret = consumerToken.Secret
            };

            _consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = _consumerToken.Token,
                ConsumerSecret              = _consumerToken.TokenSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true,
                CallBack = "oob"
            };

            _session = new OAuthSession(_consumerContext, RequestUrl, AuthorizeUrl, AccessTokenUrl, RenewAccessTokenUrl);

            _productionMode = productionMode;

            if (accessToken != null)
            {
                _accessToken = new AccessToken {
                    Token = accessToken.Token, TokenSecret = accessToken.Secret
                };
            }
        }
コード例 #2
0
        public StocksRepository(Common.OAuthToken consumerToken, Common.OAuthToken accessToken = null, bool productionMode = false)
        {
            var cToken = new ConsumerToken {
                Token = consumerToken.Token, TokenSecret = consumerToken.Secret
            };
            var aToken = accessToken != null ? new AccessToken {
                Token = accessToken.Token, TokenSecret = accessToken.Secret
            } : null;

            _etradeClient = new ETradeClient(cToken, aToken, productionMode);
        }
コード例 #3
0
        public WebResponse Request(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders,
                                   byte[] requestBody, bool rawBody, CookieCollection cookieCollection, bool isPhoto)
        {
            var signer = new OAuthSigner();
            var additionalParameters = new NameValueCollection();

            WebRequest request = null;

            request = WebRequest.Create(this.ApiServerUri + resourcePath);


            if (httpMethod != HttpMethodType.GET)
            {
                if (rawBody)
                {
                    if (isPhoto)
                    {
                        request.ContentType = "image/jpg";
                    }
                    else
                    {
                        request.ContentType = "video/mpeg"; // f0r AVI video
                    }
                }
                else
                {
                    if (this.Scheme == AuthorizationSchemeType.Body)
                    {
                        request.ContentType = "application/" + OAuthConstants.X_WWW_FORM_URLENCODED;
                    }
                    else
                    {
                        request.ContentType = "application/" + OAuthConstants.X_WWW_FORM_URLENCODED;
                    }

                    if (requestBody != null && requestBody.Length > 0)
                    {
                        additionalParameters = HttpUtility.ParseQueryString(Encoding.UTF8.GetString(requestBody));
                    }
                }
            }

            request.Method = httpMethod.ToString();
            string oAuthQuerystring = null;

            request = signer.SignRequest(request, this, consumerToken, additionalParameters, out oAuthQuerystring);
            ((HttpWebRequest)request).Accept = "*/*";
            if (httpMethod == HttpMethodType.POST && !isPhoto && !string.IsNullOrEmpty(oAuthQuerystring))
            {
                requestBody = Encoding.ASCII.GetBytes(oAuthQuerystring);
            }
            return(RawRequest(request, requestHeaders, requestBody, cookieCollection));
        }
コード例 #4
0
        /// <summary>
        /// This method is meant for servers to validate incoming OAuth requests from MySpace typically made through an OpenSocial makeRequest call, or an iFrame src attribute. If the return value is true, it means that the signature contained in the request matches the actual request that was signed with the correct consumer secret for that consumer key.
        /// </summary>
        /// <param name="apiServerUri">Your server which is being requested by MySpace(e.g. http://localhost:9090/ or http://myserver.com/).</param>
        /// <param name="resourcePath">The relative path of the resource being requested.</param>
        /// <param name="httpRequest">The request</param>
        /// <param name="accessTokenSecret">The access token of the particular request. This will be empty for onsite apps and iFrame src attributes.</param>
        /// <returns>True if the signature in the request matches correctly.</returns>
        public bool ValidateSignature(string apiServerUri, string resourcePath, HttpRequest httpRequest, string accessTokenSecret)
        {
            OAuthParameter oAuthParameter = null;

            try
            {
                oAuthParameter = OAuthParameter.FromHttpContext(httpRequest.Headers, httpRequest.QueryString);
            }
            catch (ArgumentNullException)
            {
                var x = 1;
            }
            catch
            {
                var y = 2;
            }

            if (oAuthParameter == null)
            {
                //TODO: change to problem reporting
                throw new ArgumentException("no oauth parameters found");
            }

            if (oAuthParameter.HasError)
            {
                return(false);
            }

            var oAuthSigner         = new OAuthSigner();
            var signatureMethodType = GeneralUtil.StringToSignatureMethodType(oAuthParameter.SignatureMethod);
            var signatureMethod     = oAuthSigner.GetSignatureMethod(signatureMethodType);

            signatureMethod.RequestParameters.Add(oAuthParameter.ToCollection());
            signatureMethod.RequestParameters.Add(oAuthParameter.UnknownParameterCollection);

            //if (string.IsNullOrEmpty(oAuthParameter.Token))
            //{
            //    signatureMethod.RequestParameters.Add(OAuthParameter.OAUTH_TOKEN, string.Empty);
            //}

            var request = WebRequest.Create(apiServerUri + resourcePath);

            request.Method = httpRequest.HttpMethod;

            var consumer  = new OAuthConsumer(apiServerUri, oAuthParameter.ConsumerKey, consumerSecret);
            var token     = new ConsumerToken(consumer, oAuthParameter.Token, accessTokenSecret);
            var signature = signatureMethod.BuildSignature(request, consumer, token);

            return(oAuthParameter.Signature == signature);
        }
コード例 #5
0
        public ETradeClient(ConsumerToken consumerToken, AccessToken accessToken = null, bool productionMode = false)
        {
            _consumerToken = consumerToken;

            _consumerContext = new OAuthConsumerContext
            {
                ConsumerKey                 = consumerToken.Token,
                ConsumerSecret              = consumerToken.TokenSecret,
                SignatureMethod             = SignatureMethod.HmacSha1,
                UseHeaderForOAuthParameters = true,
                CallBack = "oob"
            };

            _session = new OAuthSession(_consumerContext, RequestUrl, AuthorizeUrl, AccessUrl);

            _productionMode = productionMode;
            _accessToken    = accessToken;
        }
コード例 #6
0
 public ConsumerPage(ConsumerToken ct)
 {
     InitializeComponent();
     DataContext = ct;
 }
コード例 #7
0
        public WebResponse RawRequest(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders, byte[] requestBody)
        {
            if (string.IsNullOrEmpty(resourcePath))
            {
                throw new ArgumentNullException("resourcePath");
            }

            var request = (HttpWebRequest)WebRequest.Create(this.ApiServerUri + resourcePath);

            request.Method = httpMethod.ToString();
            return(RawRequest(request, requestHeaders, requestBody));
        }
コード例 #8
0
 public WebResponse RawRequest(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders)
 {
     return(this.RawRequest(httpMethod, resourcePath, consumerToken, requestHeaders, null));
 }
コード例 #9
0
 public WebResponse RawRequest(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken)
 {
     return(this.RawRequest(httpMethod, resourcePath, consumerToken, null, null));
 }
コード例 #10
0
        public WebResponse Request(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders,
                                   byte[] requestBody, bool rawBody, CookieCollection cookieCollection, bool isPhoto)
        {
            var signer = new OAuthSigner();
            var additionalParameters = new NameValueCollection();

            WebRequest request = null;

            if (resourcePath.StartsWith("/v1/"))
            {
                request = WebRequest.Create(Constants.MYSPACE_API_SERVER + resourcePath);
            }
            else if (resourcePath.StartsWith("/v2/"))
            {
                request = WebRequest.Create(Constants.MYSPACE_API_SERVER + resourcePath);
                //
            }
            else if (resourcePath.StartsWith("/roa/"))
            {
                request = WebRequest.Create(Constants.MYSPACE_ROA_SERVER + resourcePath);
            }
            else
            {
                request = WebRequest.Create(this.ApiServerUri + resourcePath);
            }

            if (httpMethod != HttpMethodType.GET)
            {
                if (rawBody)
                {
                    if (isPhoto)
                    {
                        request.ContentType = "image/jpg";
                    }
                    else
                    {
                        request.ContentType = "video/mpeg"; // f0r AVI video
                    }
                }
                else
                {
                    if (this.Scheme == AuthorizationSchemeType.Body)
                    {
                        request.ContentType = "application/" + OAuthConstants.X_WWW_FORM_URLENCODED;
                    }
                    else
                    {
                        //TODO: fix this on the server
                        request.ContentType = "application/json";//OAuthConstants.X_WWW_FORM_URLENCODED;
                    }

                    if (requestBody != null && requestBody.Length > 0)
                    {
                        additionalParameters = HttpUtility.ParseQueryString(Encoding.UTF8.GetString(requestBody));
                    }
                }
            }

            request.Method = httpMethod.ToString();
            request        = signer.SignRequest(request, this, consumerToken, additionalParameters);
            ((HttpWebRequest)request).Accept = "*/*";
            return(RawRequest(request, requestHeaders, requestBody, cookieCollection));
        }
コード例 #11
0
 public WebResponse Request(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders,
                            byte[] requestBody, bool rawBody, CookieCollection cookieCollection)
 {
     return(Request(httpMethod, resourcePath, consumerToken, requestHeaders, requestBody, false, cookieCollection, false));
 }
コード例 #12
0
 public WebResponse Request(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders, byte[] requestBody)
 {
     return(Request(httpMethod, resourcePath, consumerToken, requestHeaders, requestBody, null));
 }
コード例 #13
0
        public OAuthToken TokenRequest(HttpMethodType httpMethod, string resourcePath, ConsumerToken consumerToken, WebHeaderCollection requestHeaders)
        {
            var response = (HttpWebResponse)this.Request(httpMethod, resourcePath, consumerToken, requestHeaders, null, null);

            var streamReader = new StreamReader(response.GetResponseStream());
            var responseBody = streamReader.ReadToEnd();

            switch (response.StatusCode)
            {
            case HttpStatusCode.OK:
                return(ParseTokenResponse(responseBody));

            default:
                throw new Exception(string.Format("{0} - {1}", response.StatusCode, responseBody));
            }
        }
コード例 #14
0
ファイル: ConsumerPage.xaml.cs プロジェクト: kb10uy/Kbtter3
 public ConsumerPage(ConsumerToken ct)
 {
     InitializeComponent();
     DataContext = ct;
 }