fimuxd/GITGET

bug: 설정해놨던 GITGET이 `invalid username` 이란 문구와 함께 조회가 정상적으로 되지 않는 현상

yomni opened this issue · 11 comments

yomni commented

안녕하세요.
우선 GITGET 잘 사용하고 있습니다 감사합니다. :)

특정 시점부터 설정해놨던
GITGET 위젯이 invalid username 라는 문구와 함께
조회가 정상적으로 되지 않네요.

제가 GITGET 사용하고 있는 환경 공유드립니다.

machine : iPhone se 2세대
iOS : 16.2

machine : iPad Pro 5세대 12.9'
iPadOS : 16.2

machine : Mac mini M1
macOS : Ventura 13.1

image

추가로 필요한 정보가 있으시면 알려주세요.
감사합니다.

Screenshot 2023-01-07 at 5 45 48 PM

저도 같은 증상이네요.. 깃허브를 사용하는 다른 앱도 동일 버그가 발생하는걸로 봐서는 Git API 오류인거 같습니다!!

yomni commented

@ing9990 현상 확인 감사합니다 :)

저도 추가로 확인한 결과 공유드립니다

  1. 현재 기준으로 github docs rest api 를 살펴보았습니다.
    (https://docs.github.com/ko/rest/users/users?apiVersion=2022-11-28)

  1. GITGET 소스코드 일부 분석
  • 제가 swift는 문외한이라 rest api 호출부분을 집중적으로 분석해 보았습니다.
  • contributions 에 대한 조회는 아래의 요청 url 로 호출하는 것 같습니다.
  • https://api.github.com/users/{username}/contributions
  • 해당 api endpoint로 테스트 해보면 Not Found 에러가 발생합니다.

  1. 기존 버전의 docs를 찾을 수 없어 사실 유무는 판단이 안됩니다만,
    contributions의 경우 Rest API --> GraphQL API 로 전환된 것으로 보여집니다.
    (https://docs.github.com/ko/graphql/reference/objects 에서 자세한 내용 확인)
yomni commented

아, 일시적으로 API가 오류일 수도 있을 것 같다는 생각에
제일 먼저 status.github.com 로 Github API 서버에 오류가 없는 지 확인했었습니다.

status에는 이상이 없음에도 불구하고, GITGET 에는 오류가 발생하고 있어, 위와 같은 절차로 추가 확인을 해봤습니다.

<rect width="10" height="10" x="-33" y="65" class="ContributionCalendar-day" data-date="2022-12-09" data-level="1" rx="2" ry="2">
          1 contribution on December 9, 2022
 </rect> 

https://github.com/users/\(username)/contributions 으로 호출하는 getContributions(of: String)에서 parseContributions 메소드에서 "data-count"를 파싱하고 guard let 으로 옵셔널 바인딩을 해주고 있는데 변수 Int(dataCount); dataCount = ""가 Int로 캐스팅이 실패하면서 retrun nil이 되면서 생긴 문제같습니당

pr 보내고 싶은데 제가 html 파싱을 할 줄 몰라가지고 코멘트만 남겨둡니다 !

extension GitHubNetwork {
func parseContributions(from element: Element) throws -> Contribution? {
let dataLevel = try element.attr("data-level")
let dataCount = try element.attr("data-count")
let dataDate = try element.attr("data-date")
guard let level = Int(dataLevel),
let count = Int(dataCount),
let date = Date(dataDate) else {
return nil
}
return Contribution(date: date, count: count, level: Contribution.Level(rawValue: level) ?? .zero)
}
}

Thanks @kangddong

app store에는 버그가 수정되었다고 나와서 재설치해봐도 똑같은 증상입니다.
한번 확인가능할까요?

Is this going to be fixed? Is any help needed?

23.15.0 이상 버전에서 @kangddong 님의 PR #67 이 반영될 예정입니다.
다만 해당 버전은 AppStore 가 아니라 TestFlight 링크를 통해 외부테스터로써 사용하실 수 있게 조치하겠습니다.
링크는 외부테스터 초대를 위한 심사가 완료되는대로 이 이슈 코멘트를 포함한 이곳저곳에 남겨두겠습니다.
너무 늦어져서 죄송하고 이렇게 논의를 진행해주셔서 감사합니다.

TESTFLIGHT 링크입니다.
자세한 사정은 Wiki에 적어두었습니다. 🙇🏽

macOS sonoma 버전부터 바탕화면에 위젯 배치가 가능해졌는데
혹시 macOS용 TESTFLIGHT도 추가하실 계획은 없으실까요?