Ejemplo n.º 1
0
    private void GetUnauthorizedRequestToken(OAuthParameters parameters)
    {
        String requestTokenUrl = "https://www.google.com/accounts/OAuthGetRequestToken";
        Uri    requestUri      = new Uri(string.Format("{0}?scope={1}", requestTokenUrl, OAuthBase.EncodingPerRFC3986(parameters.Scope)));
        // callback is only needed when getting the request token
        bool callbackExists = false;

        if (!string.IsNullOrEmpty(parameters.Callback))
        {
            parameters.BaseProperties.Add(OAuthBase.OAuthCallbackKey, parameters.Callback);
            callbackExists = true;
        }
        string headers = OAuthUtil.GenerateHeader(requestUri, "GET", parameters);

        System.Net.WebRequest request = System.Net.WebRequest.Create(requestUri);
        request.Headers.Add(headers);
        System.Net.WebResponse response = request.GetResponse();
        string result = "";

        if (response != null)
        {
            System.IO.Stream       responseStream = response.GetResponseStream();
            System.IO.StreamReader reader         = new System.IO.StreamReader(responseStream);
            result = reader.ReadToEnd();
        }
        if (callbackExists)
        {
            parameters.BaseProperties.Remove(OAuthBase.OAuthCallbackKey);
        }
        // split results and update parameters
        SortedDictionary <string, string> responseValues = OAuthBase.GetQueryParameters(result);

        parameters.Token       = responseValues[OAuthBase.OAuthTokenKey];
        parameters.TokenSecret = responseValues[OAuthBase.OAuthTokenSecretKey];
    }
Ejemplo n.º 2
0
        public override void ApplyAuthenticationToRequest(HttpWebRequest request)
        {
            base.ApplyAuthenticationToRequest(request);
            string userAgent = "Semantics3 C# Lib/1.0.0.24";
            string header    = OAuthUtil.GenerateHeader(request.RequestUri, ConsumerKey, ConsumerSecret, null, null, request.Method);

            request.Headers.Add(header);
            request.UserAgent = userAgent;
        }
Ejemplo n.º 3
0
        protected T SendRequest <T>(object data)
        {
            // build the uri
            var actionUrl = GetAction();

            requestUrl = new Uri(string.Concat(BaseUrl, actionUrl));

            WebRequest req = WebRequest.Create(requestUrl);

            req.Method      = method;
            req.ContentType = "text/xml; charset=utf-8";

            if (data != null)
            {
                var serializer = new XmlSerializer(data.GetType());

                var ms = new MemoryStream();
                serializer.Serialize(ms, data);
                ms.Seek(0, SeekOrigin.Begin);

                using (var sr = new StreamReader(ms))
                {
                    var content = sr.ReadToEnd();
                }

                serializer.Serialize(req.GetRequestStream(), data);
            }
            else
            {
                req.ContentLength = 0;
            }

            req.Headers.Add(OAuthUtil.GenerateHeader(requestUrl, OAuthClient.OAUTH_TRADEME_CONSUMER_KEY, OAuthClient.OAUTH_TRADEME_CONSUMER_SECRET, oauth_key, oauth_secret, method));

            WebResponse resp;

            try
            {
                resp = req.GetResponse();

                var serializer = new XmlSerializer(typeof(T), "http://api.trademe.co.nz/v1");
                return((T)serializer.Deserialize(resp.GetResponseStream()));
            }
            catch (WebException ex)
            {
                resp = ex.Response;
                if (resp != null)
                {
                    using (var sr = new StreamReader(resp.GetResponseStream()))
                    {
                        resp_error = sr.ReadToEnd();

                        Syslog.Write("Trademe Error: " + requestUrl + " " + resp_error);
                    }
                }
            }
            catch (Exception ex)
            {
                Syslog.Write(string.Format("{0}:{1}", ex.Message, resp_json));
            }

            return(default(T));
        }
Ejemplo n.º 4
0
        public ActionResult TestTrademe()
        {
            var    file      = System.IO.File.OpenRead("D:\\code\\tradelr\\bajula\\bajula\\Uploads\\trademephotoupload.txt");
            string xmlToSend = "";

            using (var sr = new StreamReader(file))
            {
                //xmlToSend = sr.ReadToEnd();
            }

            var oauth = repository.GetOAuthToken(subdomainid.Value, OAuthTokenType.TRADEME, true);


            var requestUrl = "https://api.tmsandbox.co.nz/v1/MyTradeMe/Watchlist/All.XML";

            var webRequest = WebRequest.Create(requestUrl) as HttpWebRequest;

            webRequest.Method      = "GET";
            webRequest.ContentType = "text/xml";

            if (string.IsNullOrEmpty(xmlToSend))
            {
                webRequest.ContentLength = 0;
            }
            else
            {
                byte[] dataAsBytes = (new UTF8Encoding()).GetBytes(xmlToSend);
                webRequest.ContentLength = dataAsBytes.Length;

                using (var newStream = webRequest.GetRequestStream())
                {
                    // Send the data.
                    newStream.Write(dataAsBytes, 0, dataAsBytes.Length);
                    newStream.Close();
                }
            }

            var oauthheader = OAuthUtil.GenerateHeader(new Uri(requestUrl), OAuthClient.OAUTH_TRADEME_CONSUMER_KEY,
                                                       OAuthClient.OAUTH_TRADEME_CONSUMER_SECRET, oauth.token_key,
                                                       oauth.token_secret, webRequest.Method);

            webRequest.Headers.Add(oauthheader);

            WebResponse resp;

            try
            {
                resp = webRequest.GetResponse();

                var serializer = new XmlSerializer(typeof(PhotoResponse), "http://api.tmsandbox.co.nz/v1");
                var obj        = (PhotoResponse)serializer.Deserialize(resp.GetResponseStream());
            }
            catch (WebException ex)
            {
                resp = ex.Response;
                if (resp != null)
                {
                    using (var sr = new StreamReader(resp.GetResponseStream()))
                    {
                        var resp_error = sr.ReadToEnd();
                        Syslog.Write(resp_error);
                    }
                }
            }

            return(Content("done"));
        }
Ejemplo n.º 5
0
        protected ResponseData <T> SendRequest <T>(Parameters prms = null, bool isMultiPart = false)
        {
            parameters = prms ?? new Parameters();

            // build the uri
            var actionUrl = GetAction(URI);

            WebRequest req;

            if (method == "POST" || method == "PUT" || method == "DELETE")
            {
                requestUrl = new Uri(string.Concat(Constants.BaseUrl, actionUrl));
                if (isMultiPart)
                {
                    string boundary      = "---------------------------" + DateTime.Now.Ticks.ToString("x");
                    byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

                    req             = WebRequest.Create(requestUrl);
                    req.ContentType = "multipart/form-data; boundary=" + boundary;
                    req.Method      = "POST";

                    Stream rs = req.GetRequestStream();

                    const string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                    foreach (string key in parameters.parameters.Keys)
                    {
                        rs.Write(boundarybytes, 0, boundarybytes.Length);
                        string formitem      = string.Format(formdataTemplate, key, parameters.parameters[key]);
                        byte[] formitembytes = Encoding.UTF8.GetBytes(formitem);
                        rs.Write(formitembytes, 0, formitembytes.Length);
                    }
                    rs.Write(boundarybytes, 0, boundarybytes.Length);

                    const string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
                    string       header         = string.Format(headerTemplate, "image", DateTime.UtcNow.Ticks, "multipart/form-data");
                    byte[]       headerbytes    = Encoding.UTF8.GetBytes(header);
                    rs.Write(headerbytes, 0, headerbytes.Length);

                    var    fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                    byte[] buffer     = new byte[4096];
                    int    bytesRead  = 0;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        rs.Write(buffer, 0, bytesRead);
                    }
                    fileStream.Close();

                    byte[] trailer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                    rs.Write(trailer, 0, trailer.Length);
                    rs.Close();
                }
                else
                {
                    req        = WebRequest.Create(requestUrl);
                    req.Method = method;
                    using (var sw = new StreamWriter(req.GetRequestStream()))
                    {
                        sw.Write(parameters.ToQueryString().Substring(1)); // skips the ?
                    }
                }
            }
            else
            {
                requestUrl = new Uri(string.Concat(Constants.BaseUrl, actionUrl, parameters.ToQueryString()));
                req        = WebRequest.Create(requestUrl);
                req.Method = "GET";
            }

            if (isPrivate)
            {
                if (!string.IsNullOrEmpty(info.oauth_key) && !string.IsNullOrEmpty(info.oauth_secret))
                {
                    req.Headers.Add(OAuthUtil.GenerateHeader(requestUrl, Constants.ApplicationKey, Constants.ApplicationSecret, info.oauth_key, info.oauth_secret, method));
                }
                else
                {
                    throw new AuthenticationException("etsy not authenticated: " + requestUrl);
                }
            }

            string      jsonString = "";
            WebResponse resp;

            try
            {
                resp = req.GetResponse();

                using (var sr = new StreamReader(resp.GetResponseStream()))
                {
                    jsonString = sr.ReadToEnd();
                }

                if (!string.IsNullOrEmpty(jsonString))
                {
                    return(serializer.Deserialize <ResponseData <T> >(jsonString));
                }
            }
            catch (WebException ex)
            {
                resp = ex.Response;
                if (resp != null)
                {
                    using (var sr = new StreamReader(resp.GetResponseStream()))
                    {
                        var error = sr.ReadToEnd();
                        Syslog.Write("Etsy Error: " + requestUrl + " " + error);
                    }
                }
            }
            catch (Exception ex)
            {
                Syslog.Write(string.Format("{0}:{1}", ex.Message, jsonString));
            }

            return(null);
        }