MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / requestCodexDeviceUserCode

Function requestCodexDeviceUserCode

sdk/auth/codex_device.go:128–169  ·  view source on GitHub ↗
(ctx context.Context, client *http.Client)

Source from the content-addressed store, hash-verified

126}
127
128func requestCodexDeviceUserCode(ctx context.Context, client *http.Client) (*codexDeviceUserCodeResponse, error) {
129 body, err := json.Marshal(codexDeviceUserCodeRequest{ClientID: codex.ClientID})
130 if err != nil {
131 return nil, fmt.Errorf("failed to encode codex device request: %w", err)
132 }
133
134 req, err := http.NewRequestWithContext(ctx, http.MethodPost, codexDeviceUserCodeURL, bytes.NewReader(body))
135 if err != nil {
136 return nil, fmt.Errorf("failed to create codex device request: %w", err)
137 }
138 req.Header.Set("Content-Type", "application/json")
139 req.Header.Set("Accept", "application/json")
140
141 resp, err := client.Do(req)
142 if err != nil {
143 return nil, fmt.Errorf("failed to request codex device code: %w", err)
144 }
145 defer func() { _ = resp.Body.Close() }()
146
147 respBody, err := io.ReadAll(resp.Body)
148 if err != nil {
149 return nil, fmt.Errorf("failed to read codex device code response: %w", err)
150 }
151
152 if !codexDeviceIsSuccessStatus(resp.StatusCode) {
153 trimmed := strings.TrimSpace(string(respBody))
154 if resp.StatusCode == http.StatusNotFound {
155 return nil, fmt.Errorf("codex device endpoint is unavailable (status %d)", resp.StatusCode)
156 }
157 if trimmed == "" {
158 trimmed = "empty response body"
159 }
160 return nil, fmt.Errorf("codex device code request failed with status %d: %s", resp.StatusCode, trimmed)
161 }
162
163 var parsed codexDeviceUserCodeResponse
164 if err := json.Unmarshal(respBody, &parsed); err != nil {
165 return nil, fmt.Errorf("failed to decode codex device code response: %w", err)
166 }
167
168 return &parsed, nil
169}
170
171func pollCodexDeviceToken(ctx context.Context, client *http.Client, deviceAuthID, userCode string, interval time.Duration) (*codexDeviceTokenResponse, error) {
172 deadline := time.Now().Add(codexDeviceTimeout)

Callers 1

loginWithDeviceFlowMethod · 0.85

Calls 4

DoMethod · 0.65
CloseMethod · 0.65
SetMethod · 0.45

Tested by

no test coverage detected