| 99 | |
| 100 | |
| 101 | class ResponseProvider: |
| 102 | def __init__(self, delegate): |
| 103 | self.headers = list() |
| 104 | self.delegate = delegate |
| 105 | self.byterange = None |
| 106 | self.is_chunked = False |
| 107 | self.response_code = 200 |
| 108 | |
| 109 | |
| 110 | def pong(self): |
| 111 | self.delegate.got_pinged() |
| 112 | return Payload("pong") |
| 113 | |
| 114 | |
| 115 | def my_id(self): |
| 116 | return Payload(str(os.getpid())) |
| 117 | |
| 118 | |
| 119 | def strip_query(self, url): |
| 120 | query_start = url.find("?") |
| 121 | if (query_start > 0): |
| 122 | return url[:query_start] |
| 123 | return url |
| 124 | |
| 125 | |
| 126 | def response_for_url_and_headers(self, url, headers): |
| 127 | self.headers = headers |
| 128 | self.chunk_requested() |
| 129 | url = self.strip_query(url) |
| 130 | try: |
| 131 | return { |
| 132 | "/unit_tests/1.txt": self.test1, |
| 133 | "/unit_tests/notexisting_unittest": self.test_404, |
| 134 | "/unit_tests/permanent": self.test_301, |
| 135 | "/unit_tests/47kb.file": self.test_47_kb, |
| 136 | # Following two URIs are used to test downloading failures on different platforms. |
| 137 | "/unit_tests/mac/1234/Uruguay.mwm": self.test_404, |
| 138 | "/unit_tests/linux/1234/Uruguay.mwm": self.test_404, |
| 139 | "/ping": self.pong, |
| 140 | "/kill": self.kill, |
| 141 | "/id": self.my_id, |
| 142 | "/partners/time": self.partners_time, |
| 143 | "/partners/price": self.partners_price, |
| 144 | "/booking/hotelAvailability": self.partners_hotel_availability, |
| 145 | "/booking/deals": self.partners_hotels_with_deals, |
| 146 | "/booking/blockAvailability": self.partners_block_availability, |
| 147 | "/partners/taxi_info": self.partners_yandex_taxi_info, |
| 148 | "/partners/get-offers-in-bbox/": self.partners_rent_nearby, |
| 149 | "/partners/CalculateByCoords": self.partners_calculate_by_coords, |
| 150 | "/gallery/v2/search/": self.promo_gallery_city, |
| 151 | "/single/empty/gallery/v2/search/": self.promo_gallery_city_single_empty, |
| 152 | "/single/gallery/v2/search/": self.promo_gallery_city_single, |
| 153 | "/partners/oauth/token": self.freenow_auth_token, |
| 154 | "/partners/service-types": self.freenow_service_types, |
| 155 | "/gallery/v2/map": self.guides_on_map_gallery, |
| 156 | "/partners/get_supported_tariffs": self.citymobil_supported_tariffs, |
| 157 | "/partners/calculate_price": self.citymobil_calculate_price, |
| 158 | }.get(url, self.test_404)() |