MCPcopy
hub / github.com/rclone/rclone / authenticate

Method authenticate

backend/cache/plex.go:196–235  ·  view source on GitHub ↗

authenticate will generate a token based on a username/password

()

Source from the content-addressed store, hash-verified

194
195// authenticate will generate a token based on a username/password
196func (p *plexConnector) authenticate() error {
197 p.mu.Lock()
198 defer p.mu.Unlock()
199
200 form := url.Values{}
201 form.Set("user[login]", p.username)
202 form.Add("user[password]", p.password)
203 req, err := http.NewRequest("POST", defPlexLoginURL, strings.NewReader(form.Encode()))
204 if err != nil {
205 return err
206 }
207 p.fillDefaultHeaders(req)
208 resp, err := http.DefaultClient.Do(req)
209 if err != nil {
210 return err
211 }
212 var data map[string]any
213 err = json.NewDecoder(resp.Body).Decode(&data)
214 if err != nil {
215 return fmt.Errorf("failed to obtain token: %w", err)
216 }
217 tokenGen, ok := get(data, "user", "authToken")
218 if !ok {
219 return fmt.Errorf("failed to obtain token: %v", data)
220 }
221 token, ok := tokenGen.(string)
222 if !ok {
223 return fmt.Errorf("failed to obtain token: %v", data)
224 }
225 p.token = token
226 if p.token != "" {
227 if p.saveToken != nil {
228 p.saveToken(p.token)
229 }
230 fs.Infof(p.f.Name(), "Connected to Plex server: %v", p.url.String())
231 }
232 p.listenWebsocket()
233
234 return nil
235}
236
237// isConnected checks if this rclone is authenticated to Plex
238func (p *plexConnector) isConnected() bool {

Callers 1

startReadWorkersMethod · 0.45

Calls 14

fillDefaultHeadersMethod · 0.95
listenWebsocketMethod · 0.95
InfofFunction · 0.92
getFunction · 0.85
LockMethod · 0.65
UnlockMethod · 0.65
SetMethod · 0.65
AddMethod · 0.65
EncodeMethod · 0.65
DoMethod · 0.65
DecodeMethod · 0.65
NameMethod · 0.65

Tested by

no test coverage detected