public void Execute(IJobExecutionContext context)
        {
            var settings = context.JobDetail.JobDataMap["settings"] as PollingSettings;
            if (settings == null)
            {
                _logger.Error("Error retrieving settings for job {0}".Fmt(context.JobDetail.Key));
                return;
            }

            _logger.Info("Executing polling job for client {0} provider {1}".Fmt(settings.ClientId, settings.Provider));

            // retrieve dispatcher
            var dispatcher = SmsDispatcherFactory.GetDispatcherByName(settings.Provider, settings.DispatcherSettings);

            // setup rest client - no need for validation here, it's already in a valid URI
            _client.BaseUrl = new Uri(settings.PollingUrl.Scheme + "://" + settings.PollingUrl.Authority + "/");

            // build request
            var path = HttpUtility.UrlDecode(settings.PollingUrl.PathAndQuery);
            var request = new RestRequest(path, Method.GET);
            request.AddUrlSegment("clientId", settings.ClientId);

            // retrieve response
            var response = _client.Execute<List<SmsDispatch>>(request);
            if (response.ResponseStatus != ResponseStatus.Completed)
            {
                _logger.Error("Error retrieving jobs from {0}".Fmt(request.ToString()));
                return;
            }

            try
            {
                // dispatch
                var results = dispatcher.Dispatch(response.Data).ToList();
                var stats = new
                {
                    Processed = results.Count(),
                    Successful = results.Count(x => x.Error == false),
                    Failed = results.Count(x => x.Error)
                };

                _logger.Info("{0} records processed - {1} successful and {2} failed".Fmt(stats.Processed, stats.Successful, stats.Failed ));

                UpdateDispatchRecords(results);
            }
            catch (Exception ex)
            {
                _logger.Error("Unable to dispatch {0} dispatches - error {1}".Fmt(response.Data.Count(), ex));
            }
        }
Example #2
0
        public static void Main(string[] args)
        {
            var client = new RestClient("http://127.0.0.1:8080/api/");
            client.Options (new RestRequest () {RequestFormat = DataFormat.Json,  });

            var user = new
            {
                username = "******",
                password = "******",
                passwordConfirm = "hej%Hej123"
            };

            var request = new RestRequest("user/register", Method.POST);
            request.RequestFormat = DataFormat.Json;
            request.AddBody(user);
            Console.WriteLine (request.ToString ());

            IRestResponse response = client.Execute(request);

            Console.WriteLine (response.Content);
            Console.ReadKey ();
        }
Example #3
0
        /// <summary>
        /// returns the trading history - an array of user’s trades(trade objects).
        /// /api/1/trading/trades
        /// </summary>
        /// <param name="by">Selects if filtering and sorting is performed by trade_id or by timestamp, Required
        /// possible values: "trade_id" or "ts"</param>
        /// <param name="start_index">Zero-based index. Default value is 0, Required</param>
        /// <param name="max_results"> 	Maximum quantity of returned results, at most 1000, Required</param>
        /// <param name="symbols">Comma-separated list of currency symbols</param>
        /// <param name="sort">Trades are sorted ascending (default) or descending</param>
        /// <param name="from">Returns trades with trade_id > specified trade_id (if by=trade_id) or returns trades with timestamp >= specified timestamp(ifby=ts`)</param>
        /// <param name="till">Returns trades with trade_id < specified trade_id (if by=trade_id) or returns trades with timestamp < specified timestamp (if by=ts)</param>
        /// <returns></returns>
        public async Task<Trades> GetTrades(string by = "trade_id", int start_index = 0, int max_results = 1000, string symbols = null, string sort = "asc",
            string from = null, string till = null)
        {
            var request = new RestRequest("/api/1/trading/trades");

            request.Parameters.Add(new Parameter { Value = by, Name = "by", Type = ParameterType.GetOrPost });
            request.Parameters.Add(new Parameter { Value = start_index, Name = "start_index", Type = ParameterType.GetOrPost });
            request.Parameters.Add(new Parameter { Value = max_results, Name = "max_results", Type = ParameterType.GetOrPost });
            if (!string.IsNullOrEmpty(symbols))
                request.Parameters.Add(new Parameter { Value = symbols, Name = "symbols", Type = ParameterType.GetOrPost });
            if (!string.IsNullOrEmpty(sort))
                request.Parameters.Add(new Parameter { Value = sort, Name = "sort", Type = ParameterType.GetOrPost });
            if (!string.IsNullOrEmpty(from))
                request.Parameters.Add(new Parameter { Value = from, Name = "from", Type = ParameterType.GetOrPost });
            if (!string.IsNullOrEmpty(till))
                request.Parameters.Add(new Parameter { Value = till, Name = "till", Type = ParameterType.GetOrPost });

            var str = request.ToString();
            return await _api.Execute(request);
        }