Пример #1
0
 /// <summary>
 /// Copies and translates the contents of the specified table into the specified config file
 /// </summary>
 /// <param name="config"></param>
 /// <param name="objectInstance"></param>
 public static void SetConfigFromObject(DynamicConfigFile config, ObjectInstance objectInstance)
 {
     config.Clear();
     foreach (var property in objectInstance.GetOwnProperties())
     {
         var value = property.Value.Value?.ToObject();
         if (value != null) config[property.Key] = value;
     }
 }
Пример #2
0
        private string SerializeObject(ObjectInstance value)
        {
            string final;

            EnsureNonCyclicity(value);
            _stack.Push(value);
            var stepback = _indent;
            _indent += _gap;
            
            var k = _propertyList ?? value.GetOwnProperties()
                .Where(x => x.Value.Enumerable.HasValue && x.Value.Enumerable.Value == true)
                .Select(x => x.Key)
                .ToList();

            var partial = new List<string>();
            foreach (var p in k)
            {
                var strP = Str(p, value);
                if (strP != JsValue.Undefined)
                {
                    var member = Quote(p) + ":";
                    if (_gap != "")
                    {
                        member += " ";
                    }
                    member += strP.AsString(); // TODO:This could be undefined
                    partial.Add(member);
                }
            }
            if (partial.Count == 0)
            {
                final = "{}";
            }
            else
            {
                if (_gap == "")
                {
                    var separator = ",";
                    var properties = System.String.Join(separator, partial.ToArray());
                    final = "{" + properties + "}";
                }
                else
                {
                    var separator = ",\n" + _indent;
                    var properties = System.String.Join(separator, partial.ToArray());
                    final = "{\n" + _indent + properties + "\n" + stepback + "}";
                }                
            }
            _stack.Pop();
            _indent = stepback;
            return final;
        }
Пример #3
0
        //public JiraHistory[] GetIssueHistory(int issueId)
        //{
        //    var parameters = new Dictionary<string, string>
        //    {
        //        { "expand", "changelog" }
        //    };
        //    dynamic response = Request(
        //        String.Format("/rest/api/2/issue/{0}", issueId),
        //        parameters
        //    );
        //    var result = new List<JiraHistory>();
        //    foreach (var history in response.changelog.histories)
        //    {
        //        result.Add(new JiraHistory(history));
        //    }
        //    return result.ToArray();
        //}
        //public JiraStatus[] GetStatuses()
        //{
        //    dynamic response = Request("/rest/api/2/status");
        //    var result = new List<JiraStatus>();
        //    foreach (var status in response)
        //    {
        //        result.Add(new JiraStatus(status));
        //    }
        //    return result.ToArray();
        //}
        //public JiraTransition[] GetTransitions(int issueId, int? transitionId = null)
        //{
        //    var parameters = new Dictionary<string, string>();
        //    if (transitionId.HasValue)
        //        parameters.Add("transitionId", transitionId.Value.ToString());
        //    dynamic response = Request(
        //        String.Format("/rest/api/2/issue/{0}/transitions", issueId),
        //        parameters
        //    );
        //    var result = new List<JiraTransition>();
        //    foreach (var transition in response.transitions)
        //    {
        //        result.Add(new JiraTransition(transition));
        //    }
        //    return result.ToArray();
        //}
        //public void Transition(int issueId, int transitionId)
        //{
        //    Request(
        //        String.Format(
        //            "/rest/api/2/issue/{0}/transitions", issueId
        //        ),
        //        null,
        //        new JObject(
        //            new JProperty(
        //                "transition",
        //                new JObject(
        //                    new JProperty(
        //                        "id", transitionId
        //                    )
        //                )
        //            )
        //        )
        //    );
        //}
        //public void Comment(int issueId, string comment)
        //{
        //    Request(
        //        String.Format("/rest/api/2/issue/{0}/comment", issueId),
        //        null,
        //        new JObject(
        //            new JProperty("body", comment)
        //        )
        //    );
        //}
        //public void LogWork(int issueId, string timeSpent, DateTime dateStarted, AdjustRemainingMode adjustRemaining, string adjustRemainingBy, string workDescription)
        //{
        //    var parameters = new Dictionary<string, string>();
        //    switch (adjustRemaining)
        //    {
        //        case AdjustRemainingMode.AdjustAutomatically:
        //            parameters.Add("adjustEstimate", "auto");
        //            break;
        //        case AdjustRemainingMode.DonNotChange:
        //            parameters.Add("adjustEstimate", "leave");
        //            break;
        //        case AdjustRemainingMode.ReduceBy:
        //            parameters.Add("adjustEstimate", "manual");
        //            parameters.Add("reduceBy", adjustRemainingBy);
        //            break;
        //        case AdjustRemainingMode.SetTo:
        //            parameters.Add("adjustEstimate", "new");
        //            parameters.Add("newEstimate", adjustRemainingBy);
        //            break;
        //    }
        //    var obj = new JObject(
        //        new JProperty(
        //            "timeSpent", timeSpent
        //        )
        //    );
        //    if (workDescription != null)
        //        obj.Add(new JProperty("comment", workDescription));
        //    Request(
        //        String.Format(
        //            "/rest/api/2/issue/{0}/worklog", issueId
        //        ),
        //        parameters,
        //        obj
        //    );
        //}
        public string Request(string url, ObjectInstance parameters, string payload)
        {
            Dictionary<string, string> dictionary = null;

            if (parameters != null)
            {
                dictionary = new Dictionary<string, string>();

                foreach (var parameter in parameters.GetOwnProperties())
                {
                    dictionary[parameter.Key] = parameter.Value?.ToString();
                }
            }

            return Request(url, dictionary, payload);
        }
Пример #4
0
        /// <summary>
        /// Loads this plugin
        /// </summary>
        public override void Load()
        {
            // Load the plugin
            LoadSource();
            if (JavaScriptEngine.GetValue(Name).TryCast<ObjectInstance>() == null) throw new Exception("Plugin is missing main object");
            Class = JavaScriptEngine.GetValue(Name).AsObject();
            if (!Class.HasProperty("Name"))
                Class.FastAddProperty("Name", Name, true, false, true);
            else
                Class.Put("Name", Name, true);

            // Read plugin attributes
            if (!Class.HasProperty("Title") || string.IsNullOrEmpty(Class.Get("Title").AsString())) throw new Exception("Plugin is missing title");
            if (!Class.HasProperty("Author") || string.IsNullOrEmpty(Class.Get("Author").AsString())) throw new Exception("Plugin is missing author");
            if (!Class.HasProperty("Version") || Class.Get("Version").ToObject() == null) throw new Exception("Plugin is missing version");
            Title = Class.Get("Title").AsString();
            Author = Class.Get("Author").AsString();
            Version = (VersionNumber) Class.Get("Version").ToObject();
            if (Class.HasProperty("Description")) Description = Class.Get("Description").AsString();
            if (Class.HasProperty("ResourceId")) ResourceId = (int)Class.Get("ResourceId").AsNumber();
            HasConfig = Class.HasProperty("HasConfig") && Class.Get("HasConfig").AsBoolean();

            // Set attributes
            Class.FastAddProperty("Plugin", JsValue.FromObject(JavaScriptEngine, this), true, false, true);

            Globals = new Dictionary<string, ICallable>();
            foreach (var property in Class.GetOwnProperties())
            {
                var callable = property.Value.Value?.TryCast<ICallable>();
                if (callable != null) Globals.Add(property.Key, callable);
            }
            foreach (var property in Class.Prototype.GetOwnProperties())
            {
                var callable = property.Value.Value?.TryCast<ICallable>();
                if (callable != null) Globals.Add(property.Key, callable);
            }
            if (!HasConfig) HasConfig = Globals.ContainsKey("LoadDefaultConfig");

            // Bind any base methods (we do it here because we don't want them to be hooked)
            BindBaseMethods();
        }