- python3.6 or later
- pip3
- bottle
- Install requirments
pip3 install -r requirements.txt
- Run
python3 server.py
- Server will be running on port 8001
- Endpoint can be reached at http://localhost:8001/get_info
git clone https://github.com/waleedhammam/national_id
cd national_id
poetry install
python3 server.py
-
/get_info
-
Accepts post requests with "Content-Type: application/json" Header
-
Example request:
curl -H "Content-Type: application/json" -d '{"id_number": "29009121201812"}' -XPOST http://localhost:8001/get_info
-
-
Response
- 200 OK, json_info: national id is validated and info extraction ok
- 400 Bad Request: Wrong national id number
- 500 Internal Server Error: Invalid request from user (invalid json, invalid form of data)
Example response:
{"nationl_id_data": {"year_of_birth": "1994", "month_of_birth": "9", "day_of_birth": "15", "governorate": "Al Daqhlia", "type": "Male"}}
-
- According to this source
The national ID consists of the following:
+-+--+--+--+--+----+-+
|2|90|01|01|12|3456|7|
+--------------------+
|A|B |C |D |E | F |G|
+-+--+--+--+--+----+-+
-
A -> The century: A=2 From (1900-1999), A=3 From (2000-2099)
-
B~D (Date of birth):
- B -> Year of birth
- C -> Month of birth
- D -> Day of birth
-
E -> Governorate code ex: {12: "Al Daqhlia"}
-
F -> Unique code. (Odd is male, Even is female)
-
G -> Check digit for verification
- Lib test:
pytest -s tests/test_national_id.py
- Test the endpoint
python3 -m pytest -s tests/test_endpoint.py
- You can build and run the dockerfile in
docker directory
docker build -t waleedhammam/national_id .
-
Library national id is pip installable
pip install national-id
to be used in the whole system -
Example usage:
from lib.national_id import NationalID instance = NationalID("28510291201512") instance.get_info() Out: (True, {'year_of_birth': '1985', 'month_of_birth': '10', 'day_of_birth': '29', 'governorate': 'Al Daqhlia', 'type': 'Male'})