public OutputModel sendApiRequest(Dictionary <object, object> context, RequestInputModel paramBean, Type outputClass)
        {
            string validate = paramBean != null?paramBean.validateParam() : "";

            EvnContext evnContext  = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            string     evnValidate = evnContext.validateParam();

            if (!QSStringUtil.isEmpty(validate) || !QSStringUtil.isEmpty(evnValidate))
            {
                if (QSStringUtil.isEmpty(validate))
                {
                    validate = evnValidate;
                }
                try
                {
                    OutputModel model = (OutputModel)Activator.CreateInstance(outputClass);
                    QSHttpRequestClient.fillResponseCallbackModel(QSConstant.REQUEST_ERROR_CODE, validate, model);
                    return(model);
                }
                catch (Exception e)
                {
                    logger.Fatal(e.Message);
                    throw new QSException(e.Message);
                }
            }
            else
            {
                HttpWebRequest request = buildRequest(context, paramBean);
                return(QSHttpRequestClient.getInstance().requestAction(request, evnContext.isSafeOkHttp(), outputClass));
            }
        }
        public void qcstorGetObject()
        {
            EvnContext evn        = EvnContext.loadFromFile(System.Environment.CurrentDirectory + "/tmp/test_key.csv");
            String     bucketName = "java-bucket";
            Bucket     ss         = new Bucket(evn, bucketName);
            String     objectName = "2.txt";

            Bucket.GetObjectInput bb = new Bucket.GetObjectInput();

            //bb.setIfMatch("cda0a741aac6541c730ed6be6c6f5bcc");
            Bucket.GetObjectOutput dd = ss.getObject(objectName, bb);
            Console.WriteLine(dd + "");

            if (dd != null && dd.getBodyInputStream() != null)
            {
                FileStream   ff = new FileStream("D:\\5.txt", FileMode.OpenOrCreate);
                StreamWriter os = new StreamWriter(ff);
                string       buffer;
                while ((buffer = dd.getBodyInputStream().ReadLine()) != null)
                {
                    os.WriteLine(buffer);
                }
                os.Flush();
                os.Close();
                ff.Close();
                dd.getBodyInputStream().Close();
            }
        }
        public void sendApiRequestAsync(
            Dictionary <object, object> context, RequestInputModel paramBean, ResponseCallBack callback)
        {
            string validate = paramBean != null?paramBean.validateParam() : "";

            EvnContext evnContext  = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            string     evnValidate = evnContext.validateParam();

            if (!QSStringUtil.isEmpty(validate) || !QSStringUtil.isEmpty(evnValidate))
            {
                if (QSStringUtil.isEmpty(validate))
                {
                    validate = evnValidate;
                }
                OutputModel Out = QSParamInvokeUtil.getOutputModel(callback);
                QSHttpRequestClient.fillResponseCallbackModel(QSConstant.REQUEST_ERROR_CODE, validate, Out);
                callback.onAPIResponse(Out);
            }
            else
            {
                HttpWebRequest request = buildRequest(context, paramBean);
                QSHttpRequestClient.getInstance()
                .requestActionAsync(request, evnContext.isSafeOkHttp(), callback);
            }
        }
Beispiel #4
0
        public static String getExpireAuth(Dictionary <object, object> context, int expiresSecond, RequestInputModel Params)
        {
            EvnContext evnContext = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];

            Dictionary <object, object> paramsQuery   = QSParamInvokeUtil.getRequestParams(Params, QSConstant.PARAM_TYPE_QUERY);
            Dictionary <object, object> paramsHeaders = QSParamInvokeUtil.getRequestParams(Params, QSConstant.PARAM_TYPE_HEADER);

            paramsHeaders.Remove(QSConstant.HEADER_PARAM_KEY_DATE);
            paramsHeaders.Clear();
            paramsHeaders.Add(QSConstant.HEADER_PARAM_KEY_EXPIRES, expiresSecond + "");

            string method      = (string)context[QSConstant.PARAM_KEY_REQUEST_METHOD];
            string bucketName  = (string)context[QSConstant.PARAM_KEY_BUCKET_NAME];
            string requestPath = (string)context[QSConstant.PARAM_KEY_REQUEST_PATH];

            requestPath = requestPath.Replace(QSConstant.BUCKET_NAME_REPLACE, bucketName);
            if (context.ContainsKey(QSConstant.PARAM_KEY_OBJECT_NAME))
            {
                requestPath = requestPath.Replace(QSConstant.OBJECT_NAME_REPLACE, (string)context[QSConstant.PARAM_KEY_OBJECT_NAME]);
            }
            string authSign = getSignature(
                evnContext.getAccessKey(),
                evnContext.getAccessSecret(),
                method,
                requestPath,
                paramsQuery,
                paramsHeaders);

            return(HttpUtility.UrlEncode(authSign, Encoding.GetEncoding(QSConstant.ENCODING_UTF8)));
        }
Beispiel #5
0
        public void initService()
        {
            EvnContext evnContext = TestUtil.getEvnContext();

            storSerivce = new QingStor(evnContext);
            Console.WriteLine("test : initService");
        }
        public void testConfig()
        {
            String config =
                "access_key: 'testkey'\n"
                + "access_secret: 'test_asss'\n"
                + "host: qingcloud.com\n"
                + "port: 443\n"
                + "protocol: https\n";
            FileStream f     = new FileStream(System.Environment.CurrentDirectory + "/tmp/key.csv", FileMode.Open);
            Boolean    bConf = false;

            try
            {
                StreamReader output = new StreamReader(f);
                output.ReadToEnd();
                output.Close();
                f.Close();
                bConf = true;
            }
            catch (Exception e)
            {
                System.Console.Write(e.Message);
            }

            if (bConf)
            {
                EvnContext evnContext = EvnContext.loadFromFile(System.Environment.CurrentDirectory + "/tmp/key.csv");
                Assert.AreEqual(evnContext.getAccessKey(), "testkey");
                Assert.AreEqual(evnContext.getAccessSecret(), "testaccess");
                Assert.AreEqual(evnContext.getRequestUrl(), "https://qingcloud.com:443");
            }
        }
        public void initialize_the_bucket_CORS()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
        }
        public void sendApiRequestAsync(String requestUrl, Dictionary <object, object> context, ResponseCallBack callback)
        {
            EvnContext     evnContext = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            HttpWebRequest request    = QSHttpRequestClient.getInstance().buildUrlRequest(requestUrl);

            QSHttpRequestClient.getInstance().requestActionAsync(request, evnContext.isSafeOkHttp(), callback);
        }
Beispiel #9
0
        public void list_buckets()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            storSerivce = new QingStor(evnContext);
            listOutput  = storSerivce.listBuckets(new QingStor.ListBucketsInput());
        }
Beispiel #10
0
        public void initialize_QingStor_service()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            storSerivce = new QingStor(evnContext);
            Console.WriteLine("test : initService");
        }
        public void get_bucket_policy()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            getBucketPolicyOutput = Bucket.getPolicy();
        }
        public void delete_bucket_CORS()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            deleteBucketCORSOutput = Bucket.deleteCORS();
        }
        public OutputModel sendApiRequest(
            string requestUrl, Dictionary <object, object> context, Type outputClass)
        {
            EvnContext     evnContext = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            HttpWebRequest request    = QSHttpRequestClient.getInstance().buildUrlRequest(requestUrl);

            return(QSHttpRequestClient.getInstance()
                   .requestAction(request, evnContext.isSafeOkHttp(), outputClass));
        }
        public void testDefault()
        {
            EvnContext evnContext = new EvnContext("testkey", "test_asss");

            Assert.AreEqual(evnContext.getAccessKey(), "testkey");
            Assert.AreEqual(evnContext.getAccessSecret(), "test_asss");
            Assert.AreEqual(evnContext.getRequestUrl(), "https://qingstor.com");
            Assert.AreEqual(evnContext.getLog_level(), QSConstant.LOGGER_ERROR);
        }
        public void put_bucket_policy(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            Bucket.PutBucketPolicyInput input = new Bucket.PutBucketPolicyInput();
            input.setBodyInput(arg1);
            putBucketPolicyOutput = Bucket.putPolicy(input);
        }
Beispiel #16
0
        public void initialize_the_object_with_key(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            subService = new Bucket(evnContext, bucketName);
            evnContext.setLog_level(QSConstant.LOGGER_INFO);
            Bucket.PutObjectInput input = new Bucket.PutObjectInput();
            //objectOutput = subService.PutObject(arg1,input);
            test_object = arg1;
        }
        public void put_bucket_CORS(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            Bucket.PutBucketCORSInput input = new Bucket.PutBucketCORSInput();
            List <Object>             cors  = new List <Object>();

            input.setBodyInput(arg1);
            putBucketCORSOutput = Bucket.putCORS(input);
        }
Beispiel #18
0
        public void put_bucket_external_mirror(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            Bucket.PutBucketExternalMirrorInput input = new Bucket.PutBucketExternalMirrorInput();
            string obj = QSJSONUtil.convertJSONObject(arg1);

            input.setSourceSite(QSJSONUtil.toString(obj, "source_site"));
            putBucketExternalMirrorOutput = Bucket.putExternalMirror(input);
        }
        public void qcstorDeleteBucketObject()
        {
            EvnContext evn        = EvnContext.loadFromFile(System.Environment.CurrentDirectory + "/tmp/test_key.csv");
            String     bucketName = "java-bucket";
            Bucket     ss         = new Bucket(evn, bucketName);
            String     objectName = "2.txt";


            //bb.setIfMatch("cda0a741aac6541c730ed6be6c6f5bcc");
            OutputModel dd = ss.deleteObject(objectName);

            Console.WriteLine(dd + "");
        }
Beispiel #20
0
        public void initiate_multipart_upload_with_key(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);

            Bucket.InitiateMultipartUploadInput input = new Bucket.InitiateMultipartUploadInput();
            //input.setContentType(apkContentType);

            initOutput            = Bucket.initiateMultipartUpload(arg1, input);
            multipart_upload_name = arg1;
            multipart_upload_id   = initOutput.getUploadID();
        }
Beispiel #21
0
        public void put_object_with_key(String arg1)
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            evnContext.setLog_level(QSConstant.LOGGER_INFO);
            subService = new Bucket(evnContext, bucketName);
            Bucket.PutObjectInput input = new Bucket.PutObjectInput();
            FileStream            f     = new FileStream("D:\\2.txt", FileMode.Open);

            input.setBodyInputFile(f);
            input.setContentLength((int)f.Length);
            test_object     = chinesePrefix + arg1 + chineseSuffix;
            putObjectOutput = subService.putObject(test_object, input);
        }
        public void put_bucket_ACL()
        {
            // Write code here that turns the phrase above into concrete actions
            EvnContext evnContext = TestUtil.getEvnContext();

            Bucket = new Bucket(evnContext, bucketName);
            Bucket.PutBucketACLInput input = new Bucket.PutBucketACLInput();
            Types.ACLModel           acl   = new Types.ACLModel();
            acl.setPermission("FULL_CONTROL");
            Types.GranteeModel gm = new Types.GranteeModel();
            gm.setName("QS_ALL_USERS");
            gm.setType("group");
            acl.setGrantee(gm);
            List <Types.ACLModel> aa = new List <Types.ACLModel>();

            aa.Add(acl);
            input.setACL(aa);
            putBucketACLOutput = Bucket.putACL(input);
        }
Beispiel #23
0
        public static string getObjectAuthRequestUrl(
            EvnContext evnContext,
            String zone,
            String bucketName,
            String objectName,
            int expiresSecond)
        {
            Dictionary <object, object> context = new Dictionary <object, object>();

            try
            {
                objectName = percentEncode(objectName);
                context.Add(QSConstant.PARAM_KEY_REQUEST_ZONE, zone);
                context.Add(QSConstant.EVN_CONTEXT_KEY, evnContext);
                context.Add("OperationName", "GetObject");
                context.Add("APIName", "GetObject");
                context.Add("ServiceName", "QingStor");
                context.Add("RequestMethod", "GET");
                context.Add("RequestURI", "/<bucket-name>/<object-key>");
                context.Add("bucketNameInput", bucketName);
                context.Add("objectNameInput", objectName);
                DateTime fi             = Convert.ToDateTime("1970-1-1");
                int      expiresTime    = (int)((DateTime.Now - fi).Seconds + expiresSecond);
                string   expireAuth     = getExpireAuth(context, expiresTime, new RequestInputModel());
                string   serviceUrl     = evnContext.getRequestUrl();
                string   storRequestUrl = serviceUrl.Replace("://", "://" + zone + ".");
                if (objectName != null && objectName.IndexOf("?") > 0)
                {
                    return(storRequestUrl + "/" + bucketName + "/" + objectName +
                           "&access_key_id=" + evnContext.getAccessKey() + "&expires=" + expiresTime.ToString() + "&signature=" + expireAuth);
                }
                else
                {
                    return(storRequestUrl + "/" + bucketName + "/" + objectName +
                           "?&access_key_id=" + evnContext.getAccessKey() + "&expires=" + expiresTime.ToString() + "&signature=" + expireAuth);
                }
            }
            catch (Exception e)
            {
                throw new QSException(e.Message);
            }
        }
Beispiel #24
0
        public void testExpireString()
        {
            EvnContext evnContext = new EvnContext("testkey", "test_asss");

            String req1 = null;

            try
            {
                req1 =
                    QSSignatureUtil.getObjectAuthRequestUrl(
                        evnContext, "testzone", "bucketName", "objectName/dd.txt", 1000);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Assert.AreEqual(
                req1.IndexOf("https://bucketName.testzone.qingstor.com/objectName/dd.txt?") == -1,
                true);
        }
 public static EvnContext getEvnContext()
 {
     return(EvnContext.loadFromFile(System.Environment.CurrentDirectory + "/tmp/test_key.csv"));
 }
        private HttpWebRequest buildRequest(Dictionary <object, object> context, RequestInputModel Params)
        {
            EvnContext evnContext = (EvnContext)context[QSConstant.EVN_CONTEXT_KEY];
            string     zone       = (string)context[QSConstant.PARAM_KEY_REQUEST_ZONE];

            Dictionary <object, object> paramsQuery   = QSParamInvokeUtil.getRequestParams(Params, QSConstant.PARAM_TYPE_QUERY);
            Dictionary <object, object> paramsBody    = QSParamInvokeUtil.getRequestParams(Params, QSConstant.PARAM_TYPE_BODY);
            Dictionary <object, object> paramsHeaders = QSParamInvokeUtil.getRequestParams(Params, QSConstant.PARAM_TYPE_HEADER);

            if (context.ContainsKey(QSConstant.PARAM_KEY_USER_AGENT))
            {
                paramsHeaders.Add(QSConstant.PARAM_KEY_USER_AGENT, context[QSConstant.PARAM_KEY_USER_AGENT]);
            }

            String requestApi = (String)context[QSConstant.PARAM_KEY_REQUEST_APINAME];

            //string FileBody = GetBodyFile(context[QSConstant.PARAM_KEY_OBJECT_NAME].ToString()).ToString();
            paramsHeaders = initHeadContentMd5(requestApi, paramsBody, paramsHeaders);

            string method      = (string)context[QSConstant.PARAM_KEY_REQUEST_METHOD];
            string bucketName  = (string)context[QSConstant.PARAM_KEY_BUCKET_NAME];
            string requestPath = (string)context[QSConstant.PARAM_KEY_REQUEST_PATH];

            string objectName = "";

            if (context.ContainsKey(QSConstant.PARAM_KEY_OBJECT_NAME))
            {
                objectName = context[QSConstant.PARAM_KEY_OBJECT_NAME].ToString();
            }
            if (!paramsHeaders.ContainsKey(QSConstant.HEADER_PARAM_KEY_CONTENTTYPE))
            {
                paramsHeaders.Add(QSConstant.HEADER_PARAM_KEY_CONTENTTYPE, MimeMapping.GetMimeMapping(objectName));
            }

            if (context.ContainsKey(QSConstant.PARAM_KEY_OBJECT_NAME))
            {
                requestPath = requestPath.Replace(QSConstant.BUCKET_NAME_REPLACE, bucketName);
                requestPath = requestPath.Replace(QSConstant.OBJECT_NAME_REPLACE, QSStringUtil.urlCharactersEncoding(objectName));
            }
            else
            {
                requestPath = requestPath.Replace(QSConstant.BUCKET_NAME_REPLACE, bucketName + "/");
            }

            string authSign =
                QSSignatureUtil.getAuth(
                    evnContext.getAccessKey(),
                    evnContext.getAccessSecret(),
                    method,
                    requestPath,
                    paramsQuery,
                    paramsHeaders);
            string requestSuffixPath = getRequestSuffixPath((string)context[QSConstant.PARAM_KEY_REQUEST_PATH], bucketName, objectName);

            paramsHeaders.Add("Authorization", authSign);
            logger.Info(authSign);
            string singedUrl =
                getSignedUrl(
                    evnContext.getRequestUrl(),
                    zone,
                    bucketName,
                    paramsQuery,
                    requestSuffixPath);

            if (singedUrl.IndexOf("&upload_id") != -1)//?part_number=0&upload_id=1asfdsf
            {
                if (singedUrl.IndexOf("upload_id") > singedUrl.IndexOf("part_number"))
                {
                    String temp1 = singedUrl.Substring(singedUrl.IndexOf("part_number"), singedUrl.IndexOf("&upload_id") - singedUrl.IndexOf("part_number"));
                    String temp2 = singedUrl.Substring(singedUrl.IndexOf("upload_id"), singedUrl.Length - singedUrl.IndexOf("upload_id"));
                    singedUrl = singedUrl.Substring(0, singedUrl.IndexOf("?") + 1) + temp2 + "&" + temp1; //singedUrl.Replace(temp1, temp2).Replace(temp2,temp1);
                }
            }
            logger.Info(singedUrl);
            if (QSConstant.PARAM_KEY_REQUEST_API_MULTIPART.Equals(requestApi))
            {
                HttpWebRequest request =
                    QSHttpRequestClient.getInstance()
                    .buildStorMultiUpload(
                        method, paramsBody, singedUrl, paramsHeaders, paramsQuery);
                return(request);
            }
            else
            {
                //System.Console.WriteLine(singedUrl);
                HttpWebRequest request =
                    QSHttpRequestClient.getInstance()
                    .buildStorRequest(method, paramsBody, singedUrl, paramsHeaders);
                return(request);
            }
        }
Beispiel #27
0
 public QingStor(EvnContext evnContext)
 {
     this.evnContext = evnContext;
     this.zone       = QSConstant.STOR_DEFAULT_ZONE;
 }
Beispiel #28
0
 public QingStor(EvnContext evnContext, String zone)
 {
     this.evnContext = evnContext;
     this.zone       = zone;
 }
Beispiel #29
0
        static void Main(string[] args)
        {
            //EvnContextTest

            /*EvnContextTest evncontexttest = new EvnContextTest();
             * evncontexttest.testConfig();
             * evncontexttest.testDefault();*/

            //Base64Test

            /*Base64Test test = new Base64Test();
             * test.testBase();*/
            //QSJSONUtilTest

            /*QSJSONUtilTest test = new QSJSONUtilTest();
             * test.testJson();*/

            //QSParamInvokeUtilTest

            /*QSParamInvokeUtilTest test = new QSParamInvokeUtilTest();
             * test.testClassToModel();
             * test.testOutputModel();
             * test.testParam();
             * test.testParamInvokeCapitalize();*/

            //QSSignatureUtilTest

            /*QSSignatureUtilTest test = new QSSignatureUtilTest();
             * test.testEncodeString();
             * test.testExpireString();
             * test.testSignature();*/

            //QSStringUtilTest

            /*QSStringUtilTest test = new QSStringUtilTest();
             * test.mapJsonStringTest();
             * test.testChineseCharactersEncoding();
             * test.testNotAllowedString();
             * test.testReqString();
             * test.testUserAgentString();*/

            //BucketACLTest

            /*BucketACLTest test = new BucketACLTest();
             * test.put_bucket_ACL();*/

            //BucketTest

            /*BucketTest test = new BucketTest();
             * test.initialize_the_bucket();
             * test.put_bucket();
             * test.list_objects();
             * test.list_objects_status_code_is();
             * test.list_objects_keys_count_is();*/

            //MultiObjectTemplateUnitTest
            MultiObjectTemplateUnitTest test = new MultiObjectTemplateUnitTest();

            test.qcstorHeadBucketObject();
            test.qcstorGetObject();
            //test.qcstorDeleteBucketObject();

            EvnContext evn = new EvnContext("MYCDQJFYCUKPENFIIZSM", "aYlWBEbAB2bIRFKImWUyyBbA0QnnFAJms2rOhhbc");//

            //evn.setUri("http://php-bucket.pek3a.qingstor.com/wordpress");
            evn.setProtocol("http");
            evn.setHost("qingstor.com");
            //evn.setHost("HTTP/1.1");
            //evn.setPort("443");
            string   zoneName    = "pek3a";
            QingStor storService = new QingStor(evn, zoneName);
            string   bucketName  = "java-bucket";
            Bucket   bucket      = storService.getBucket(bucketName);
            string   objectName  = "2.txt";

            Bucket.PutObjectInput input = new Bucket.PutObjectInput();
            FileStream            f     = new FileStream("D:\\2.txt", FileMode.Open);

            input.setBodyInputFile(f);
            input.setContentLength((int)f.Length);
            Bucket.PutObjectOutput output = bucket.putObject(objectName, input);
            f.Close();
            Console.WriteLine(output.getMessage());

            /*Bucket.InitiateMultipartUploadInput inputParam = new Bucket.InitiateMultipartUploadInput();
             * Bucket.UploadMultipartInput input = new Bucket.UploadMultipartInput();
             * //inputParam.setContentType("text/plain");
             *
             * Bucket.InitiateMultipartUploadOutput output = bucket.initiateMultipartUpload(objectName, inputParam);
             * FileStream f = File.OpenRead("D:\\3.txt");
             * //string text = System.IO.File.ReadAllText("D:\\1.iso");
             * input.setContentLength(1024*1024*4);
             * input.setBodyInputFile(f);
             * input.setPartNumber(0);
             * input.setUploadID(output.getUploadID());
             * Bucket.UploadMultipartOutput uploadMultipartOutput3 = bucket.uploadMultipart(objectName, input);
             * uploadMultipartOutput3.getMessage();*/
            System.Console.Read();
        }