···193 handle_api_error @@ fun () ->
194 Eio_main.run @@ fun env ->
195 Eio.Switch.run @@ fun sw ->
196- let session = Requests.create ~sw env in
197- let client = Peertube.Client.create ~session ~base_url in
198 if all then begin
199 let videos =
200 Peertube.Client.fetch_all_channel_videos client ?max_pages
···226 handle_api_error @@ fun () ->
227 Eio_main.run @@ fun env ->
228 Eio.Switch.run @@ fun sw ->
229- let session = Requests.create ~sw env in
230- let client = Peertube.Client.create ~session ~base_url in
231 let response = Peertube.Client.list_videos client ~count ~start () in
232 Fmt.pr "Showing %d of %d videos (offset %d)@.@."
233 (List.length (Peertube.Paginated.data response))
···247 handle_api_error @@ fun () ->
248 Eio_main.run @@ fun env ->
249 Eio.Switch.run @@ fun sw ->
250- let session = Requests.create ~sw env in
251- let client = Peertube.Client.create ~session ~base_url in
252 let response = Peertube.Client.search_videos client ~query ~count ~start () in
253 Fmt.pr "Found %d results for '%s' (showing %d, offset %d)@.@."
254 (Peertube.Paginated.total response)
···269 handle_api_error @@ fun () ->
270 Eio_main.run @@ fun env ->
271 Eio.Switch.run @@ fun sw ->
272- let session = Requests.create ~sw env in
273- let client = Peertube.Client.create ~session ~base_url in
274 let video = Peertube.Client.fetch_video_details client ~uuid () in
275 print_video ~json video
276···285 handle_api_error @@ fun () ->
286 Eio_main.run @@ fun env ->
287 Eio.Switch.run @@ fun sw ->
288- let session = Requests.create ~sw env in
289- let client = Peertube.Client.create ~session ~base_url in
290 let video = Peertube.Client.fetch_video_details client ~uuid () in
291 match
292 Peertube.Client.download_thumbnail client ~video ~output_path:output ()
···310 handle_api_error @@ fun () ->
311 Eio_main.run @@ fun env ->
312 Eio.Switch.run @@ fun sw ->
313- let session = Requests.create ~sw env in
314- let client = Peertube.Client.create ~session ~base_url in
315 let response = Peertube.Client.list_channels client ~count ~start () in
316 Fmt.pr "Showing %d of %d channels (offset %d)@.@."
317 (List.length (Peertube.Paginated.data response))
···331 handle_api_error @@ fun () ->
332 Eio_main.run @@ fun env ->
333 Eio.Switch.run @@ fun sw ->
334- let session = Requests.create ~sw env in
335- let client = Peertube.Client.create ~session ~base_url in
336 let response =
337 Peertube.Client.search_channels client ~query ~count ~start ()
338 in
···355 handle_api_error @@ fun () ->
356 Eio_main.run @@ fun env ->
357 Eio.Switch.run @@ fun sw ->
358- let session = Requests.create ~sw env in
359- let client = Peertube.Client.create ~session ~base_url in
360 let channel = Peertube.Client.get_channel client ~handle () in
361 print_channel ~json channel
362···378 handle_api_error @@ fun () ->
379 Eio_main.run @@ fun env ->
380 Eio.Switch.run @@ fun sw ->
381- let session = Requests.create ~sw env in
382- let client = Peertube.Client.create ~session ~base_url in
383 let response = Peertube.Client.list_accounts client ~count ~start () in
384 Fmt.pr "Showing %d of %d accounts (offset %d)@.@."
385 (List.length (Peertube.Paginated.data response))
···399 handle_api_error @@ fun () ->
400 Eio_main.run @@ fun env ->
401 Eio.Switch.run @@ fun sw ->
402- let session = Requests.create ~sw env in
403- let client = Peertube.Client.create ~session ~base_url in
404 let account = Peertube.Client.get_account client ~handle () in
405 print_account ~json account
406···415 handle_api_error @@ fun () ->
416 Eio_main.run @@ fun env ->
417 Eio.Switch.run @@ fun sw ->
418- let session = Requests.create ~sw env in
419- let client = Peertube.Client.create ~session ~base_url in
420 let response =
421 Peertube.Client.get_account_videos client ~count ~start ~handle ()
422 in
···445 handle_api_error @@ fun () ->
446 Eio_main.run @@ fun env ->
447 Eio.Switch.run @@ fun sw ->
448- let session = Requests.create ~sw env in
449- let client = Peertube.Client.create ~session ~base_url in
450 let response = Peertube.Client.list_playlists client ~count ~start () in
451 Fmt.pr "Showing %d of %d playlists (offset %d)@.@."
452 (List.length (Peertube.Paginated.data response))
···466 handle_api_error @@ fun () ->
467 Eio_main.run @@ fun env ->
468 Eio.Switch.run @@ fun sw ->
469- let session = Requests.create ~sw env in
470- let client = Peertube.Client.create ~session ~base_url in
471 let response =
472 Peertube.Client.search_playlists client ~query ~count ~start ()
473 in
···490 handle_api_error @@ fun () ->
491 Eio_main.run @@ fun env ->
492 Eio.Switch.run @@ fun sw ->
493- let session = Requests.create ~sw env in
494- let client = Peertube.Client.create ~session ~base_url in
495 let playlist = Peertube.Client.get_playlist client ~id () in
496 print_playlist ~json playlist
497···506 handle_api_error @@ fun () ->
507 Eio_main.run @@ fun env ->
508 Eio.Switch.run @@ fun sw ->
509- let session = Requests.create ~sw env in
510- let client = Peertube.Client.create ~session ~base_url in
511 let response =
512 Peertube.Client.get_playlist_videos client ~count ~start ~id ()
513 in
···549 handle_api_error @@ fun () ->
550 Eio_main.run @@ fun env ->
551 Eio.Switch.run @@ fun sw ->
552- let session = Requests.create ~sw env in
553- let client = Peertube.Client.create ~session ~base_url in
554 let config = Peertube.Client.get_config client () in
555 if json then print_json Peertube.Server_config.jsont config
556 else begin
···578 handle_api_error @@ fun () ->
579 Eio_main.run @@ fun env ->
580 Eio.Switch.run @@ fun sw ->
581- let session = Requests.create ~sw env in
582- let client = Peertube.Client.create ~session ~base_url in
583 let stats = Peertube.Client.get_stats client () in
584 if json then print_json Peertube.Server_stats.jsont stats
585 else begin
···193 handle_api_error @@ fun () ->
194 Eio_main.run @@ fun env ->
195 Eio.Switch.run @@ fun sw ->
196+ let client = Peertube.Client.create ~sw env ~base_url in
0197 if all then begin
198 let videos =
199 Peertube.Client.fetch_all_channel_videos client ?max_pages
···225 handle_api_error @@ fun () ->
226 Eio_main.run @@ fun env ->
227 Eio.Switch.run @@ fun sw ->
228+ let client = Peertube.Client.create ~sw env ~base_url in
0229 let response = Peertube.Client.list_videos client ~count ~start () in
230 Fmt.pr "Showing %d of %d videos (offset %d)@.@."
231 (List.length (Peertube.Paginated.data response))
···245 handle_api_error @@ fun () ->
246 Eio_main.run @@ fun env ->
247 Eio.Switch.run @@ fun sw ->
248+ let client = Peertube.Client.create ~sw env ~base_url in
0249 let response = Peertube.Client.search_videos client ~query ~count ~start () in
250 Fmt.pr "Found %d results for '%s' (showing %d, offset %d)@.@."
251 (Peertube.Paginated.total response)
···266 handle_api_error @@ fun () ->
267 Eio_main.run @@ fun env ->
268 Eio.Switch.run @@ fun sw ->
269+ let client = Peertube.Client.create ~sw env ~base_url in
0270 let video = Peertube.Client.fetch_video_details client ~uuid () in
271 print_video ~json video
272···281 handle_api_error @@ fun () ->
282 Eio_main.run @@ fun env ->
283 Eio.Switch.run @@ fun sw ->
284+ let client = Peertube.Client.create ~sw env ~base_url in
0285 let video = Peertube.Client.fetch_video_details client ~uuid () in
286 match
287 Peertube.Client.download_thumbnail client ~video ~output_path:output ()
···305 handle_api_error @@ fun () ->
306 Eio_main.run @@ fun env ->
307 Eio.Switch.run @@ fun sw ->
308+ let client = Peertube.Client.create ~sw env ~base_url in
0309 let response = Peertube.Client.list_channels client ~count ~start () in
310 Fmt.pr "Showing %d of %d channels (offset %d)@.@."
311 (List.length (Peertube.Paginated.data response))
···325 handle_api_error @@ fun () ->
326 Eio_main.run @@ fun env ->
327 Eio.Switch.run @@ fun sw ->
328+ let client = Peertube.Client.create ~sw env ~base_url in
0329 let response =
330 Peertube.Client.search_channels client ~query ~count ~start ()
331 in
···348 handle_api_error @@ fun () ->
349 Eio_main.run @@ fun env ->
350 Eio.Switch.run @@ fun sw ->
351+ let client = Peertube.Client.create ~sw env ~base_url in
0352 let channel = Peertube.Client.get_channel client ~handle () in
353 print_channel ~json channel
354···370 handle_api_error @@ fun () ->
371 Eio_main.run @@ fun env ->
372 Eio.Switch.run @@ fun sw ->
373+ let client = Peertube.Client.create ~sw env ~base_url in
0374 let response = Peertube.Client.list_accounts client ~count ~start () in
375 Fmt.pr "Showing %d of %d accounts (offset %d)@.@."
376 (List.length (Peertube.Paginated.data response))
···390 handle_api_error @@ fun () ->
391 Eio_main.run @@ fun env ->
392 Eio.Switch.run @@ fun sw ->
393+ let client = Peertube.Client.create ~sw env ~base_url in
0394 let account = Peertube.Client.get_account client ~handle () in
395 print_account ~json account
396···405 handle_api_error @@ fun () ->
406 Eio_main.run @@ fun env ->
407 Eio.Switch.run @@ fun sw ->
408+ let client = Peertube.Client.create ~sw env ~base_url in
0409 let response =
410 Peertube.Client.get_account_videos client ~count ~start ~handle ()
411 in
···434 handle_api_error @@ fun () ->
435 Eio_main.run @@ fun env ->
436 Eio.Switch.run @@ fun sw ->
437+ let client = Peertube.Client.create ~sw env ~base_url in
0438 let response = Peertube.Client.list_playlists client ~count ~start () in
439 Fmt.pr "Showing %d of %d playlists (offset %d)@.@."
440 (List.length (Peertube.Paginated.data response))
···454 handle_api_error @@ fun () ->
455 Eio_main.run @@ fun env ->
456 Eio.Switch.run @@ fun sw ->
457+ let client = Peertube.Client.create ~sw env ~base_url in
0458 let response =
459 Peertube.Client.search_playlists client ~query ~count ~start ()
460 in
···477 handle_api_error @@ fun () ->
478 Eio_main.run @@ fun env ->
479 Eio.Switch.run @@ fun sw ->
480+ let client = Peertube.Client.create ~sw env ~base_url in
0481 let playlist = Peertube.Client.get_playlist client ~id () in
482 print_playlist ~json playlist
483···492 handle_api_error @@ fun () ->
493 Eio_main.run @@ fun env ->
494 Eio.Switch.run @@ fun sw ->
495+ let client = Peertube.Client.create ~sw env ~base_url in
0496 let response =
497 Peertube.Client.get_playlist_videos client ~count ~start ~id ()
498 in
···534 handle_api_error @@ fun () ->
535 Eio_main.run @@ fun env ->
536 Eio.Switch.run @@ fun sw ->
537+ let client = Peertube.Client.create ~sw env ~base_url in
0538 let config = Peertube.Client.get_config client () in
539 if json then print_json Peertube.Server_config.jsont config
540 else begin
···562 handle_api_error @@ fun () ->
563 Eio_main.run @@ fun env ->
564 Eio.Switch.run @@ fun sw ->
565+ let client = Peertube.Client.create ~sw env ~base_url in
0566 let stats = Peertube.Client.get_stats client () in
567 if json then print_json Peertube.Server_stats.jsont stats
568 else begin
+18-6
lib/peertube.mli
···14 let () =
15 Eio_main.run @@ fun env ->
16 Eio.Switch.run @@ fun sw ->
17- let session = Requests.create ~sw env in
18- let client = Client.create ~session ~base_url:"https://framatube.org" in
1920 (* List recent videos *)
21 let videos = Client.list_videos client () in
···815 Functions raise {!Client.Api_error} on HTTP errors.
816817 {[
818- let client = Client.create ~session ~base_url:"https://framatube.org" in
819 let videos = Client.list_videos client () in
820 ...
821 ]} *)
···828 Encapsulates the HTTP client and base URL for making API requests. In
829 future, this may also contain authentication credentials. *)
830831- val create : session:Requests.t -> base_url:string -> t
832- (** [create ~session ~base_url] creates a new PeerTube API session.
00000000833834- @param session HTTP client session from the Requests library
00000835 @param base_url
836 Base URL of the PeerTube instance (e.g., "https://framatube.org") *)
837
···14 let () =
15 Eio_main.run @@ fun env ->
16 Eio.Switch.run @@ fun sw ->
17+ let client = Client.create ~sw env ~base_url:"https://framatube.org" in
01819 (* List recent videos *)
20 let videos = Client.list_videos client () in
···814 Functions raise {!Client.Api_error} on HTTP errors.
815816 {[
817+ let client = Client.create ~sw env ~base_url:"https://framatube.org" in
818 let videos = Client.list_videos client () in
819 ...
820 ]} *)
···827 Encapsulates the HTTP client and base URL for making API requests. In
828 future, this may also contain authentication credentials. *)
829830+ val create :
831+ ?session:Requests.t ->
832+ sw:Eio.Switch.t ->
833+ < clock : _ Eio.Time.clock
834+ ; net : _ Eio.Net.t
835+ ; fs : Eio.Fs.dir_ty Eio.Path.t
836+ ; .. > ->
837+ base_url:string ->
838+ t
839+ (** [create ?session ~sw env ~base_url] creates a new PeerTube API session.
840841+ If [session] is not provided, a new HTTP session is created using the
842+ given switch and environment. If [session] is provided, it is reused.
843+844+ @param session Optional existing HTTP client session to reuse
845+ @param sw Eio switch for resource management
846+ @param env Eio environment with clock, net, and fs capabilities
847 @param base_url
848 Base URL of the PeerTube instance (e.g., "https://framatube.org") *)
849
+6-1
lib/peertube_client.ml
···3type t = { session : Requests.t; base_url : string }
4(** Session type encapsulating HTTP client and base URL. *)
56-let create ~session ~base_url = { session; base_url }
000007let base_url t = t.base_url
8let http_session t = t.session
9let log_src = Logs.Src.create "peertube" ~doc:"PeerTube API client"
···3type t = { session : Requests.t; base_url : string }
4(** Session type encapsulating HTTP client and base URL. *)
56+let create ?session ~sw env ~base_url =
7+ let session = match session with
8+ | Some s -> s
9+ | None -> Requests.create ~sw env
10+ in
11+ { session; base_url }
12let base_url t = t.base_url
13let http_session t = t.session
14let log_src = Logs.Src.create "peertube" ~doc:"PeerTube API client"
+16-3
lib/peertube_client.mli
···11 Encapsulates the HTTP client and base URL for making API requests. In
12 future, this may also contain authentication credentials. *)
1314-val create : session:Requests.t -> base_url:string -> t
15-(** [create ~session ~base_url] creates a new PeerTube API session.
000000000001617- @param session HTTP client session from the Requests library
0018 @param base_url
19 Base URL of the PeerTube instance (e.g., "https://framatube.org") *)
20
···11 Encapsulates the HTTP client and base URL for making API requests. In
12 future, this may also contain authentication credentials. *)
1314+val create :
15+ ?session:Requests.t ->
16+ sw:Eio.Switch.t ->
17+ < clock : _ Eio.Time.clock
18+ ; net : _ Eio.Net.t
19+ ; fs : Eio.Fs.dir_ty Eio.Path.t
20+ ; .. > ->
21+ base_url:string ->
22+ t
23+(** [create ?session ~sw env ~base_url] creates a new PeerTube API session.
24+25+ If [session] is not provided, a new HTTP session is created using the
26+ given switch and environment. If [session] is provided, it is reused.
2728+ @param session Optional existing HTTP client session to reuse
29+ @param sw Eio switch for resource management
30+ @param env Eio environment with clock, net, and fs capabilities
31 @param base_url
32 Base URL of the PeerTube instance (e.g., "https://framatube.org") *)
33