Commit f68cce9e authored by mohammed.shibili's avatar mohammed.shibili

first

parents
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N801" />
</list>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (Players)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Players.iml" filepath="$PROJECT_DIR$/.idea/Players.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
import uvicorn
if __name__ == "__main__":
uvicorn.run("scripts.service.player_details:app", port=8000, reload=True)
\ No newline at end of file
from scripts.core.handlers.factory import LeftFootPlayerFactory, RightFootPlayerFactory
from scripts.core.handlers.position import Defender, Midfielder, Striker
factory_map = {
'left': LeftFootPlayerFactory,
'right': RightFootPlayerFactory
}
player_map = {
'defender': Defender,
'midfielder': Midfielder,
'striker': Striker
}
from abc import ABC, abstractmethod
from scripts.core.handlers.player_names import LeftFootDefender, LeftFootMidfielder, LeftFootStriker, RightFootDefender, \
RightFootMidfielder, RightFootStriker
class PlayerFactory(ABC):
@abstractmethod
def create_defender(self):
pass
@abstractmethod
def create_midfielder(self):
pass
@abstractmethod
def create_striker(self):
pass
class LeftFootPlayerFactory(PlayerFactory):
def create_defender(self):
return LeftFootDefender()
def create_midfielder(self):
return LeftFootMidfielder()
def create_striker(self):
return LeftFootStriker()
class RightFootPlayerFactory(PlayerFactory):
def create_defender(self):
return RightFootDefender()
def create_midfielder(self):
return RightFootMidfielder()
def create_striker(self):
return RightFootStriker()
from scripts.core.handlers.position import Defender, Midfielder, Striker
def player_name(player):
if isinstance(player, Defender):
response = player.defend()
elif isinstance(player, Midfielder):
response = player.pass_ball()
elif isinstance(player, Striker):
response = player.shoot()
else:
response = "Invalid player object"
return response
from scripts.core.handlers.position import Defender, Midfielder, Striker
class LeftFootDefender(Defender):
def defend(self):
return "Silva"
class RightFootDefender(Defender):
def defend(self):
return "Ramos"
class LeftFootMidfielder(Midfielder):
def pass_ball(self):
return "modric"
class RightFootMidfielder(Midfielder):
def pass_ball(self):
return "Pogba"
class LeftFootStriker(Striker):
def shoot(self):
return "Messi"
class RightFootStriker(Striker):
def shoot(self):
return "Ronaldo"
from abc import abstractmethod, ABC
class Defender(ABC):
@abstractmethod
def defend(self):
pass
class Midfielder(ABC):
@abstractmethod
def pass_ball(self):
pass
class Striker(ABC):
@abstractmethod
def shoot(self):
pass
from fastapi import FastAPI
from scripts.constants.player_dicts import factory_map
from scripts.core.handlers.get_names import player_name
app = FastAPI()
@app.get("/details")
async def get_details(position: str, foot: str):
factory_class = factory_map.get(foot)
factory = factory_class()
player = getattr(factory, f"create_{position}")()
response = player_name(player)
return response
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment