/http_server/client/AWSHttpEchoClientRequestBuilder.cpp

http://github.com/jtblatt/duderino · C++ · 53 lines · 32 code · 16 blank · 5 comment · 17 complexity · 46ca31964263fc369cc742f39e844167 MD5 · raw file

  1. /* Copyright (c) 2009 Yahoo! Inc. All rights reserved.
  2. * The copyrights embodied in the content of this file are licensed by Yahoo! Inc.
  3. * under the BSD (revised) open source license.
  4. */
  5. #ifndef AWS_HTTP_ECHO_CLIENT_REQUEST_BUILDER_H
  6. #include <AWSHttpEchoClientRequestBuilder.h>
  7. #endif
  8. ESFError AWSHttpEchoClientRequestBuilder(const char *host, int port, const char *absPath, const char *method, const char *contentType,
  9. AWSHttpClientTransaction *transaction) {
  10. if (0 == host || 0 == absPath || 0 == method || 0 == transaction) {
  11. return ESF_NULL_POINTER;
  12. }
  13. if (0 > port || 65536 <= port) {
  14. return ESF_INVALID_ARGUMENT;
  15. }
  16. AWSHttpRequest *request = transaction->getRequest();
  17. AWSHttpRequestUri *requestUri = request->getRequestUri();
  18. requestUri->setType(AWSHttpRequestUri::AWS_URI_HTTP);
  19. requestUri->setAbsPath((const unsigned char *) absPath);
  20. request->setMethod((const unsigned char *) method);
  21. ESFError error = request->addHeader(transaction->getAllocator(), (const unsigned char *) "Host", (const unsigned char *) "%s:%d", host, port);
  22. if (ESF_SUCCESS != error) {
  23. return error;
  24. }
  25. if (contentType) {
  26. error = request->addHeader((const unsigned char *) "Content-Type", (const unsigned char *) contentType, transaction->getAllocator());
  27. if (ESF_SUCCESS != error) {
  28. return error;
  29. }
  30. }
  31. error = request->addHeader((const unsigned char *) "Transfer-Encoding", (const unsigned char *) "chunked", transaction->getAllocator());
  32. if (ESF_SUCCESS != error) {
  33. return error;
  34. }
  35. // Body is hardcoded in AWSHttpEchoClientHandler.cpp
  36. return ESF_SUCCESS;
  37. }