Пример #1
0
        public static EbApi GetApiByName(string name, string version, IDatabase ObjectsDB)
        {
            EbApi  api_o = null;
            string sql   = ObjectsDB.EB_API_BY_NAME;

            DbParameter[] parameter =
            {
                ObjectsDB.GetNewParameter("objname", EbDbTypes.String, name),
                ObjectsDB.GetNewParameter("version", EbDbTypes.String, version)
            };
            EbDataTable dt = ObjectsDB.DoQuery(sql, parameter);

            if (dt.Rows.Count > 0)
            {
                EbDataRow       dr        = dt.Rows[0];
                EbObjectWrapper _ebObject = (new EbObjectWrapper
                {
                    Json = dr[0].ToString(),
                    VersionNumber = dr[1].ToString(),
                    EbObjectType = (dr[4] != DBNull.Value) ? Convert.ToInt32(dr[4]) : 0,
                    Status = Enum.GetName(typeof(ObjectLifeCycleStatus), Convert.ToInt32(dr[2])),
                    Tags = dr[3].ToString(),
                    RefId = null,
                });
                api_o = EbSerializers.Json_Deserialize <EbApi>(_ebObject.Json);
            }

            return(api_o);
        }
Пример #2
0
        public static List <Param> GetReqJsonParameters(ListOrdered Components, IRedisClient Redis, IDatabase ObjectsDB)
        {
            List <Param> parameters = new List <Param>();

            foreach (ApiResources resource in Components)
            {
                if (resource is EbSqlReader || resource is EbSqlWriter || resource is EbSqlFunc)
                {
                    EbDataSourceMain dataSource = GetEbObject <EbDataSourceMain>(resource.Reference, Redis, ObjectsDB);

                    if (dataSource.InputParams == null || dataSource.InputParams.Count <= 0)
                    {
                        parameters.Merge(dataSource.GetParams(Redis as RedisClient));
                    }
                    else
                    {
                        parameters.Merge(dataSource.InputParams);
                    }
                }
                else if (resource is EbEmailNode)
                {
                    EbEmailTemplate emailTemplate = GetEbObject <EbEmailTemplate>(resource.Reference, Redis, ObjectsDB);

                    parameters = parameters.Merge(GetEmailParams(emailTemplate, Redis, ObjectsDB));
                }
                else if (resource is EbConnectApi)
                {
                    EbApi ob = GetEbObject <EbApi>(resource.Reference, Redis, ObjectsDB);

                    parameters = parameters.Merge(GetReqJsonParameters(ob.Resources, Redis, ObjectsDB));
                }
                else if (resource is EbThirdPartyApi thirdParty)
                {
                    if (thirdParty.Parameters != null && thirdParty.Parameters.Count > 0)
                    {
                        foreach (var param in thirdParty.Parameters)
                        {
                            parameters.Add(new Param
                            {
                                Name  = param.Name,
                                Type  = param.Type.ToString(),
                                Value = param.Value
                            });
                        }
                    }
                }
            }

            return(parameters);
        }
Пример #3
0
        public static object GetResult(ApiResources resource, EbApi Api, RabbitMqProducer mqp, Service service, EbStaticFileClient FileClient)
        {
            ResultWrapper res = new ResultWrapper();

            switch (resource)
            {
            case EbSqlReader reader:
                res.Result = (reader as EbSqlReader).ExecuteDataReader(Api);
                break;

            case EbSqlWriter writer:
                res.Result = (writer as EbSqlWriter).ExecuteDataWriter(Api);
                break;

            case EbSqlFunc func:
                res.Result = (func as EbSqlFunc).ExecuteSqlFunction(Api);
                break;

            case EbEmailNode email:
                res.Result = (email as EbEmailNode).ExecuteEmail(Api, mqp);
                break;

            case EbProcessor processor:
                res.Result = (processor as EbProcessor).ExecuteScript(Api, mqp, service, FileClient);
                break;

            case EbConnectApi ebApi:
                res.Result = (ebApi as EbConnectApi).ExecuteConnectApi(Api, service);
                break;

            case EbThirdPartyApi thirdParty:
                res.Result = (thirdParty as EbThirdPartyApi).ExecuteThirdPartyApi(thirdParty, Api);
                break;

            case EbFormResource form:
                res.Result = (form as EbFormResource).ExecuteFormResource(Api, service);
                break;

            case EbEmailRetriever retriever:
                res.Result = (retriever as EbEmailRetriever).ExecuteEmailRetriever(Api, service, FileClient, true);
                break;

            default:
                res.Result = null;
                break;
            }

            return(res.Result);
        }
        public void GetApiObject(ApiMqRequest request)
        {
            int    UserId;
            string SolutionId;
            string UserAuthId;
            Dictionary <string, object> ApiData;

            if (request.HasRefId())
            {
                SolutionId = request.JobArgs.SolnId;
                UserAuthId = request.JobArgs.UserAuthId;
                ApiData    = request.JobArgs.ApiData;
                UserId     = request.JobArgs.UserId;

                try
                {
                    this.Api = new EbApi();
                    this.EbConnectionFactory = new EbConnectionFactory(SolutionId, Redis);
                    this.Api             = Api.GetApi(request.JobArgs?.RefId, this.Redis, this.EbConnectionFactory.DataDB, this.EbConnectionFactory.ObjectsDB);
                    this.Api.ApiResponse = new ApiResponse();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Failed resolve api object from refid '{request.JobArgs?.RefId}'");
                    Console.WriteLine(ex.Message);
                }
            }
            else
            {
                SolutionId = request.SolnId;
                UserAuthId = request.UserAuthId;
                ApiData    = request.Data;
                UserId     = request.UserId;

                try
                {
                    this.EbConnectionFactory = new EbConnectionFactory(SolutionId, Redis);
                    this.Api = EbApiHelper.GetApiByName(request.Name, request.Version, this.EbConnectionFactory.ObjectsDB);
                    if (!(this.Api is null))
                    {
                        Api.Redis            = this.Redis;
                        Api.ObjectsDB        = this.EbConnectionFactory.ObjectsDB;
                        Api.DataDB           = this.EbConnectionFactory.DataDB;
                        this.Api.ApiResponse = new ApiResponse();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Failed resolve api object from refid '{this.Api?.RefId}'");
                    Console.WriteLine(ex.Message);
                }
            }

            if (this.Api is null)
            {
                this.Api = new EbApi {
                    ApiResponse = new ApiResponse()
                };
                this.Api.ApiResponse.Message.ErrorCode   = ApiErrorCode.ApiNotFound;
                this.Api.ApiResponse.Message.Status      = "Api does not exist";
                this.Api.ApiResponse.Message.Description = $"Api does not exist!,";

                throw new Exception(this.Api.ApiResponse.Message.Description);
            }

            this.Api.SolutionId = SolutionId;
            this.Api.UserObject = GetUserObject(UserAuthId);

            this.Api.GlobalParams = ProcessGlobalDictionary(ApiData);
            this.Api.GlobalParams["eb_currentuser_id"] = UserId;

            if (!this.Api.GlobalParams.ContainsKey("eb_loc_id"))
            {
                this.Api.GlobalParams["eb_loc_id"] = this.Api.UserObject.Preference.DefaultLocation;
            }
        }