{"record":{"id":"15926eacdf897e03","repo":"tonhowtf/omniget","slug":"twitch-gql-retornou-http-mod","errorCode":null,"errorMessage":"Twitch GQL retornou HTTP {}","messagePattern":"Twitch GQL retornou HTTP (.+?)","errorType":"http","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/src/platforms/twitch/mod.rs","lineNumber":139,"sourceCode":"\n    async fn fetch_clip_metadata(&self, slug: &str) -> anyhow::Result<ClipMetadata> {\n        let query = format!(\n            r#\"{{ clip(slug: \"{}\") {{ broadcaster {{ login }} curator {{ login }} durationSeconds id medium: thumbnailURL(width: 480, height: 272) title videoQualities {{ quality sourceURL }} }} }}\"#,\n            slug\n        );\n\n        let body = serde_json::json!({ \"query\": query });\n\n        let response = self\n            .client\n            .post(GQL_URL)\n            .header(\"client-id\", CLIENT_ID)\n            .json(&body)\n            .send()\n            .await?;\n\n        if !response.status().is_success() {\n            return Err(anyhow!(\"Twitch GQL retornou HTTP {}\", response.status()));\n        }\n\n        let json: serde_json::Value = response.json().await?;\n\n        let clip = json\n            .pointer(\"/data/clip\")\n            .ok_or_else(|| anyhow!(\"Clip not found: {}\", slug))?;\n\n        if clip.is_null() {\n            return Err(anyhow!(\"Clip not found: {}\", slug));\n        }\n\n        let title = clip\n            .get(\"title\")\n            .and_then(|v| v.as_str())\n            .unwrap_or(\"Untitled\")\n            .to_string();\n","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/src/platforms/twitch/mod.rs#L121-L157","documentation":"The Twitch GQL endpoint answered the clip-metadata query with a non-success HTTP status; the {} is the raw code. The request was well-formed but rejected — usually rate limiting or a transient Twitch-side error, since the client-id is fixed.","triggerScenarios":"Thrown at src-tauri/src/platforms/twitch/mod.rs:139 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait a moment and retry the clip request","Check Twitch status pages for GQL/API incidents","Fall back to yt-dlp based metadata fetching for this clip"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}