How to specify that headers must be regenerated.

Offen
#126 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
github, python
Bereich
api, authentication

Rechercherichtung

Beginnen Sie damit nachzuverfolgen, wie GhApi-Anfragen den untergeordneten Aufruf statt GhApi.call erreichen, und verwenden Sie dabei die gezeigte Subklasse und IatManager.headers() als Einstiegspunkte. Ermitteln Sie, wo die Request-Header zusammengestellt werden und ob sie für jede Anfrage aktualisiert werden können; als erledigt gilt dies, wenn eine langlebige GitHub-App neu generierte Installation-Access-Token-Header ohne manuelle Neuerstellung von GhApi verwenden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

I've have a GitHub app which uses a jwt that can expire. Ultimately, I generate an installation access token that can also expire and I am trying to use ghapi with that installation access token.

I was hoping that I could subclass GhApi.__call__ to dynamically generate my access token, but this does not seem to work.

jwtm = JwtManager(app_id, private_key)                                                           
iatm = IatManager(jwtm)                                                                          
token = iatm.token(installation_id)                                                              
gh_host = baseurl()                                                                         
                                                                                                 
class GhApi(ghapi_all.GhApi):                                                                    
    def __call__(self, path, verb=None, headers=None, route=None, query=None, data=None):        
        headers = headers or {}                                                                  
        headers.update(iatm.headers(installation_id))                                            
        super().__call__(path, verb, headers, route, query, data)                     
                                                                                                 
api = GhApi(                                                                                     
    owner=owner,                                                                                 
    repo=repo,                                                                                   
    token=token,                                                                                 
    debug=debug,                                                                                 
    limit_cb=limit_cb,                                                                           
    gh_host=gh_host,                                                                             
)             

IatManager.headers() will generate a new jwt token whenever it is expired and then will use this to generate an access token for the specified installation id. The headers it generates look like this:

In [5]: iatm.headers(2)
Out[5]:
{'Authorization': 'token ghs_randomstuffhere',
 'Accept': 'application/vnd.github.v3+json'}

The reason that this did not work is that ultimately GhApi.__call__ is not what was called. Rather it was some lower level thing. Any suggestion on how I can use ghapi for a long-running GitHub app where the headers need to be dynamically updated in time?

Vorherrschende Sprache
Python
Sterne
687
Forks
69
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus AnswerDotAI/ghapi

Alle Issues in AnswerDotAI/ghapi

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.