Skip to content

Commit

Permalink
refactor - fastrequest.http package - v1.3.0 beta release
Browse files Browse the repository at this point in the history
  • Loading branch information
ozansz committed Feb 23, 2020
1 parent 1fd3059 commit c6c5475
Show file tree
Hide file tree
Showing 18 changed files with 39 additions and 38 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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())
Expand Down Expand Up @@ -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.

Expand Down
Empty file added fastrequest/__init__.py
Empty file.
Binary file added fastrequest/__pycache__/__init__.cpython-37.pyc
Binary file not shown.
Empty file added fastrequest/http/__init__.py
Empty file.
File renamed without changes.
File renamed without changes.
File renamed without changes.
16 changes: 8 additions & 8 deletions src/fastrequest.c → fastrequest/http/http.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <stdlib.h>
#include <stdint.h>

#include "fastrequest.h"
#include "http.h"
#include "stringbuffer.h"
#include "api.h"
#include "utils.h"
Expand Down Expand Up @@ -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;
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion src/stringbuffer.c → fastrequest/http/stringbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/utils.c → fastrequest/http/utils.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <stdint.h>

#include "fastrequest.h"
#include "http.h"

void FastRequest_Debug(const char *msg) {
#ifdef FR_DEBUG
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down
17 changes: 9 additions & 8 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
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']
)

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]
)
10 changes: 5 additions & 5 deletions tests/test_get.py
Original file line number Diff line number Diff line change
@@ -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"
})
Expand Down
16 changes: 8 additions & 8 deletions tests/test_post.py
Original file line number Diff line number Diff line change
@@ -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 = {
Expand All @@ -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 = [
Expand Down

0 comments on commit c6c5475

Please sign in to comment.