示例#1
0
        static void Main1(string[] args)
        {
            // 华为云
            const string ak       = "{your ak string}";
            const string sk       = "{your sk string}";
            const string endpoint = "{your endpoint string}";
            const string domainId = "{your domainID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth            = new GlobalCredentials(ak, sk, domainId);
            var iamDomainClient = IamClient.NewBuilder()
                                  .WithCredential(auth)
                                  .WithEndPoint(endpoint)
                                  .WithHttpConfig(config).Build();

            // 用户组管理

            // 查询用户组列表 GET /v3/groups
            KeystoneListGroups(iamDomainClient);

            // 查询用户组详情 GET /v3/groups/{group_id}
            KeystoneShowGroup(iamDomainClient);

            // 创建用户组 POST /v3/groups
            KeystoneCreateGroup(iamDomainClient);

            // 更新用户组 PATCH /v3/groups/{group_id}
            KeystoneUpdateGroup(iamDomainClient);

            // 删除用户组 DELETE /v3/groups/{group_id}
            KeystoneDeleteGroup(iamDomainClient);

            // 查询IAM用户是否在用户组中 HEAD /v3/groups/{group_id}/users/{user_id}
            KeystoneCheckUserInGroup(iamDomainClient);

            // 添加IAM用户到用户组 PUT /v3/groups/{group_id}/users/{user_id}
            KeystoneAddUserToGroup(iamDomainClient);

            // 移除用户组中的IAM用户 DELETE /v3/groups/{group_id}/users/{user_id}
            KeystoneRemoveUserFromGroup(iamDomainClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth        = new BasicCredentials(ak, sk, projectId);
            var iotdaClient = IoTDAClient.NewBuilder()
                              .WithCredential(auth)
                              .WithEndPoint(endpoint)
                              .WithHttpConfig(config).Build();

            updateDeviceShadow(iotdaClient);
            getDeviceShadow(iotdaClient);
        }
示例#3
0
        static void Main1(string[] args)
        {
            const string ak = "{your ak string}";
            const string sk = "{your sk string}";
            //for example endpoint = "https://ecs.XXXXXX.myhuaweicloud.com"
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var ecsClient = EcsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListFlavors(ecsClient);
        }
示例#4
0
            internal Dictionary <string, object> GetUpdateDicts(HttpConfig httpConfig)
            {
                var dict = new Dictionary <string, object>();

                if (!object.Equals(CharSet, httpConfig.CharSet))
                {
                    dict.Add($"{HttpConfig.PrefixName}charSet", CharSet);
                }
                if (!object.Equals(KeepAliveSecond, httpConfig.KeepAliveSecond))
                {
                    dict.Add($"{HttpConfig.PrefixName}keepAliveSecond", KeepAliveSecond);
                }
                if (!object.Equals(MaxReqSize, httpConfig.MaxReqSize))
                {
                    dict.Add($"{HttpConfig.PrefixName}maxReqSize", MaxReqSize);
                }
                if (!object.Equals(NotFound, httpConfig.NotFound))
                {
                    dict.Add($"{HttpConfig.PrefixName}notFound", NotFound);
                }
                if (!object.Equals(Port, httpConfig.Port))
                {
                    dict.Add($"{HttpConfig.PrefixName}on_play", Port);
                }
                if (!object.Equals(RootPath, httpConfig.RootPath))
                {
                    dict.Add($"{HttpConfig.PrefixName}rootPath", RootPath);
                }
                if (!object.Equals(SendBufSize, httpConfig.SendBufSize))
                {
                    dict.Add($"{HttpConfig.PrefixName}sendBufSize", SendBufSize);
                }
                if (!object.Equals(Sslport, httpConfig.Sslport))
                {
                    dict.Add($"{HttpConfig.PrefixName}sslport", Sslport);
                }
                if (!object.Equals(DirMenu, httpConfig.DirMenu))
                {
                    dict.Add($"{HttpConfig.PrefixName}dirMenu", DirMenu ? 1 : 0);
                }
                return(dict);
            }
示例#5
0
        private static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth     = new BasicCredentials(ak, sk, projectId);
            var asClient = AsClient.NewBuilder()
                           .WithCredential(auth)
                           .WithEndPoint(endpoint)
                           .WithHttpConfig(config).Build();


            //scaling policy test
            ListScalingPolicyExecuteLogs(asClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var imsClient = ImsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListTags(imsClient);
            CreateOrUpdateTags(imsClient);
            GlanceCreateTag(imsClient);
            GlanceDeleteTag(imsClient);
        }
        public override object Invoke(MethodInfo targetMethod, object[] args)
        {
            //if the method is 'Config',then save the config data and return this instance for the next invoke
            if (IsConfigMethod(targetMethod, args))
            {
                _httpConfig         = args[0] as HttpConfig;
                _httpClient.Timeout = _httpConfig.Timeout;
                return(this);
            }
            var argInfos    = InitArgumentInfos(targetMethod.GetParameters(), args);
            var urlTemplate = _urlBuilder.GetUrlTemplate(targetMethod);

            var requestMessage = HttpRequestUtil.BuildHttpRequestMessage(_httpConfig?.RequestHeaders, argInfos, urlTemplate);

            _logger?.LogDebug("Request url:{0} {1}", requestMessage.Method, requestMessage.RequestUri.AbsoluteUri);

            var response = _httpClient.SendAsync(requestMessage).ConfigureAwait(false).GetAwaiter().GetResult();
            var content  = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            return(ConvertUtil.DeserializeObject(targetMethod.ReturnType, content));
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kmsClient = KmsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            EnableKeyRotation(kmsClient);
            UpdateKeyRotationInterval(kmsClient);
            DisableKeyRotation(kmsClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var imsClient = ImsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            //GlanceShowImageSchemas(imsClient);
            GlanceListImageSchemas(imsClient);
            //GlanceShowImageMemberSchemas(imsClient);
            //GlanceListImageMemberSchemas(imsClient);
        }
示例#10
0
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var vpcClient = VpcClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListSecurityGroupRules(vpcClient);
            ShowSecurityGroupRule(vpcClient);
            CreateSecurityGroupRule(vpcClient);
            DeleteSecurityGroupRule(vpcClient);
        }
示例#11
0
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kmsClient = KmsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            GenRandom(kmsClient);
            CreateDataKeyWithoutPlaintext(kmsClient);
            EncryptDataKey(kmsClient);
        }
示例#12
0
        public static void ConfigureSwagger(IAppBuilder app)
        {
            //var apiExplorer = HttpConfig.AddVersionedApiExplorer(o => o.GroupNameFormat = "'v'VVV");
            var apiExplorer = HttpConfig.AddODataApiExplorer(options =>
            {
                options.GroupNameFormat = "'v'VVV";
            });

            HttpConfig.EnableSwagger(
                "{apiVersion}/swagger",
                swagger =>
            {
                swagger.MultipleApiVersions(
                    (apiDescription, version) => apiDescription.GetGroupName() == version,
                    info =>
                {
                    foreach (var group in apiExplorer.ApiDescriptions)
                    {
                        var description = "eGate DataServices to Connect to eNVenta ERP.";

                        if (group.IsDeprecated)
                        {
                            description += " (Deprecated)";
                        }

                        info.Version(group.Name, $"eNVenta eGate DataServices API {group.ApiVersion}")
                        .Contact(c => c.Name("Nissen & Velten Software GmbH")
                                 .Email("*****@*****.**"))
                        .Description(description);
                    }
                });

                swagger.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());

                swagger.OperationFilter <SwaggerDefaultValues>();

                //swagger.IncludeXmlComments(XmlCommentsFilePath);
            })
            .EnableSwaggerUi(swagger => swagger.EnableDiscoveryUrlSelector());
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kmsClient = KmsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListGrant(kmsClient);
            ListRetirableGrants(kmsClient);
            RetireGrant(kmsClient);
            RevokeGrant(kmsClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kpsClient = KpsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListKeypairs(kpsClient);
            CreateKeypair(kpsClient);
            ListKeypairDetail(kpsClient);
            DeleteKeypair(kpsClient);
        }
示例#15
0
        private static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth     = new BasicCredentials(ak, sk, projectId);
            var asClient = AsClient.NewBuilder()
                           .WithCredential(auth)
                           .WithEndPoint(endpoint)
                           .WithHttpConfig(config).Build();

            // tags test
            ListScalingTagInfosByTenantId(asClient);
            ListScalingTagInfosByResourceId(asClient);
            OperateScalingTagInfo(asClient);
            ListResourceInstances(asClient);
        }
示例#16
0
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var evsClient = EvsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            BatchCreateVolumeTags(evsClient);
            BatchDeleteVolumeTags(evsClient);
            ListVolumeTags(evsClient);
            ShowVolumeTags(evsClient);
            ListVolumesByTags(evsClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;

            var auth      = new BasicCredentials(ak, sk, projectId);
            var cesClient = CesClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ShowMetricData(cesClient);
            BatchListMetricData(cesClient);
            ShowEventData(cesClient);
            CreateMetricData(cesClient);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kmsClient = KmsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            var keyId = GetKeyByStatus.GetKeyByKeyStatus(kmsClient, "5");

            GetParametersForImport(kmsClient, keyId);
            ImportKeyMaterial(kmsClient, keyId);
            DeleteKeyMaterial(kmsClient, keyId);
        }
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth      = new BasicCredentials(ak, sk, projectId);
            var evsClient = EvsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            CreateSnapshot(evsClient);
            UpdateSnapshot(evsClient);
            DeleteSnapshot(evsClient);
            ShowSnapshot(evsClient);
            ListSnapshotsDetails(evsClient);
            RollbackSnapshot(evsClient);
        }
示例#20
0
        static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);

            var kmsClient = KmsClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            DescribeKey(kmsClient);
            GetInstances(kmsClient);
            GetQuotas(kmsClient);
            GetVersion(kmsClient);
            GetVersions(kmsClient);
        }
        static void Main(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;

            var auth      = new BasicCredentials(ak, sk, projectId);
            var cesClient = CesClient.NewBuilder()
                            .WithCredential(auth)
                            .WithEndPoint(endpoint)
                            .WithHttpConfig(config).Build();

            ListAlarms(cesClient);
            ShowAlarmByID(cesClient);
            UpdateAlarmAction(cesClient);
            DeleteAlarm(cesClient);
            CreateAlarm(cesClient);
        }
        /// <summary>
        /// Configures the o data.
        /// </summary>
        /// <param name="app">The application.</param>
        public static void ConfigureOData(IAppBuilder app)
        {
            //HttpConfig.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            // Web-API-Konfiguration und -Dienste
            HttpConfig.Select()
            .Filter()
            .OrderBy()
            .MaxTop(null)
            .Count();

            var httpServer = new HttpServer(HttpConfig);

            var modelBuilder = new VersionedODataModelBuilder(HttpConfig)
            {
                ModelBuilderFactory = () => new ODataConventionModelBuilder(),
                ModelConfigurations =
                {
                    new NVEntitySetConfiguration <NVArticle>(),
                    new NVConfiguration()
                }
            };

            HttpConfig.MapVersionedODataRoutes("odata", "", modelBuilder.GetEdmModels(), new DefaultODataBatchHandler(httpServer));
        }
        private static void Main(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth     = new BasicCredentials(ak, sk, projectId);
            var asClient = AsClient.NewBuilder()
                           .WithCredential(auth)
                           .WithEndPoint(endpoint)
                           .WithHttpConfig(config).Build();

            // lifecycle hook test
            CreateLifeCycleHook(asClient);
            ListLifeCycleHooks(asClient);
            ShowLifeCycleHook(asClient);
            UpdateLifeCycleHook(asClient);
            ListHookInstances(asClient);
            DeleteLifecycleHook(asClient);
        }
示例#24
0
        public async Task <TResponse> SendAsync <TResponse>(HttpConfig httpConfig, CancellationToken cancellationToken)
        {
            var message = new HttpRequestMessage
            {
                Method     = httpConfig.HttpMethod,
                RequestUri = new Uri($"{config.Uri}{httpConfig.Path}")
            };

            message.Headers.Add("api-key", config.ApiKey);
            message.Headers.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15");

            using var response = await httpClient.SendAsync(message);

            var responseJson = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <TResponse>(responseJson));
            }
            else
            {
                throw new ForemException(response.ReasonPhrase, responseJson, response.StatusCode);
            }
        }
示例#25
0
        private static void Main1(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint}";
            const string projectId = "{your project id}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth     = new BasicCredentials(ak, sk, projectId);
            var asClient = AsClient.NewBuilder()
                           .WithCredential(auth)
                           .WithEndPoint(endpoint)
                           .WithHttpConfig(config).Build();

            //scaling group test
            ShowScalingGroup(asClient);
            ListScalingGroups(asClient);
            CreateScalingGroup(asClient);
            UpdateScalingGroup(asClient);
            ActionScalingGroup(asClient);
            DeleteScalingGroup(asClient);
        }
示例#26
0
 public WebSocketServer(HttpConfig serverConfig)
 {
     if (serverConfig != null)
     {
         ServerConfig = serverConfig;
     }
     else
     {
         string configFile = "HttpConfig.json";
         if (System.IO.File.Exists(configFile))
         {
             using (System.IO.StreamReader reader = new StreamReader(configFile, Encoding.UTF8))
             {
                 string json = reader.ReadToEnd();
                 Newtonsoft.Json.Linq.JToken toke = (Newtonsoft.Json.Linq.JToken)Newtonsoft.Json.JsonConvert.DeserializeObject(json);
                 ServerConfig = toke["HttpConfig"].ToObject <HttpConfig>();
             }
         }
         else
         {
             ServerConfig = new HttpConfig();
         }
     }
 }
        static void FunctionGraphMain(string[] args)
        {
            const string ak        = "{your ak string}";
            const string sk        = "{your sk string}";
            const string endpoint  = "{your endpoint string}";
            const string projectId = "{your projectID string}";

            var config = HttpConfig.GetDefaultConfig();

            config.IgnoreSslVerification = true;
            var auth = new BasicCredentials(ak, sk, projectId);
            var functionGraphClient = FunctionGraphClient.NewBuilder()
                                      .WithCredential(auth)
                                      .WithEndPoint(endpoint)
                                      .WithHttpConfig(config).Build();

            //elapsed time
            //System.Diagnostics.Stopwatch stopwatch = new Stopwatch();
            //stopwatch.Start();
            //stopwatch.Stop();
            //TimeSpan timespan = stopwatch.Elapsed;
            //Console.WriteLine("elapsed="+timespan.TotalSeconds);

            // ListFunctions
            //ListFunctions(functionGraphClient);

            //CreateFunction
            //CreateFunction(functionGraphClient);

            //ShowFunctionConfig
            //ShowFunctionConfig(functionGraphClient);

            //ShowFunctionCode
            //ShowFunctionCode(functionGraphClient);

            //UpdateFunctionCode
            //UpdateFunctionCode(functionGraphClient);

            //UpdateFunctionConfig
            //UpdateFunctionConfig(functionGraphClient);

            //CreateFunctionVersion
            //CreateFunctionVersion(functionGraphClient);

            //ListFunctionVersions
            //ListFunctionVersions(functionGraphClient);

            //CreateVersionAlias
            //CreateVersionAlias(functionGraphClient);

            //UpdateVersionAlias
            //UpdateVersionAlias(functionGraphClient);

            //ShowVersionAlias
            //ShowVersionAlias(functionGraphClient);

            //ListVersionAliases
            //ListVersionAliases(functionGraphClient);

            //DeleteVersionAlias
            //DeleteVersionAlias(functionGraphClient);

            //CreateFunctionTrigger
            //CreateFunctionTrigger(functionGraphClient);

            //ShowFunctionTrigger
            //ShowFunctionTrigger(functionGraphClient);

            //ListFunctionTriggers
            //ListFunctionTriggers(functionGraphClient);

            //DeleteFunctionTrigger
            //DeleteFunctionTrigger(functionGraphClient);

            //DeleteFunctionTriggers
            //BatchDeleteFunctionTriggers(functionGraphClient);

            //InvokeFunction
            //InvokeFunction(functionGraphClient);

            //InvokeFunctionAsync
            //InvokeFunctionAsync(functionGraphClient);

            //DeleteFunction
            //DeleteFunction(functionGraphClient);
        }
        private void OnGUI()
        {
            GUILayout.BeginHorizontal();
            string[] filesArray = this.files.ToArray();
            this.selectedIndex = EditorGUILayout.Popup(this.selectedIndex, filesArray);

            string lastFile = this.fileName;

            this.fileName = this.files[this.selectedIndex];

            if (this.fileName != lastFile)
            {
                this.LoadConfig();
            }

            this.newFileName = EditorGUILayout.TextField("文件名", this.newFileName);

            if (GUILayout.Button("添加"))
            {
                this.fileName    = this.newFileName;
                this.newFileName = "";
                File.WriteAllText(this.GetFilePath(), "");
                this.files         = this.GetConfigFiles();
                this.selectedIndex = this.files.IndexOf(this.fileName);
                this.LoadConfig();
            }

            if (GUILayout.Button("复制"))
            {
                this.fileName = $"{this.fileName}-copy";
                this.Save();
                this.files         = this.GetConfigFiles();
                this.selectedIndex = this.files.IndexOf(this.fileName);
                this.newFileName   = "";
            }

            if (GUILayout.Button("重命名"))
            {
                if (this.newFileName == "")
                {
                    Log.Debug("请输入新名字!");
                }
                else
                {
                    File.Delete(this.GetFilePath());
                    this.fileName = this.newFileName;
                    this.Save();
                    this.files         = this.GetConfigFiles();
                    this.selectedIndex = this.files.IndexOf(this.fileName);
                    this.newFileName   = "";
                }
            }

            if (GUILayout.Button("删除"))
            {
                File.Delete(this.GetFilePath());
                this.files         = this.GetConfigFiles();
                this.selectedIndex = 0;
                this.newFileName   = "";
            }

            GUILayout.EndHorizontal();

            GUILayout.Label("配置内容:");
            for (int i = 0; i < this.startConfigs.Count; ++i)
            {
                StartConfig startConfig = this.startConfigs[i];
                GUILayout.BeginHorizontal();
                GUILayout.Label($"AppId:");
                startConfig.AppId = EditorGUILayout.IntField(startConfig.AppId);
                GUILayout.Label($"服务器IP:");
                startConfig.ServerIP = EditorGUILayout.TextField(startConfig.ServerIP);
                GUILayout.Label($"AppType:");
                startConfig.AppType = (AppType)EditorGUILayout.EnumPopup(startConfig.AppType);

                InnerConfig innerConfig = startConfig.GetComponent <InnerConfig>();
                if (innerConfig != null)
                {
                    GUILayout.Label($"InnerHost:");
                    innerConfig.Host = EditorGUILayout.TextField(innerConfig.Host);
                    GUILayout.Label($"InnerPort:");
                    innerConfig.Port = EditorGUILayout.IntField(innerConfig.Port);
                }

                OuterConfig outerConfig = startConfig.GetComponent <OuterConfig>();
                if (outerConfig != null)
                {
                    GUILayout.Label($"OuterHost:");
                    outerConfig.Host = EditorGUILayout.TextField(outerConfig.Host);
                    GUILayout.Label($"OuterHost2:");
                    outerConfig.Host2 = EditorGUILayout.TextField(outerConfig.Host2);
                    GUILayout.Label($"OuterPort:");
                    outerConfig.Port = EditorGUILayout.IntField(outerConfig.Port);
                }

                ClientConfig clientConfig = startConfig.GetComponent <ClientConfig>();
                if (clientConfig != null)
                {
                    GUILayout.Label($"Host:");
                    clientConfig.Host = EditorGUILayout.TextField(clientConfig.Host);
                    GUILayout.Label($"Port:");
                    clientConfig.Port = EditorGUILayout.IntField(clientConfig.Port);
                }

                HttpConfig httpConfig = startConfig.GetComponent <HttpConfig>();
                if (httpConfig != null)
                {
                    GUILayout.Label($"AppId:");
                    httpConfig.AppId = EditorGUILayout.IntField(httpConfig.AppId);
                    GUILayout.Label($"AppKey:");
                    httpConfig.AppKey = EditorGUILayout.TextField(httpConfig.AppKey);
                    GUILayout.Label($"Url:");
                    httpConfig.Url = EditorGUILayout.TextField(httpConfig.Url);
                    GUILayout.Label($"ManagerSystemUrl:");
                    httpConfig.ManagerSystemUrl = EditorGUILayout.TextField(httpConfig.ManagerSystemUrl);
                }

                DBConfig dbConfig = startConfig.GetComponent <DBConfig>();
                if (dbConfig != null)
                {
                    GUILayout.Label($"Connection:");
                    dbConfig.ConnectionString = EditorGUILayout.TextField(dbConfig.ConnectionString);

                    GUILayout.Label($"DBName:");
                    dbConfig.DBName = EditorGUILayout.TextField(dbConfig.DBName);
                }

                if (GUILayout.Button("删除"))
                {
                    this.startConfigs.Remove(startConfig);
                    break;
                }
                if (GUILayout.Button("复制"))
                {
                    for (int j = 1; j < this.copyNum + 1; ++j)
                    {
                        StartConfig newStartConfig = MongoHelper.FromBson <StartConfig>(startConfig.ToBson());
                        newStartConfig.AppId += j;
                        this.startConfigs.Add(newStartConfig);
                    }
                    break;
                }

                if (i > 0)
                {
                    if (GUILayout.Button("上移"))
                    {
                        StartConfig s = this.startConfigs[i];
                        this.startConfigs.RemoveAt(i);
                        this.startConfigs.Insert(i - 1, s);
                        for (int j = 0; j < startConfigs.Count; ++j)
                        {
                            this.startConfigs[j].AppId = j + 1;
                        }
                        break;
                    }
                }

                if (i < this.startConfigs.Count - 1)
                {
                    if (GUILayout.Button("下移"))
                    {
                        StartConfig s = this.startConfigs[i];
                        this.startConfigs.RemoveAt(i);
                        this.startConfigs.Insert(i + 1, s);
                        for (int j = 0; j < startConfigs.Count; ++j)
                        {
                            this.startConfigs[j].AppId = j + 1;
                        }
                        break;
                    }
                }
                GUILayout.EndHorizontal();
            }

            GUILayout.Label("");

            GUILayout.BeginHorizontal();
            this.copyNum = EditorGUILayout.IntField("复制数量: ", this.copyNum);

            GUILayout.Label($"添加的AppType:");
            this.AppType = (AppType)EditorGUILayout.EnumPopup(this.AppType);

            if (GUILayout.Button("添加一行配置"))
            {
                StartConfig newStartConfig = new StartConfig();

                newStartConfig.AppType = this.AppType;

                if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager))
                {
                    newStartConfig.AddComponent <OuterConfig>();
                }

                if (this.AppType.Is(AppType.Gate | AppType.Realm | AppType.Manager | AppType.Http | AppType.DB | AppType.Map | AppType.Location))
                {
                    newStartConfig.AddComponent <InnerConfig>();
                }

                if (this.AppType.Is(AppType.Benchmark))
                {
                    newStartConfig.AddComponent <ClientConfig>();
                }

                if (this.AppType.Is(AppType.Http))
                {
                    newStartConfig.AddComponent <HttpConfig>();
                }

                if (this.AppType.Is(AppType.DB))
                {
                    newStartConfig.AddComponent <DBConfig>();
                }

                this.startConfigs.Add(newStartConfig);
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();

            if (GUILayout.Button("保存"))
            {
                this.Save();
            }

            if (GUILayout.Button("启动"))
            {
                StartConfig startConfig = null;
                foreach (StartConfig config in this.startConfigs)
                {
                    if (config.AppType.Is(AppType.Manager))
                    {
                        startConfig = config;
                    }
                }

                if (startConfig == null)
                {
                    Log.Error("没有配置Manager!");
                    return;
                }

                string arguments = $"App.dll --appId={startConfig.AppId} --appType={startConfig.AppType} --config=../Config/StartConfig/{this.fileName}";

                ProcessStartInfo info = new ProcessStartInfo("dotnet", arguments)
                {
                    UseShellExecute = true, WorkingDirectory = @"../Bin/"
                };
                Process.Start(info);
            }
            GUILayout.EndHorizontal();
        }
示例#29
0
        public static RequestDelegate ScheduleHandler <T>(IDictionary defatultEnvironmentVariables, Dictionary <string, string> serverlessEnvironmentVariables, HttpConfig httpConfig, MethodBase handlerMethod, IReadOnlyList <ParameterInfo> parameterInfos, T handler)
        {
            return(async(context) =>
            {
                if (parameterInfos.Count > 2)
                {
                    throw new Exception("Unrecongnized paramter count for Schedule method. Expected 2 paramters max. (object event, ILambdaContext context)");
                }
                // NOTE: KAL-19 unable to check paramter 2 to see if it ILambdaContext. Will allow (object e, object context) which won't work on AWS but will work here.
                // tried https://stackoverflow.com/questions/4963160/how-to-determine-if-a-type-implements-an-interface-with-c-sharp-reflection

                EnvironmentVariable.PrepareEnvironmentVariables(defatultEnvironmentVariables, serverlessEnvironmentVariables, httpConfig.Environment);

                var args = new List <object>();
                if (parameterInfos.Count > 0)
                {
                    var parameter0Type = parameterInfos[0].ParameterType;
                    object @event = DefaultScheduleEvent;
                    if (httpConfig.RequestBody != null)
                    {
                        @event = JsonConvert.DeserializeObject(httpConfig.RequestBody.ToString(), parameter0Type);
                    }
                    else if (context.Request.Body != null)
                    {
                        using (var reader = new StreamReader(context.Request.Body, Encoding.UTF8))
                        {
                            var body = await reader.ReadToEndAsync().ConfigureAwait(false);

                            @event = JsonConvert.DeserializeObject(body, parameter0Type);
                        }
                    }
                    args.Add(@event);
                }
                if (parameterInfos.Count > 1)
                {
                    args.Add(new TestLambdaContext());
                }

                var handlerResponse = handlerMethod.Invoke(handler, parameterInfos.Count == 0 ? null : args.ToArray());

                object response = null;
                if (handlerResponse is Task <string> task)
                {
                    response = await task.ConfigureAwait(false);
                }
                else if (handlerResponse != null)
                {
                    response = handlerResponse;
                }

                context.Response.StatusCode = 200;
                if (response != null)
                {
                    await context.Response.WriteAsync(JsonConvert.SerializeObject(response)).ConfigureAwait(false);
                }
            });
        }
示例#30
0
        public static string Send(string url, string method, string data, HttpConfig config)
        {
            if (config == null)
            {
                config = new HttpConfig();
            }
            string result;

            using (HttpWebResponse response = GetResponse(url, method, data, config))
            {
                headerStr.Append(response.Headers.ToString());


                headerStr.AppendLine("ResponseUri: " + response.ResponseUri);
                headerStr.AppendLine("StatusCode: " + response.StatusCode);
                Stream stream = response.GetResponseStream();

                if (!String.IsNullOrEmpty(response.ContentEncoding))
                {
                    if (response.ContentEncoding.Contains("gzip"))
                    {
                        stream = new GZipStream(stream, CompressionMode.Decompress);
                    }
                    else if (response.ContentEncoding.Contains("deflate"))
                    {
                        stream = new DeflateStream(stream, CompressionMode.Decompress);
                    }
                }

                byte[] bytes = null;
                using (MemoryStream ms = new MemoryStream())
                {
                    int    count;
                    byte[] buffer = new byte[4096];
                    while ((count = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, count);
                    }
                    bytes = ms.ToArray();
                }

                #region 检测流编码
                Encoding encoding;

                //检测响应头是否返回了编码类型,若返回了编码类型则使用返回的编码
                //注:有时响应头没有编码类型,CharacterSet经常设置为ISO-8859-1
                if (!string.IsNullOrEmpty(response.CharacterSet) && response.CharacterSet.ToUpper() != "ISO-8859-1")
                {
                    encoding = Encoding.GetEncoding(response.CharacterSet == "utf8" ? "utf-8" : response.CharacterSet);
                }
                else
                {
                    //若没有在响应头找到编码,则去html找meta头的charset
                    result = Encoding.Default.GetString(bytes);
                    //在返回的html里使用正则匹配页面编码
                    Match match = Regex.Match(result, @"<meta.*charset=""?([\w-]+)""?.*>", RegexOptions.IgnoreCase);
                    if (match.Success)
                    {
                        encoding = Encoding.GetEncoding(match.Groups[1].Value);
                    }
                    else
                    {
                        //若html里面也找不到编码,默认使用utf-8
                        encoding = Encoding.GetEncoding(config.CharacterSet);
                    }
                }
                #endregion

                result = encoding.GetString(bytes);
            }
            return(result);
        }