llsdhttp.py
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. """
  2. @file llsdhttp.py
  3. @brief Functions to ease moving llsd over http
  4.  
  5. $LicenseInfo:firstyear=2006&license=mit$
  6. Copyright (c) 2006-2010, Linden Research, Inc.
  7. Permission is hereby granted, free of charge, to any person obtaining a copy
  8. of this software and associated documentation files (the "Software"), to deal
  9. in the Software without restriction, including without limitation the rights
  10. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  11. copies of the Software, and to permit persons to whom the Software is
  12. furnished to do so, subject to the following conditions:
  13. The above copyright notice and this permission notice shall be included in
  14. all copies or substantial portions of the Software.
  15. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. THE SOFTWARE.
  22. $/LicenseInfo$
  23. """
  24.  
  25. import os.path
  26. import os
  27. import urlparse
  28. from indra.base import llsd
  29. from eventlet import httpc
  30. suite = httpc.HttpSuite(llsd.format_xml, llsd.parse, 'application/llsd+xml')
  31. delete = suite.delete
  32. delete_ = suite.delete_
  33. get = suite.get
  34. get_ = suite.get_
  35. head = suite.head
  36. head_ = suite.head_
  37. post = suite.post
  38. post_ = suite.post_
  39. put = suite.put
  40. put_ = suite.put_
  41. request = suite.request
  42. request_ = suite.request_
  43. # import every httpc error exception into our namespace for convenience
  44. for x in httpc.status_to_error_map.itervalues():
  45.     globals()[x.__name__] = x
  46. ConnectionError = httpc.ConnectionError
  47. Retriable = httpc.Retriable
  48. for x in (httpc.ConnectionError,):
  49.     globals()[x.__name__] = x
  50. def postFile(url, filename):
  51.     f = open(filename)
  52.     body = f.read()
  53.     f.close()
  54.     llsd_body = llsd.parse(body)
  55.     return post_(url, llsd_body)
  56. # deprecated in favor of get_
  57. def getStatus(url, use_proxy=False):
  58.     status, _headers, _body = get_(url, use_proxy=use_proxy)
  59.     return status
  60. # deprecated in favor of put_
  61. def putStatus(url, data):
  62.     status, _headers, _body = put_(url, data)
  63.     return status
  64. # deprecated in favor of delete_
  65. def deleteStatus(url):
  66.     status, _headers, _body = delete_(url)
  67.     return status
  68. # deprecated in favor of post_
  69. def postStatus(url, data):
  70.     status, _headers, _body = post_(url, data)
  71.     return status
  72. def postFileStatus(url, filename):
  73.     status, _headers, body = postFile(url, filename)
  74.     return status, body
  75. def getFromSimulator(path, use_proxy=False):
  76.     return get('http://' + simulatorHostAndPort + path, use_proxy=use_proxy)
  77. def postToSimulator(path, data=None):
  78.     return post('http://' + simulatorHostAndPort + path, data)