Honeycode를 사용하여 게시물에 개발자 배치

8087 단어
나는 나의 게시물을 회사 블로그aws-blog.de와나는 미리 준비하고 자동으로 발표하는 것을 좋아한다.우리 회사의 블로그는 매일 블로그의 코드 파이프라인을 발표함으로써 이 문제를 처리한다.불행히도, dev.to 본기는 유사한 물건을 지원하지 않습니다.다행히도, 그들은 API를 가지고 있고, 나는 아마존 꿀 코드를 시험해 보고 싶어서, 나는 스스로 스케줄러를 구축하기로 결정했다.
만약 네가 아직 허니코드에 익숙하지 않다면, 나 wrote an introduction 는 최근에 이 서비스에 갔을 것이다.나는 네가 우리가 계속하기 전에 읽어 보라고 건의한다.간단히 말하면 Honeycode는 전자 표와 같은 데이터베이스를 둘러싸고 사용자 인터페이스를 구축할 수 있고 데이터베이스에 있는 데이터의 변경에 따라 터치할 수 있습니다.사용자 체험은 가능한 한 간단해야 한다.내 목표는 글의 미리 보기 URL을 붙여넣고 발표 시간을 설정한 다음 잊어버리는 것이다.더 많은 사용자 계정을 지원하고, 예정된 게시물과 이미 발표된 게시물을 조회하는 것이 부차적인 목표이다.
나는 나의 스케줄러를 두 개의 구성 요소로 나누어 코드에 가능한 한 많은 논리를 넣을 계획이다.Honeycode에는 dev.to 사용자와 그들의 API 키, 그리고 게시할 게시물이 포함되어 있습니다.사용자 인터페이스는 데이터를 처리하고 다가오는 스케줄을 보는 것을 책임진다.두 번째 구성 요소는 API 게이트웨이와 Lambda 함수로 구성됩니다.개발자가 URL 및 API 키를 미리 보고 게시물을 게시할 수 있도록 하는 것이 주요 목적입니다.Lambda 함수는 이를 실현하기 위해 몇 가지 일을 해야 하지만, 이따가 더 많이 할 것이다.우선 허니코드의 데이터 모델에 주목합시다.

Honeycode에서 dev to posts와 dev to users 두 개의 테이블을 생성했습니다.사용자 테이블에는 dev.to 사용자 이름과 해당 API 키가 포함되어 있습니다.나로서는 단지 하나의 기록이 있지만, 그것이 지지하는 것은 이것뿐만이 아니다.또한 변경될 때 백엔드를 재배치하지 않고 GUI를 통해 구성하고 싶습니다.
다른 표에는 소량의 메타데이터가 있는 게시물이 포함되어 있다.저자 열은 dev to users 테이블에 연결되어 있으며, 이 테이블은 외부 키와 비슷한 관계를 설정합니다.Post URL 열에서 dev.to에서 미리 보기 URL을 찾을 수 있습니다. Publish At는 게시 날짜와 시간이 있는 DateTime 열입니다.다른 두 분야는 그렇게 재미있지 않다.일부 의견에 대한 주석 필드가 있고 미리 보기 URL을 게시물 URL 열에서 게시물에 사용할 수 있는 URL로 변환하는 공식을 사용하는 게시물 URL 필드도 있습니다.다음은 당신이 스스로 다시 만들려고 하지 않도록 하는 공식입니다.
=LEFT([Post URL],SEARCH("-temp-slug",dev_to_posts[Post URL])-1)
다음에 저는 Honeycode Builder를 사용하여 데이터 모델을 둘러싸고 사용자 인터페이스를 만들었습니다.향후 게시될 게시물 개요, 미리 보기 URL에 따라 새 게시물을 추가하는 옵션, 게시된 게시물 목록, API 키를 관리하는 방법이 포함됩니다.아래에서 당신은 실현에 대한 인상을 보게 될 것입니다.

소스 필드에서 Scheduled Posts와 Published Posts 목록에 표시되는 기록의 종류를 제한하는 필터를 사용했습니다.새 시간제 게시 폼을 만드는 것은 쉬운 일입니다.나는 단지 폼 구성 요소를 선택했을 뿐이다. Scheduled Posts 화면에서 그것을 드래그한 다음 기록을 추가할 폼을 선택했다.이것은 폼과 필요한 단추를 만들어서 나중에 맞춤형으로 만들 수 있습니다.이 인터페이스는 현재 내가 표의 데이터와 쉽게 상호작용할 수 있도록 한다.
// Scheduled Posts
=FILTER(dev_to_posts,"dev_to_posts[Publish At]>NOW() ORDER BY dev_to_posts[Publish At] ASC")

// Published Posts
=FILTER(dev_to_posts,"dev_to_posts[Publish At]<NOW() ORDER BY dev_to_posts[Publish At] ASC")
다음 작업은 새 게시물을 게시해야 할 때 게시 백엔드를 터치하는 것입니다.dev to posts 테이블의 행에 있는 Publish At time에 도달할 때마다 트리거하는 자동화 프로그램을 설정했습니다.Honeycode는 모든 시간을 UTC로 간주하기 때문에 로컬 시간대와 일치하도록 오프셋을 추가해야 합니다.첫 번째 동작은 게시물이 올라왔다는 것을 알리는 알림을 보냅니다.

나에게 알림을 보낸 후 자동화 시스템은 웹훅을 호출할 것이다.Webhook은 이벤트가 발생할 때 호출할 수 있는 HTTPS 끝점입니다.여기에서 미리 보기 URL과 저자의 API 키를 웹훅에 보내도록 설정합니다.웹훅의 백엔드는 이 정보를 사용하여 dev.to API와 대화하고 게시물을 올립니다.유효 로드 외에도 백엔드에 API 키가 있는 HTTP 헤더를 설정합니다.

백엔드는 API 게이트웨이 뒤에 있는 Lambda 함수로 구성됩니다.이 Lambda 함수는 이벤트에서 게시물 URL과 API 키를 추출하고 dev.to API를 사용하여 미리 보기 URL 뒤에 있는 게시물의 글 ID를 가져옵니다.가능하다고 가정하면, 이 ID가 있는 게시물을 계속 올릴 것입니다. 궁금하시면 백엔드의 전체 코드 is available on Github 를 제공해 주십시오.
def lambda_handler(api_event, __unused):
    """
    Handles incoming requests from the API Gateway.
    """

    payload = json.loads(api_event["body"])

    assert "PostURL" in payload, "PostURL needs to be present"
    assert "ApiKey" in payload, "ApiKey needs to be present"

    post_url = payload["PostURL"]
    api_key = payload["ApiKey"]

    print(f"Got PostURL {post_url}")
    # We don't want to show the whole API key that wouldn't be great.
    print(f"Got API Key {api_key[0]}{ '*' * (len(api_key) - 2)}{api_key[-1]}")

    article_id = get_article_id_by_preview_url(
        preview_url=post_url,
        api_key=api_key
    )

    if article_id is not None:
        publish_article_by_id(article_id=article_id, api_key=api_key)

    return {}

요약
이 글은 Honeycode, Lambda, API 인터페이스의 조합을 사용하여 dev.to의 블로그를 스케줄링하는 시스템을 구축하는 방법을 보여 줍니다.나는 이 문제를 처음 해결한 사람이 아니다.API 키 신뢰 공급자를 사용하고 브라우저 확장자를 설치해야 하는 버전이 이미 있습니다.유리한 측면에서 볼 때, 당신은 나의 해결 방안에 필요한 구성 요소보다 더 적은 구성 요소를 배치해야 합니다.나에게 있어서 이것은 주로 꿀 코드를 배우고 나의 문제를 해결하기 위해서이다.단, 만약 dev.to가 이 문제에 제1자 해결 방안을 추가한다면, 나는 감격해 마지 않을 것이다.
나는 네가 이 문장을 즐겨 읽기를 바란다.나는 나의 이력서에서 소셜 미디어 채널을 통해 피드백을 받아서 매우 기쁘다.새 게시물에 대한 알림을 받고 싶으면, RSS 리더에 blog feed 추가하는 것을 권장합니다.
- 모리스

좋은 웹페이지 즐겨찾기