헬퍼와 상수
클라이언트 외에 gem이 정의하는 것.
모듈 메서드
| 메서드 | 설명 |
|---|---|
| OpenEmail.init, OpenEmail.client | 공유 클라이언트를 한 번 구성한 뒤 어디서든 사용하세요. init을 실행하지 않았다면 OPENEMAIL_API_KEY로 스스로를 구성합니다. |
| OpenEmail.emails, OpenEmail.threads와 그 밖의 모든 네임스페이스 | 공유 클라이언트의 네임스페이스로 가는 바로 가기. |
| OpenEmail.reset_client | 공유 클라이언트를 버려 다음 호출이 새 클라이언트를 만들게 합니다. 테스트에서 케이스 사이에 필요한 것이 바로 이것입니다. |
| OpenEmail.create_client, OpenEmail::Client.new, OpenEmail.new | 별도의 클라이언트입니다. create_client는 생략한 값을 환경 변수에서 읽고, Client.new(또는 OpenEmail.new)는 전달한 값만 사용합니다. |
| OpenEmail.create_temp_mail | API 키를 담지 않는 일회용 받은편지함 클라이언트. |
| OpenEmail.verify_webhook_signature | 재전송 허용 창을 두고 전달의 서명을 상수 시간으로 검사합니다. 파싱된 이벤트를 반환하며, 실패하면 OpenEmail::WebhookSignatureError를 발생시킵니다. |
| OpenEmail.to_base64 | 바이너리 String, IO, Pathname에서 첨부 파일 바이트를 Base64로 만듭니다. |
| OpenEmail.api_key? | String이 oe_live_ 또는 oe_test_ 형태인지 여부입니다. 형태 검사일 뿐, 키가 아직 유효하다는 증거는 아닙니다. |
| OpenEmail.access_token? | String이 OAuth 액세스 토큰의 형태인지 여부입니다: 1~512자이고 oe_로 시작하지 않아야 합니다. |
| OpenEmail.sealed? | 메시지의 본문이 암호문인지 여부입니다. 두 서명 형식에서는 본문이 평문으로 도착했으므로 false입니다. |
| OpenEmail.resolve_language, OpenEmail.language_by_code, OpenEmail.rtl_language? | 번들로 포함된 OpenEmail::LANGUAGES 표를 대상으로, 언어 선택기에 필요한 조회 메서드입니다. |
상수
TypeScript SDK가 내보내는 모든 값 집합은 같은 이름을 키로 하는 동결된 Hash로 OpenEmail에 있으므로, OpenEmail::WEBHOOK_EVENTS[:EMAIL_DELIVERED]는 "email.delivered"입니다. 목록이 필요하면 .values를, 외부에서 들어온 값을 확인하려면 .value?를 쓰세요.
events = OpenEmail::WEBHOOK_EVENTS.values scopes = [OpenEmail::API_SCOPES[:EMAILS_SEND], OpenEmail::API_SCOPES[:THREADS_READ]] puts events.size, scopes.join(","), OpenEmail::PAGE_LIMITS[:MAX_LIMIT]| 상수 | 담긴 내용 |
|---|---|
| OpenEmail::VERSION | gem의 버전. |
| OpenEmail::API_SCOPES | 키 생성 화면에서 쓸 스코프 어휘입니다. |
| OpenEmail::WEBHOOK_EVENTS, OpenEmail::WEBHOOK_SIGNATURE_HEADERS | 엔드포인트가 구독할 수 있는 이벤트와, 전달 요청에 담기는 헤더 이름입니다. |
| OpenEmail::ERROR_TYPES | ApiError#type이 가질 수 있는 오류 어휘. |
| OpenEmail::PAGE_LIMITS | 대부분의 페이지 목록에서 limit:의 최댓값과 기본값: 100과 25. 몇몇 목록은 더 많이 받으며, 각 메서드의 레퍼런스에 그렇게 적혀 있습니다. |
| OpenEmail::RULE_FIELDS, OpenEmail::RULE_OPERATORS, OpenEmail::RULE_ACTIONS | 규칙의 조건과 동작을 구성하는 어휘입니다. |
| OpenEmail::MESSAGE_ENCRYPTION_FORMATS | 수신 처리가 식별할 수 있는 다섯 가지 봉투. 그중 셋은 봉인되어 있습니다. |
| OpenEmail::CREDENTIAL_KINDS, OpenEmail::STEP_UP_METHODS, OpenEmail::STEP_UP_ERROR_CODES | me.get과 me.ping이 설명하는 자격 증명의 종류, 인증 코드를 확인하는 방식, 그리고 인증이 실패할 때의 코드. |
| OpenEmail::THREAD_SORTS, OpenEmail::PEOPLE_SORTS, OpenEmail::FILE_SORTS와 그 밖의 *_SORTS | 목록을 정렬할 수 있는 순서. |
| OpenEmail::FORM_STATUSES, OpenEmail::BROADCAST_STATUSES, OpenEmail::SUPPRESSION_REASONS와 그 밖의 집합 | 리소스의 필드가 가질 수 있는 값. 각 집합은 담고 있는 것의 이름을 따릅니다. |
객체
응답은 파싱된 JSON을 Symbol 키를 가진 Hash로 만든 것입니다. gem은 답의 형태를 갖출 때만 자체 객체를 만들며, 각각은 불변의 Data입니다.
| 클래스 | 담는 것 |
|---|---|
| OpenEmail::Page | items, has_more?, next_cursor. 페이지로 나뉘는 모든 list에서 옵니다. |
| OpenEmail::PeoplePage | 같은 것에 seen을 더한 것. contacts.list_people에서 옵니다. |
| OpenEmail::TempMessagesPage | 같은 것에 expires_at을 더한 것. temp_mail.list_messages에서 옵니다. |
| OpenEmail::AddressBookPage, OpenEmail::AddressBook | unrestricted, addresses, domains. addresses.list(has_more?와 next_cursor 포함)와 addresses.list_all에서 옵니다. |
| OpenEmail::BatchResult | items, sent, failed. emails.send_batch에서 옵니다. |
| OpenEmail::TemplateSends | items, total, page, page_size. templates.list_sends에서 옵니다. |
| OpenEmail::HttpRequest, OpenEmail::HttpResponse | adapter:가 받고 반환하는 것. 요청을 출력하면 Authorization 헤더가 [redacted]로 표시됩니다. |
gem이 의도적으로 발생시키는 모든 오류는 OpenEmail::Error를 상속합니다: ApiError와 그 하위 클래스, NetworkError, WebhookSignatureError입니다. 잘못된 인자는 대신 ArgumentError가 되는데, rescue할 대상이 아니라 호출하는 코드의 실수이기 때문입니다.
아직 감싸지 않은 엔드포인트
gem 릴리스가 이미 동작하는 엔드포인트와 여러분 사이를 가로막는 일은 없어야 합니다. client.raw.request는 경로와 키워드 옵션을 받아 파싱된 본문을 반환하며, 클라이언트의 자격 증명, 기본 URL, 타임아웃, 재시도 정책이 그대로 적용됩니다.
result = client.raw.request( "/something-new", method: :post, query: {dryRun: true}, body: {name: "Invoices"}, repeatable: true) p resultGET은 다른 읽기와 마찬가지로 재시도됩니다. 그 밖의 메서드는 repeatable: true를 전달하지 않는 한 한 번만 전송되며, 이 값은 두 번 보내도 된다는 여러분의 단언입니다. query:는 nil이거나 빈 값을 건너뛰고, api_key:는 다른 모든 메서드에서와 똑같이 동작합니다.
의도적으로 하지 않는 것
- 요청 본문을 검증하지 않습니다. 규칙의 사본은 서버 스키마 하나뿐이며, 여기에 두 번째 사본을 두면 언젠가는 2년 전에 고정해 둔 버전에서 최신 서버라면 받아들일 주소를 거부하게 됩니다.
- 런타임 의존성이 없으며, 표준 라이브러리 외에는 JSON이나 HTTP gem조차 쓰지 않습니다.
- 응답의 형태를 바꾸는 방식은 하나뿐입니다: 컬렉션의
data배열을 봉투에서 꺼내 위의 객체 중 하나로 만듭니다. 그 밖의 모든 응답은 API가 보낸 그대로, API의 camelCase 키와 함께 돌아옵니다.
gem의 패리티 검사가 이를 정직하게 지켜 줍니다. TypeScript 메서드에 Ruby 짝이 없거나, 다른 옵션을 받거나, 다른 요청을 보내면 빌드를 실패시킵니다.