public void PutRequest(IRequest request) { string requestGuid = Guid.NewGuid().ToString(); try { LogRequest(request, requestGuid); RequestContext context = new RequestContext(request.Uri); IRequestPerformer requestPerformer = null; RequestPerformerLocator requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator; if (!String.IsNullOrEmpty(context.ErrorMessage)) { throw new ApplicationException(context.ErrorMessage); } switch (context.RequestType) { case RequestType.Resource: requestPerformer = requestPerformerLocator.Resolve <PutResourceRequestPerformer>(context); break; case RequestType.Linked: requestPerformer = requestPerformerLocator.Resolve <PutLinkingRequestPerformer>(context); break; } if (null != requestPerformer) { requestPerformer.DoWork(request); } else { throw new RequestException("The request is not supported."); } LogResponse(request, requestGuid); } catch (Exception e) { LogException(e, requestGuid); throw; } }
public void GetRequest(IRequest request) { string requestGuid = Guid.NewGuid().ToString(); try { LogRequest(request, requestGuid); RequestContext context; IRequestPerformer requestPerformer = null; RequestPerformerLocator requestPerformerLocator; requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator; context = new RequestContext(request.Uri); if (!String.IsNullOrEmpty(context.ErrorMessage)) { throw new ApplicationException(context.ErrorMessage); } switch (context.RequestType) { case RequestType.Resource: requestPerformer = requestPerformerLocator.Resolve <GetResourceRequestPerformer>(context); break; case RequestType.SyncDigest: requestPerformer = requestPerformerLocator.Resolve <GetSyncDigestRequestPerformer>(context); break; case RequestType.SyncSource: requestPerformer = requestPerformerLocator.Resolve <GetSyncSourceRequestPerformer>(context); break; case RequestType.SyncTarget: requestPerformer = requestPerformerLocator.Resolve <GetSyncTargetRequestPerformer>(context); break; case RequestType.ResourceCollectionSchema: requestPerformer = requestPerformerLocator.Resolve <GetSchemaRequestPerformer>(context); break; case RequestType.ResourceSchema: requestPerformer = requestPerformerLocator.Resolve <GetResourceSchemaRequestPerformer>(context); break; case RequestType.ImportSchema: requestPerformer = requestPerformerLocator.Resolve <GetSchemaImportRequestPerformer>(context); break; case RequestType.Contract: requestPerformer = requestPerformerLocator.Resolve <GetContractRequestPerformer>(context); break; case RequestType.Dataset: requestPerformer = requestPerformerLocator.Resolve <GetDatasetRequestPerformer>(context); break; case RequestType.ResourceCollection: requestPerformer = requestPerformerLocator.Resolve <GetResourceCollectionRequestPerformer>(context); break; case RequestType.Linked: requestPerformer = requestPerformerLocator.Resolve <GetLinkingRequestPerformer>(context); break; case RequestType.ServiceSchema: requestPerformer = requestPerformerLocator.Resolve <GetServiceSchemaRequestPerformer>(context); break; } if (null != requestPerformer) { requestPerformer.DoWork(request); } else { throw new RequestException("The request is not supported."); } LogResponse(request, requestGuid); } catch (Exception e) { LogException(e, requestGuid); throw; } }
public void DeleteRequest(IRequest request) { string requestGuid = Guid.NewGuid().ToString(); try { LogRequest(request, requestGuid); RequestPerformerLocator requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator;; IRequestPerformer requestPerformer = null; RequestContext context = new RequestContext(request.Uri); switch (context.RequestType) { case RequestType.Resource: requestPerformer = requestPerformerLocator.Resolve <DeleteResourceRequestPerformer>(context); if (null != requestPerformer) { requestPerformer.DoWork(request); } else { throw new RequestException("The request is not supported."); } break; case RequestType.SyncSource: case RequestType.SyncTarget: requestPerformerLocator = RequestReceiver.NorthwindAdapter.RequestPerformerLocator; Exception error; if (requestPerformerLocator.Delete(context, out error)) { request.Response.StatusCode = System.Net.HttpStatusCode.OK; } else { if (error == null) { request.Response.StatusCode = System.Net.HttpStatusCode.NotFound; } else { throw error; } } break; case RequestType.Linked: requestPerformer = requestPerformerLocator.Resolve <DeleteLinkingRequestPerformer>(context); if (null == requestPerformer) { throw new RequestException("The request is not supported."); } requestPerformer.DoWork(request); break; default: throw new NotSupportedException("This Request was not supported"); } LogResponse(request, requestGuid); } catch (Exception e) { LogException(e, requestGuid); throw; } }