From c6c5475559ebe0cb9f9cffb69dec7aeb8c03743d Mon Sep 17 00:00:00 2001 From: Ozan Sazak Date: Sun, 23 Feb 2020 19:52:37 +0300 Subject: [PATCH] refactor - fastrequest.http package - v1.3.0 beta release --- README.md | 12 ++++++------ fastrequest/__init__.py | 0 .../__pycache__/__init__.cpython-37.pyc | Bin 0 -> 139 bytes fastrequest/http/__init__.py | 0 {src => fastrequest/http}/api.c | 0 {src => fastrequest/http}/api.h | 0 {src => fastrequest/http}/errors.h | 0 src/fastrequest.c => fastrequest/http/http.c | 16 ++++++++-------- src/fastrequest.h => fastrequest/http/http.h | 0 {src => fastrequest/http}/models.h | 0 {src => fastrequest/http}/stringbuffer.c | 2 +- {src => fastrequest/http}/stringbuffer.h | 0 {src => fastrequest/http}/utils.c | 2 +- {src => fastrequest/http}/utils.h | 0 install.sh | 2 +- setup.py | 17 +++++++++-------- tests/test_get.py | 10 +++++----- tests/test_post.py | 16 ++++++++-------- 18 files changed, 39 insertions(+), 38 deletions(-) create mode 100644 fastrequest/__init__.py create mode 100644 fastrequest/__pycache__/__init__.cpython-37.pyc create mode 100644 fastrequest/http/__init__.py rename {src => fastrequest/http}/api.c (100%) rename {src => fastrequest/http}/api.h (100%) rename {src => fastrequest/http}/errors.h (100%) rename src/fastrequest.c => fastrequest/http/http.c (96%) rename src/fastrequest.h => fastrequest/http/http.h (100%) rename {src => fastrequest/http}/models.h (100%) rename {src => fastrequest/http}/stringbuffer.c (99%) rename {src => fastrequest/http}/stringbuffer.h (100%) rename {src => fastrequest/http}/utils.c (91%) rename {src => fastrequest/http}/utils.h (100%) diff --git a/README.md b/README.md index 5c2d577..404feba 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ chmod +x install.sh Just import `fastrequest` module. It's usage is as easy as ABC! ```python -import fastrequest +import fastrequest.http -res = fastrequest.http_get("https://www.google.com") +res = fastrequest.http.get("https://www.google.com") with open("index.html", "w") as savefile: savefile.write(res.text()) @@ -27,9 +27,9 @@ Also, JSON (`application/json`) responses can be handled easily too. ```python import json -import fastrequest +import fastrequest.http -res = fastrequest.http_get("https://jsonplaceholder.typicode.com/comments?postId=1") +res = fastrequest.http.get("https://jsonplaceholder.typicode.com/comments?postId=1") with open("data.json", "w") as fp: json.dump(fp, res.json()) @@ -57,9 +57,9 @@ class HTTPResponse(object): return json.loads(self.text()) ``` -### http_get +### http.get -`http_get(url: str[, headers:dict]) -> HTTPResponse` +`http.get(url: str[, headers:dict]) -> HTTPResponse` HTTP/GET request function using `libcurl` as backend. diff --git a/fastrequest/__init__.py b/fastrequest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fastrequest/__pycache__/__init__.cpython-37.pyc b/fastrequest/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..64a9145b533d42c8c396c1216d27af22552ac7e8 GIT binary patch literal 139 zcmZ?b<>g`kf|ON3aUl9Jh=2h`Aj1KOi&=m~3PUi1CZpd #include -#include "fastrequest.h" +#include "http.h" #include "stringbuffer.h" #include "api.h" #include "utils.h" @@ -371,27 +371,27 @@ PyObject *FastRequest_HttpPost(PyObject *self, PyObject *args) { return response; } -static PyMethodDef FastRequestMethods[] = { - {"http_get", FastRequest_HttpGet, METH_VARARGS, "Fast GET request using libcurl4 library."}, - {"http_post", FastRequest_HttpPost, METH_VARARGS, "Fast POST request using libcurl4 library."}, +static PyMethodDef FastRequestHTTPMethods[] = { + {"get", FastRequest_HttpGet, METH_VARARGS, "Fast GET request using libcurl4 library."}, + {"post", FastRequest_HttpPost, METH_VARARGS, "Fast POST request using libcurl4 library."}, {NULL, NULL, 0, NULL} }; -static struct PyModuleDef fastrequestmodule = { +static struct PyModuleDef fastrequesthttpmodule = { PyModuleDef_HEAD_INIT, "fastrequest", "A Python C extension module for fast HTTP requests with SSL/TLS support", -1, - FastRequestMethods + FastRequestHTTPMethods }; -PyMODINIT_FUNC PyInit_fastrequest(void) { +PyMODINIT_FUNC PyInit_http(void) { PyObject *m; if (PyType_Ready(&HTTPResponseType) < 0) return NULL; - m = PyModule_Create(&fastrequestmodule); + m = PyModule_Create(&fastrequesthttpmodule); if (m == NULL) return NULL; diff --git a/src/fastrequest.h b/fastrequest/http/http.h similarity index 100% rename from src/fastrequest.h rename to fastrequest/http/http.h diff --git a/src/models.h b/fastrequest/http/models.h similarity index 100% rename from src/models.h rename to fastrequest/http/models.h diff --git a/src/stringbuffer.c b/fastrequest/http/stringbuffer.c similarity index 99% rename from src/stringbuffer.c rename to fastrequest/http/stringbuffer.c index cc39dd1..b507a09 100644 --- a/src/stringbuffer.c +++ b/fastrequest/http/stringbuffer.c @@ -7,7 +7,7 @@ #include "stringbuffer.h" #include "utils.h" #include "errors.h" -#include "fastrequest.h" +#include "http.h" StringBuffer *StringBuffer_Create(void) { FastRequest_FuncDebug("StringBuffer_Create", "==> Function enter"); diff --git a/src/stringbuffer.h b/fastrequest/http/stringbuffer.h similarity index 100% rename from src/stringbuffer.h rename to fastrequest/http/stringbuffer.h diff --git a/src/utils.c b/fastrequest/http/utils.c similarity index 91% rename from src/utils.c rename to fastrequest/http/utils.c index 165d7fe..1e4239e 100644 --- a/src/utils.c +++ b/fastrequest/http/utils.c @@ -1,7 +1,7 @@ #include #include -#include "fastrequest.h" +#include "http.h" void FastRequest_Debug(const char *msg) { #ifdef FR_DEBUG diff --git a/src/utils.h b/fastrequest/http/utils.h similarity index 100% rename from src/utils.h rename to fastrequest/http/utils.h diff --git a/install.sh b/install.sh index 2c01cb0..0639934 100755 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ pip3 install . echo -e "\n[+] Making cleanup ..." rm -rf build/ -rm *.so +rm fastrequest/*.so if [ "$1" == "--notest" ]; then echo -e "\n[i] Done. Bye." diff --git a/setup.py b/setup.py index 77c6741..1b53768 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ from setuptools import Extension, setup -module = Extension( - "fastrequest", +http_module = Extension( + "fastrequest.http", sources=[ - 'src/fastrequest.c', - 'src/api.c', - 'src/stringbuffer.c', - 'src/utils.c' + 'fastrequest/http/http.c', + 'fastrequest/http/api.c', + 'fastrequest/http/stringbuffer.c', + 'fastrequest/http/utils.c' ], library_dirs=['/usr/local/lib'], libraries=['curl'] @@ -14,7 +14,8 @@ setup( name="fastrequest", - version="1.2.6-beta", + version="1.3.0-beta", description="fastrequest fast http requests extension", - ext_modules=[module] + packages=['fastrequest'], + ext_modules=[http_module] ) diff --git a/tests/test_get.py b/tests/test_get.py index b863b84..8204f9e 100644 --- a/tests/test_get.py +++ b/tests/test_get.py @@ -1,19 +1,19 @@ -import fastrequest +import fastrequest.http def test_basic_get(): - return fastrequest.http_get("https://www.google.com/") + return fastrequest.http.get("https://www.google.com/") def test_with_urlparams(): - return fastrequest.http_get("https://postman-echo.com/get?foo1=bar1&foo2=bar2") + return fastrequest.http.get("https://postman-echo.com/get?foo1=bar1&foo2=bar2") def test_with_headers(): - return fastrequest.http_get("https://www.google.com/", { + return fastrequest.http.get("https://www.google.com/", { "X-FR-Test": "v1.2.6", "X-Hello": "World" }) def test_with_params_and_headers(): - return fastrequest.http_get("https://postman-echo.com/get?foo1=bar1&foo2=bar2", { + return fastrequest.http.get("https://postman-echo.com/get?foo1=bar1&foo2=bar2", { "X-FR-Test": "v1.2.6", "X-Hello": "World" }) diff --git a/tests/test_post.py b/tests/test_post.py index e4909c1..6232399 100644 --- a/tests/test_post.py +++ b/tests/test_post.py @@ -1,7 +1,7 @@ import json from urllib.parse import urlencode, quote_plus -import fastrequest +import fastrequest.http test_query_params = {"foo1": "bar1", "foo2": "bar2"} test_headers = { @@ -19,37 +19,37 @@ encode_f = lambda x: urlencode(x, quote_via=quote_plus) def test_basic_post(): - return fastrequest.http_post("https://postman-echo.com/post") + return fastrequest.http.post("https://postman-echo.com/post") def test_with_urlparams(): - res = fastrequest.http_post("https://postman-echo.com/post?" + encode_f(test_query_params)) + res = fastrequest.http.post("https://postman-echo.com/post?" + encode_f(test_query_params)) assert(encode_f(res.json()["args"]) == encode_f(test_query_params)) return res def test_with_payload_string(): - res = fastrequest.http_post("https://postman-echo.com/post", encode_f(test_query_params)) + res = fastrequest.http.post("https://postman-echo.com/post", encode_f(test_query_params)) assert(encode_f(res.json()["form"]) == encode_f(test_query_params)) return res def test_with_payload_json(): - res = fastrequest.http_post("https://postman-echo.com/post", test_json_payload) + res = fastrequest.http.post("https://postman-echo.com/post", test_json_payload) assert(json.dumps(res.json()["json"]) == json.dumps(test_json_payload)) return res def test_with_payload_custom(): - return fastrequest.http_post("https://postman-echo.com/post", [1, 2, 3, ("q")]) + return fastrequest.http.post("https://postman-echo.com/post", [1, 2, 3, ("q")]) def test_with_headers(): - return fastrequest.http_post("https://postman-echo.com/post", "", test_headers) + return fastrequest.http.post("https://postman-echo.com/post", "", test_headers) def test_with_all(): - return fastrequest.http_post("https://postman-echo.com/post", test_json_payload, test_headers) + return fastrequest.http.post("https://postman-echo.com/post", test_json_payload, test_headers) if __name__ == "__main__": tests = [