Skip to content

Commit

Permalink
chore: Remove unused email feature (#119)
Browse files Browse the repository at this point in the history
  • Loading branch information
roeniss authored Jul 22, 2024
2 parents f91f3e7 + 5fa5819 commit 852f4b2
Show file tree
Hide file tree
Showing 11 changed files with 19 additions and 146 deletions.
35 changes: 1 addition & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ dhapi buy-lotto645 -y # '로또6/45' 자동모드로 5장 구매 & 확인절차
- [로또6/45 구매](https://dhlottery.co.kr/gameInfo.do?method=gameMethod&wiselog=H_B_1_1) (`buy-lotto645`)
- 자동, 수동, 반자동 모드로 구매 가능합니다.
- 한 번에 최대 5장까지 구매 가능합니다.
- 매주 최대 5장까지 구매 가능합니다 (온라인 구매 제약사항입니다).
- 구매한 내역을 이메일로 전송할 수 있습니다. 고급 설정 섹션을 참고해주세요.
- 매주 최대 5장까지 구매 가능합니다 (동행복권 측의 온라인 구매 관련 정책입니다).
- [예치금 현황 조회](https://dhlottery.co.kr/userSsl.do?method=myPage) (`show-balance`)
- 현재 보유한 예치금 정보를 조회합니다.
- [고정 가상계좌 입금을 위한 세팅](https://dhlottery.co.kr/userSsl.do?method=myPage) (`assign-virtual-account`)
Expand Down Expand Up @@ -51,42 +50,10 @@ password = "dhlotter_second_pw"

이후 `-p` 플래그로 프로필을 골라 사용합니다.

### 이메일로 결과 전송 하기

> [!IMPORTANT]
> 아래 세팅대로 진행한다면 구매 결과를 담은 이메일이 아주 높은 확률로 스팸 메일함에 들어갑니다. 이럴 경우 해당 메일을 찾아서 '스팸이 아님' 체크를 해야 이후 메일들이 일반 메일함에 들어갑니다.

`-e` 플래그로 수신할 이메일을 지정합니다. 이렇게 하면 **콘솔에 결과가 출력되지 않고 지정한 이메일로 전송됩니다.** 아래 세팅이 추가적으로 필요합니다.

무료로 이메일을 보내기 위해 [Mailjet](https://www.mailjet.com/)을 사용합니다. 가입한 후, API KEY, SECRET KEY 를 발급합니다 (https://app.mailjet.com/account/apikeys).

키 정보를 ~/.dhapi/credentials 파일에 다음과 같이 기입합니다.

```text
[default]
username = "dhlotter_id"
password = "dhlotter_pw"
mailjet_api_key = "YOUR_API_KEY"
mailjet_api_secret = "YOUR_SECRET_KEY"
mailjet_sender_email = "YOUR_MAILJET_EMAIL"
[another_profile]
...
```

이메일 전송이 필요한 프로필에만 세팅하면 됩니다.

> [!WARNING]
> `mailjet_sender_email` 값은 '발신 이메일 주소'로 활용되며, Mailjet 회원가입에 사용한 이메일이 아닐 경우 Mailjet 사이트에서 추가로 도메인 인증 절차를 거쳐야 합니다.
>
> 따로 세팅을 하지 않은 상태로 별도의 이메일을 기입하게 되면, 실제 메일이 발송되지 않고 'Senders and domains page'를 확인하라는 안내 메일을 받게 됩니다.
## 기부하기

이 프로그램을 사용해서 1등에 당첨된다면, 저에게 꼭 1000만원을 기부해주시길 바랍니다.

<img alt="Toss Donation QR Code" src="https://github.com/roeniss/dhlottery-api/blob/b4d616033099f4c0fe38a5360017465fc88ff618/docs/toss_donation_qr.png?raw=true" width="300" />

그리고 딱히 당첨된 적은 없지만 그래도 커피를 사주고 싶다면, 절대 망설이지 마십시오.

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png)](https://www.buymeacoffee.com/roeniss)
Expand Down
6 changes: 0 additions & 6 deletions src/dhapi/domain/email_form.py

This file was deleted.

13 changes: 0 additions & 13 deletions src/dhapi/endpoint/lottery_email_sender.py

This file was deleted.

4 changes: 0 additions & 4 deletions src/dhapi/port/credentials_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import tomli
import tomli_w

from dhapi.domain.email_form import EmailForm
from dhapi.domain.user import User

logger = logging.getLogger(__name__)
Expand All @@ -23,9 +22,6 @@ def _get(self, key):
def get_user(self) -> User:
return User(self._get("username"), self._get("password"))

def get_email_form(self, recipient_email: str) -> EmailForm:
return EmailForm(self._get("mailjet_api_key"), self._get("mailjet_api_secret"), self._get("mailjet_sender_email"), recipient_email)

def _get_credentials(self, profile_name):
try:
_ = self._read_credentials_file(profile_name)
Expand Down
34 changes: 0 additions & 34 deletions src/dhapi/port/mailjet_email_client.py

This file was deleted.

21 changes: 4 additions & 17 deletions src/dhapi/router/dependency_factory.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,22 @@
from typing import Optional

from dhapi.domain.email_form import EmailForm
from dhapi.domain.user import User
from dhapi.endpoint.lottery_email_sender import LotteryEmailSender
from dhapi.endpoint.lottery_stdout_printer import LotteryStdoutPrinter
from dhapi.endpoint.version_stdout_printer import VersionStdoutPrinter
from dhapi.meta.version_provider import VersionProvider
from dhapi.port.lottery_client import LotteryClient
from dhapi.port.mailjet_email_client import MailjetEmailClient
from dhapi.purchase.lotto645_buy_confirmer import Lotto645BuyConfirmer


def build_lottery_client(user_profile: User, email_form: Optional[EmailForm]):
lottery_endpoint = build_lottery_endpoint(email_form)
def build_lottery_client(user_profile: User):
lottery_endpoint = build_lottery_endpoint()
return LotteryClient(user_profile, lottery_endpoint)


def build_lotto645_buy_confirmer():
return Lotto645BuyConfirmer()


def build_email_client(api_key, api_secret):
return MailjetEmailClient(api_key, api_secret)


def build_lottery_endpoint(email_form: EmailForm):
if email_form:
email_client = build_email_client(email_form.api_key, email_form.api_secret)
return LotteryEmailSender(email_client, email_form.sender_email, email_form.recipient_email)
else:
return LotteryStdoutPrinter()
def build_lottery_endpoint():
return LotteryStdoutPrinter()


def build_version_provider():
Expand Down
30 changes: 14 additions & 16 deletions src/dhapi/router/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@ def version_callback(show_version: Optional[bool]):
""",
)
def assign_virtual_account(
amount: Annotated[
int, typer.Argument(help="입금할 금액을 지정합니다 (5천원, 1만원, 2만원, 3만원, 5만원, 10만원, 20만원, 30만원, 50만원, 70만원, 100만원 중 하나)", metavar="amount")
] = 50000,
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
amount: Annotated[
int, typer.Argument(help="입금할 금액을 지정합니다 (5천원, 1만원, 2만원, 3만원, 5만원, 10만원, 20만원, 30만원, 50만원, 70만원, 100만원 중 하나)", metavar="amount")
] = 50000,
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
):
user = CredentialsProvider(profile).get_user()
deposit = Deposit(amount)

client = build_lottery_client(user, None)
client = build_lottery_client(user)
client.assign_virtual_account(deposit)


Expand All @@ -57,12 +57,12 @@ def assign_virtual_account(
"""
)
def show_balance(
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
):
user = CredentialsProvider(profile).get_user()

client = build_lottery_client(user, None)
client = build_lottery_client(user)
client.show_balance()


Expand All @@ -88,18 +88,16 @@ def show_balance(
"""
)
def buy_lotto645(
tickets: Annotated[List[str], typer.Argument(help="구매할 번호를 입력합니다. 생략 시 자동모드로 5장 구매합니다.", metavar="tickets", show_default=False)] = None,
email: Annotated[str, typer.Option("-e", "--email", metavar="", help="구매 결과를 표준 출력이 아니라 지정한 이메일로 전송합니다.")] = None,
always_yes: Annotated[bool, typer.Option("-y", "--yes", help="구매 전 확인 절차를 스킵합니다.")] = False,
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
tickets: Annotated[List[str], typer.Argument(help="구매할 번호를 입력합니다. 생략 시 자동모드로 5장 구매합니다.", metavar="tickets", show_default=False)] = None,
always_yes: Annotated[bool, typer.Option("-y", "--yes", help="구매 전 확인 절차를 스킵합니다.")] = False,
profile: Annotated[str, typer.Option("-p", "--profile", help="프로필을 지정합니다", metavar="")] = "default",
_debug: Annotated[bool, typer.Option("-d", "--debug", help="debug 로그를 활성화합니다.", callback=logger_callback)] = False,
):
cred = CredentialsProvider(profile)
user = cred.get_user()
form = cred.get_email_form(email) if email else None
tickets = Lotto645Ticket.create_tickets(tickets) if tickets else Lotto645Ticket.create_auto_tickets(count=5)

client = build_lottery_client(user, form)
client = build_lottery_client(user)
confirmer = build_lotto645_buy_confirmer()

ok = confirmer.confirm(tickets, always_yes)
Expand Down
Empty file removed tests/dhapi/endpoint/__init__.py
Empty file.
12 changes: 0 additions & 12 deletions tests/dhapi/endpoint/test_lottery_email_sender.py

This file was deleted.

Empty file removed tests/dhapi/port/__init__.py
Empty file.
10 changes: 0 additions & 10 deletions tests/dhapi/port/test_mailjet_email_client.py

This file was deleted.

0 comments on commit 852f4b2

Please sign in to comment.