|  | 
|  | 1 | +# SOCKET HTTP SERVER | 
|  | 2 | + | 
|  | 3 | +Once you're done, you should be able to start the web server inside the homework directory using `python -u http_server.py` and then point your web browser at locations like: | 
|  | 4 | +	* http://localhost:10000/sample.txt | 
|  | 5 | +	* http://localhost:10000/a_web_page.html | 
|  | 6 | +	* http://localhost:10000/images/sample_1.png | 
|  | 7 | + | 
|  | 8 | +and see the corresponding file located under homework/webroot. Take a moment to look into the homework/webroot and see these files.  | 
|  | 9 | + | 
|  | 10 | +Inside this repository you'll find the http_server.py file. I've added enough stub code for the missing functions to let the server run. And there are more tests for you to make pass! | 
|  | 11 | + | 
|  | 12 | +You do NOT need to execute the `make_time.py` Python file. When a web user visits `http://localhost:1000/make_time.py` you only need to _serve up_ the contents of that file. But if you'd like to take on a challenge, then you _can_ choose to execute the file and serve up the result of performming that execution. | 
|  | 13 | + | 
|  | 14 | + | 
|  | 15 | +## Building the Response | 
|  | 16 | + | 
|  | 17 | +Your `response_path` function will need to accomplish the following tasks: | 
|  | 18 | + | 
|  | 19 | +  * It should take a URI as the sole argument | 
|  | 20 | +  * It should map the pathname represented by the URI to a filesystem location. | 
|  | 21 | +  * It should have a ‘home directory’, and look only in that location. | 
|  | 22 | +  * If the URI is a directory, it should return a plain-text listing of the directory contents and the mimetype text/plain. | 
|  | 23 | +  * If the URI is a file, it should return the contents of that file and its correct mimetype. | 
|  | 24 | +  * If the URI does not map to a real location, it should raise an exception that the server can catch to return a 404 response. | 
|  | 25 | + | 
|  | 26 | +Because your server will be transmitting files as bytes, you might want to try searching for "reading a file as bytes in Python". | 
|  | 27 | + | 
|  | 28 | +To find the correct mimetype for a file, you might find the following code helpful: | 
|  | 29 | + | 
|  | 30 | +``` | 
|  | 31 | +>>> import mimetypes | 
|  | 32 | +>>> mimetypes.guess_type('file.txt')[0] | 
|  | 33 | +    'text/plain' | 
|  | 34 | +>>> mimetypes.types_map['.txt'] | 
|  | 35 | +    'text/plain' | 
|  | 36 | +``` | 
|  | 37 | + | 
|  | 38 | +## Use Your Tests | 
|  | 39 | + | 
|  | 40 | +As you work your way through the steps outlined above, look at your tests. Write code that makes them pass. | 
|  | 41 | + | 
0 commit comments