public BrokerMessage process(BrokerMessage request) { Data bodyData = Serializer.Serialize(request); log.debug(bodyData, "bodyData"); Entity entity = new DataEntity(bodyData); String requestUri; if (null == _authenticator) { requestUri = "/_dynamic_/open/services"; } else { if (_authenticator.AuthInt) { requestUri = "/_dynamic_/auth-int/services"; } else { requestUri = "/_dynamic_/auth/services"; } } HttpRequestAdapter requestAdapter = new HttpRequestAdapter(requestUri); requestAdapter.RequestEntity = entity; _httpDispatcher.post(requestAdapter, _authenticator, _responseHandler); return _responseHandler.getResponse(); }
private static Entity toEntity(int statusCode) { String statusString = HttpStatus.getReason(statusCode); String responseTemplate = "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><html><head><title>{0} {1}</title></head><body><h1>{2}</h1></body></html>"; String messageBody = String.Format(responseTemplate, statusCode, statusString, statusString); byte[] utf8Bytes = StringHelper.ToUtfBytes(messageBody); Data data = new Data(utf8Bytes); Entity answer = new DataEntity(data); return answer; }
// can return null private static DataEntity toDataEntity(Entity entity) { if (null == entity) { return null; } if (entity is DataEntity) { return (DataEntity)entity; } // limit of 64K if (entity.getContentLength() > 64 * 1024) { log.errorFormat("entity.getContentLength() > 64 * 1024; entity.getContentLength() = {0}", entity.getContentLength()); throw HttpErrorHelper.requestEntityTooLarge413FromOriginator(typeof(AuthIntRequestHandler)); } Data data = new Data(entity.getContent(), (int)entity.getContentLength()); DataEntity answer = new DataEntity(data); return answer; }
internal static HttpResponse processPostRequest(ServicesRegistery servicesRegistery, HttpRequest request) { if (HttpMethod.POST != request.Method) { log.errorFormat("unsupported method; request.Method = '{0}'", request.Method); throw HttpErrorHelper.badRequest400FromOriginator(typeof(ServicesRequestHandler)); } Entity entity = request.Entity; if (_MAXIMUM_REQUEST_ENTITY_LENGTH < entity.getContentLength()) { log.errorFormat("_MAXIMUM_REQUEST_ENTITY_LENGTH < entity.getContentLength(); _MAXIMUM_REQUEST_ENTITY_LENGTH = {0}; entity.getContentLength() = {1}", _MAXIMUM_REQUEST_ENTITY_LENGTH, entity.getContentLength()); throw HttpErrorHelper.requestEntityTooLarge413FromOriginator(typeof(ServicesRequestHandler)); } Data data = GetData(entity); BrokerMessage call = Serializer.deserialize(data); BrokerMessage response = process(servicesRegistery, call); HttpResponse answer; { if (BrokerMessageType.ONEWAY == call.getMessageType()) { answer = new HttpResponse(HttpStatus.NO_CONTENT_204); } else { Data responseData = Serializer.Serialize(response); Entity responseBody = new DataEntity(responseData); answer = new HttpResponse(HttpStatus.OK_200, responseBody); } } return answer; }