コード例 #1
0
        public async Task <T> SaveToQueue <T>(T obj, VerifiedUserContext user, string resourceId) where T : IHSObject
        {
            try
            {
                var orch = new OrchestrationObject <T>
                {
                    Token    = user.AccessToken,
                    ClientId = user.ClientID,
                    ID       = obj.ID,
                    Model    = obj
                };
                await _blobQueue.Save(orch.BuildPath(resourceId, user.ClientID), JsonConvert.SerializeObject(orch));

                return(await Task.FromResult(obj));
            }
            catch (OrderCloudIntegrationException ex)
            {
                throw new OrderCloudIntegrationException(ex.ApiError);
            }
            catch (Exception ex)
            {
                await _log.Save(new OrchestrationLog()
                {
                    Level   = LogLevel.Error,
                    Message = $"Failed to save blob to queue from API: {user.SupplierID} - {typeof(T)}:  {ex.Message}",
                    Current = JObject.FromObject(obj)
                });

                throw new OrderCloudIntegrationException(Headstart.Models.ErrorCodes.All["WriteFailure"], obj);
            }
        }
コード例 #2
0
        public void build_path <T>(RecordType type, T obj) where T : IHSObject
        {
            var model = new OrchestrationObject <T>()
            {
                ClientId = "fake",
                ID       = obj.ID,
                Token    = "fake",
                Model    = obj
            };
            var path = model.BuildPath("supplierid", "clientid");

            Assert.AreEqual(path, $"supplierid/clientid/{obj.Type().ToString().ToLower()}/id");
        }
コード例 #3
0
 public static string BuildPath <T>(this OrchestrationObject <T> obj, string resourceId, string clientId) where T : IHSObject
 {
     return($"{resourceId}/{clientId}/{obj.Model.Type()}/{obj.ID}".ToLower());
 }