(ctx context.Context)
| 111 | } |
| 112 | |
| 113 | func (m *MessageSession) Refresh(ctx context.Context) (err error) { |
| 114 | m.ssCli.recordOperation("RefreshMessageSession") |
| 115 | defer func() { |
| 116 | if err != nil { |
| 117 | m.ssCli.recordFailedOperation("RefreshMessageSession") |
| 118 | } |
| 119 | }() |
| 120 | |
| 121 | slog.DebugContext(ctx, "refreshing message session token", "session_id", m.session.SessionID.String()) |
| 122 | m.mux.Lock() |
| 123 | defer m.mux.Unlock() |
| 124 | |
| 125 | relPath, err := m.SessionsRelativeURL() |
| 126 | if err != nil { |
| 127 | return fmt.Errorf("failed to get session URL: %w", err) |
| 128 | } |
| 129 | req, err := m.ssCli.newActionsRequest(ctx, http.MethodPatch, relPath, nil) |
| 130 | if err != nil { |
| 131 | return fmt.Errorf("failed to create message delete request: %w", err) |
| 132 | } |
| 133 | resp, err := m.ssCli.Do(req) |
| 134 | if err != nil { |
| 135 | return fmt.Errorf("failed to delete message session: %w", err) |
| 136 | } |
| 137 | defer resp.Body.Close() |
| 138 | |
| 139 | var refreshedSession params.RunnerScaleSetSession |
| 140 | if err := json.NewDecoder(resp.Body).Decode(&refreshedSession); err != nil { |
| 141 | return fmt.Errorf("failed to decode response: %w", err) |
| 142 | } |
| 143 | slog.DebugContext(ctx, "refreshed message session token") |
| 144 | m.session = &refreshedSession |
| 145 | return nil |
| 146 | } |
| 147 | |
| 148 | func (m *MessageSession) maybeRefreshToken(ctx context.Context) error { |
| 149 | if m.session == nil { |
no test coverage detected