public void TestAPIActionExecute()
        {
            string clientToken = "clientToken";
            string accessToken = "accessToken";
            string secret      = "secret-shh";
            var    credential  = new ClientCredential(clientToken, accessToken, secret);

            var    signer          = new EdgeGridV1Signer();
            string TestURIProtocol = "asdf";

            WebRequest.RegisterPrefix(TestURIProtocol, new WebRequestTestCreate());
            var request = (HttpWebRequestTest)WebRequest.Create("asdf://www.example.com/");

            var response = request.CreateResponse(HttpStatusCode.OK);

            request.NextResponse = response;

            Assert.AreSame(signer.Execute(request, credential), response.GetResponseStream());
            Assert.AreEqual(request.Method, "GET");
            Assert.AreEqual(request.Headers.Count, 1);

            request.Method = "PUT";
            signer.Execute(request, credential);
            Assert.AreEqual(request.ContentLength, 0);

            request.Method = "POST";
            var data         = "Lorem ipsum dolor sit amet, an sea putant quaeque, homero aperiam te eos.".ToByteArray();
            var uploadStream = new MemoryStream(data);

            signer.Execute(request, credential, uploadStream);
            Assert.AreEqual(request.ContentLength, 73);
            CollectionAssert.AreEqual(request.RequestStream.ToArray(), data);
        }
Ejemplo n.º 2
0
        public static string GetAllStreams()
        {
            /*
             * /config-media-live/v1/live/{domainName}/stream
             * /config-media-live/v1/live/{domainName}/stream/{streamID}
             */
            var accessToken = ConfigurationManager.AppSettings["akamaiAccessToken"];
            var clientToken = ConfigurationManager.AppSettings["akamaiClientToken"];
            var secret      = ConfigurationManager.AppSettings["akamaiSecret"];
            var signer      = new EdgeGridV1Signer();
            var credential  = new ClientCredential(clientToken, accessToken, secret);
            var uri         = new Uri(ConfigurationManager.AppSettings["akamaiBaseUrl"]);
            var request     = WebRequest.Create(uri);

            signer.Sign(request, credential);
            using (var result = signer.Execute(request, credential))
            {
                using (result)
                {
                    using (var reader = new StreamReader(result))
                    {
                        return(reader.ReadToEnd());
                    }
                }
            }
        }
        public void TestAPIActionValidateDateDrift()
        {
            string TestURIProtocol = "asdf";

            WebRequest.RegisterPrefix(TestURIProtocol, new WebRequestTestCreate());
            var request = (HttpWebRequestTest)WebRequest.Create("asdf://www.example.com/");


            var signer   = new EdgeGridV1Signer();
            var response = request.CreateResponse(HttpStatusCode.ServiceUnavailable, "Server Unavailable");

            var currentDate = DateTime.UtcNow.AddMinutes(-2);
            var headers     = new WebHeaderCollection {
                { "Date", currentDate.ToString("r") }
            };

            response = request.CreateResponse(HttpStatusCode.ServiceUnavailable, "Server Unavailable", headers);
            try
            {
                signer.Validate(response);
            }
            catch (Exception ex)
            {
                Assert.AreEqual(ex.Message, "Local server Date is more than 30s out of sync with Remote server");
                throw ex;
            }
        }
        public void GetRequestDataTest()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer(new List <string>()
            {
                "name1"
            });

            Assert.AreEqual("GET\thttp\twww.example.com\t/\t\t\t", signer.GetRequestData("GET", new Uri("http://www.example.com")));
            Assert.AreEqual("GET\thttp\twww.example.com\t/path.ext?name=value\t\t\t", signer.GetRequestData("GET", new Uri("http://www.example.com/path.ext?name=value")));

            var headers = new NameValueCollection()
            {
                { "name1", "value1" }
            };

            Assert.AreEqual("GET\thttp\twww.example.com\t/path.ext?name=value\tname1:value1\t\t\t",
                            signer.GetRequestData("GET", new Uri("http://www.example.com/path.ext?name=value"), headers));


            var data   = "Lorem ipsum dolor sit amet, an sea putant quaeque, homero aperiam te eos.".ToByteArray();
            var stream = new MemoryStream(data);

            Assert.AreEqual("GET\thttp\twww.example.com\t/path.ext?name=value\tname1:value1\t\t\t",
                            signer.GetRequestData("GET", new Uri("http://www.example.com/path.ext?name=value"), headers, stream));

            Assert.AreEqual("POST\thttp\twww.example.com\t/path.ext?name=value\tname1:value1\t\tTors1txMl65Vww75sekbSCnvWHGxYmK0Yog4qA3AwuI=\t",
                            signer.GetRequestData("POST", new Uri("http://www.example.com/path.ext?name=value"), headers, stream));
        }
        public void GetRequestDataTest_NullMethod()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer(new List <string>()
            {
                "name1"
            });

            signer.GetRequestData(null, new Uri("http://www.example.com/path.ext?name=value"));
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            string host         = "";
            string clientToken  = "";
            string accessToken  = "";
            string clientSecret = "";

            try
            {
                // Form the request
                ServicePointManager.Expect100Continue = false;

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host + "/ccu/v2/queues/default");
                request.Method = "POST";


                string postData = string.Empty;

                byte[] byteArray = Encoding.Default.GetBytes(postData);
                request.ContentType   = "application/json";
                request.ContentLength = byteArray.Length;

                // Sign the request
                using (Stream bodyStream = new MemoryStream(byteArray))
                {
                    EdgeGridV1Signer signer     = new EdgeGridV1Signer();
                    ClientCredential credential = new ClientCredential(clientToken, accessToken, clientSecret);
                    signer.Sign(request, credential, bodyStream);
                }

                // Write the payload
                using (Stream dataStream = request.GetRequestStream())
                {
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();
                }

                // Get the response
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
                    {
                        Trace.TraceError("Error flushing Akamai cache {0} {1}", response.StatusDescription, postData);
                    }
                    else
                    {
                        Trace.TraceInformation("Successfully flushed " + postData);
                    }

                    response.Close();
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.Message);
            }
        }
        public void ConstructorDefualtTest()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            Assert.AreEqual(signer.SignVersion, EdgeGridV1Signer.SignType.HMACSHA256);
            Assert.AreEqual(signer.HashVersion, EdgeGridV1Signer.HashType.SHA256);
            Assert.IsNotNull(signer.HeadersToInclude);
            Assert.AreEqual(signer.HeadersToInclude.Count, 0);
            Assert.AreEqual(signer.MaxBodyHashSize, 2048);
        }
        public void GetRequestStreamHashTest_NonSeakingStream()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            var data = "Lorem ipsum dolor sit amet, an sea putant quaeque, homero aperiam te eos.".ToByteArray();

            var stream = new NonSeekMemoryStream(data);

            signer.GetRequestStreamHash(stream);
        }
        public void GetRequestStreamHashMaxSizeTest()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer(null, 50);

            Assert.AreEqual(String.Empty, signer.GetRequestStreamHash(null));

            var data   = "Lorem ipsum dolor sit amet, an sea putant quaeque, homero aperiam te eos.".ToByteArray();
            var stream = new MemoryStream(data);

            Assert.AreEqual("IHJu55sckdViGcpD7CpUttVSzYoy/DiTQsmy7jrzoMU=", signer.GetRequestStreamHash(stream));
            Assert.AreEqual(stream.Position, 0);
        }
        public void GetRequestStreamHashTest()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            Assert.AreEqual(String.Empty, signer.GetRequestStreamHash(null));

            var data   = "Lorem ipsum dolor sit amet, an sea putant quaeque, homero aperiam te eos.".ToByteArray();
            var stream = new MemoryStream(data);

            Assert.AreEqual("Tors1txMl65Vww75sekbSCnvWHGxYmK0Yog4qA3AwuI=", signer.GetRequestStreamHash(stream));
            Assert.AreEqual(stream.Position, 0);
        }
        public void ConstructorTest()
        {
            List <string> headers = new List <string>()
            {
                "test"
            };
            EdgeGridV1Signer signer = new EdgeGridV1Signer(headers, 100);

            Assert.AreEqual(signer.HeadersToInclude.Count, 1);
            Assert.IsTrue(signer.HeadersToInclude.Contains("test"));
            Assert.AreEqual(signer.MaxBodyHashSize, 100);
        }
        public void TestAPIActionValidateOK()
        {
            string TestURIProtocol = "asdf";

            WebRequest.RegisterPrefix(TestURIProtocol, new WebRequestTestCreate());
            var request = (HttpWebRequestTest)WebRequest.Create("asdf://www.example.com/");


            var signer   = new EdgeGridV1Signer();
            var response = request.CreateResponse();

            signer.Validate(response);
        }
        public void GetAuthDataValueTest()
        {
            string   clientToken = "client-token-abc";
            string   accessToken = "access-token-def";
            string   secret      = "secret-shh";
            DateTime timestamp   = new DateTime(1918, 11, 11, 11, 00, 00, DateTimeKind.Utc);


            EdgeGridV1Signer signer     = new EdgeGridV1Signer();
            ClientCredential credential = new ClientCredential(clientToken, accessToken, secret);

            string authData = signer.GetAuthDataValue(credential, timestamp);

            Assert.IsTrue(Regex.IsMatch(authData, "EG1-HMAC-SHA256 client_token=client-token-abc;access_token=access-token-def;timestamp=19181111T11:00:00\\+0000;nonce=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12};"));
        }
        public void TestAPIActionValidateUnavailable()
        {
            string TestURIProtocol = "asdf";

            WebRequest.RegisterPrefix(TestURIProtocol, new WebRequestTestCreate());
            var request = (HttpWebRequestTest)WebRequest.Create("asdf://www.example.com/");


            var signer   = new EdgeGridV1Signer();
            var response = request.CreateResponse(HttpStatusCode.ServiceUnavailable, "Server Unavailable");

            var currentDate = DateTime.UtcNow;
            var headers     = new WebHeaderCollection {
                { "Date", currentDate.ToString("r") }
            };

            response = request.CreateResponse(HttpStatusCode.ServiceUnavailable, "Server Unavailable", headers);
            signer.Validate(response);
        }
        public void GetAuthorizationHeaderValueTest()
        {
            string   clientToken = "akaa-275ca6de04b11b91-cf46074bf3b52950";
            string   accessToken = "akaa-d6cfbdb2d0594ae4-ad000cf3a5473a08";
            string   secret      = "secret-shh";
            DateTime timestamp   = new DateTime(1918, 11, 11, 11, 00, 00, DateTimeKind.Utc);

            EdgeGridV1Signer signer     = new EdgeGridV1Signer();
            ClientCredential credential = new ClientCredential(clientToken, accessToken, secret);

            Assert.AreEqual("auth-datasignature=c5ZV4+bUosZjISLUvr6kakI3djQoLo6CaAD0IaVbNDg=", signer.GetAuthorizationHeaderValue(credential, timestamp, "auth-data", null));
            Assert.AreEqual("auth-datasignature=LNWyXpxHlp4GYfD+biysQmSCZPmoucvWze2p/beX4O8=", signer.GetAuthorizationHeaderValue(credential, timestamp, "auth-data", "body-data"));

            //putting it all together
            string authData = "Authorization: EG1-HMAC-SHA256 client_token=akaa-275ca6de04b11b91-cf46074bf3b52950;access_token=akaa-d6cfbdb2d0594ae4-ad000cf3a5473a08;timestamp=19181111T11:00:00Z;nonce=dd9957e2-4fe5-48ca-8d32-16a772ac6d8f;";
            string authBody = "GET\thttp\twww.example.com\t/\t\t\t";

            Assert.AreEqual(string.Format("{0}signature=0iSbrT0ze1uDfJdodKOevZSSjYkXllt6VlLSghOiWtY=", authData), signer.GetAuthorizationHeaderValue(credential, timestamp, authData, authBody));
            //Assert.Catch<ArgumentNullException>(delegate { signer.GetAuthorizationHeaderValue(credential, null, authData, authBody); });
        }
        public void SignTest()
        {
            string           clientToken = "clientToken";
            string           accessToken = "accessToken";
            string           secret      = "secret-shh";
            ClientCredential credential  = new ClientCredential(clientToken, accessToken, secret);

            //DateTime timestamp = new DateTime(1918, 11, 11, 11, 00, 00, DateTimeKind.Utc);
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            Uri uri = new Uri("http://www.example.com/");

            HttpWebRequestTest request = new HttpWebRequestTest(uri);

            signer.Sign(request, credential);

            Assert.AreEqual(request.Headers.Count, 1);
            Assert.IsNotNull(request.Headers.Get("Authorization"));

            Assert.IsTrue(Regex.IsMatch(request.Headers.Get("Authorization"),
                                        @"EG1-HMAC-SHA256 client_token=clientToken;access_token=accessToken;timestamp=\d{8}T\d\d:\d\d:\d\d\+0000;nonce=[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12};signature=[A-Za-z0-9/+]{43}="));
        }
        public void GetRequestHeaders()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer(new List <string>()
            {
                "x-a", "x-b", "x-c"
            });

            Assert.AreEqual(String.Empty, signer.GetRequestHeaders(null));

            var headers = new NameValueCollection()
            {
            };

            Assert.AreEqual(String.Empty, signer.GetRequestHeaders(null));

            headers = new NameValueCollection()
            {
                { "name2", "value2" }
            };
            Assert.AreEqual(String.Empty, signer.GetRequestHeaders(null));

            headers = new NameValueCollection()
            {
                { "x-a", "value1" },
                { "name2", "value2" }
            };
            Assert.AreEqual("x-a:value1\t", signer.GetRequestHeaders(headers));

            headers = new NameValueCollection()
            {
                { "x-a", "va" },
                { "x-c", "\"     xc        \"" },
                { "x-b", "   w         b" }
            };
            Assert.AreEqual("x-a:va\tx-b:w b\tx-c:\" xc \"\t", signer.GetRequestHeaders(headers));
        }
        static void execute(string httpMethod, string apiurl, List <string> headers, string clientToken, string accessToken, string secret, string data, string uploadfile, string outputfile, int?maxBodySize, string contentType, bool verbose = false)
        {
            if (apiurl == null || clientToken == null || accessToken == null || secret == null)
            {
                help();
                return;
            }

            EdgeGridV1Signer signer     = new EdgeGridV1Signer(null, maxBodySize);
            ClientCredential credential = new ClientCredential(clientToken, accessToken, secret);

            Stream uploadStream = null;

            if (uploadfile != null)
            {
                uploadStream = new FileInfo(uploadfile).OpenRead();
            }
            else if (data != null)
            {
                uploadStream = new MemoryStream(data.ToByteArray());
            }

            var uri     = new Uri(apiurl);
            var request = WebRequest.Create(uri);

            foreach (string header in headers)
            {
                request.Headers.Add(header);
            }
            request.Method = httpMethod;

            Stream output = Console.OpenStandardOutput();

            if (outputfile != null)
            {
                output = new FileInfo(outputfile).OpenWrite();
            }

            if (verbose)
            {
                signer.Sign(request, credential, uploadStream);
                Console.WriteLine("Authorization: {0}", request.Headers.Get("Authorization"));
                Console.WriteLine();
            }

            using (var result = signer.Execute(request, credential, uploadStream))
            {
                using (output)
                {
                    using (result)
                    {
                        byte[] buffer    = new byte[1024 * 1024];
                        int    bytesRead = 0;

                        while ((bytesRead = result.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            output.Write(buffer, 0, bytesRead);
                        }
                    }
                }
            }
        }
        public void GetRequestStreamHashTest_NullStream()
        {
            EdgeGridV1Signer signer = new EdgeGridV1Signer();

            Assert.AreEqual(signer.GetRequestStreamHash(null), "");
        }