<commit_before>package com.charlesmadere.hummingbird.networking;

import com.charlesmadere.hummingbird.misc.Constants;
import com.charlesmadere.hummingbird.models.AddAnimeLibraryEntryResponse;
import com.charlesmadere.hummingbird.models.AddMangaLibraryEntryResponse;
import com.charlesmadere.hummingbird.models.AnimeDigest;
import com.charlesmadere.hummingbird.models.AnimeWrapper;
import com.charlesmadere.hummingbird.models.Feed;
import com.charlesmadere.hummingbird.models.Franchise;
import com.charlesmadere.hummingbird.models.GroupDigest;
import com.charlesmadere.hummingbird.models.MangaDigest;
import com.charlesmadere.hummingbird.models.SearchBundle;
import com.charlesmadere.hummingbird.models.SearchDepth;
import com.charlesmadere.hummingbird.models.SearchScope;
import com.charlesmadere.hummingbird.models.User;
import com.charlesmadere.hummingbird.models.UserDigest;
import com.google.gson.JsonElement;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface HummingbirdApi {

    String ACCEPT_JSON_MIMETYPE = "Accept: " + Constants.MIMETYPE_JSON;


    /*
     * internal API
     */

    @Headers(ACCEPT_JSON_MIMETYPE)
    @POST("library_entries")
    Call<AddAnimeLibraryEntryResponse> addAnimeLibraryEntry(@Body JsonElement body);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @POST("manga_library_entries")
    Call<AddMangaLibraryEntryResponse> addMangaLibraryEntry(@Body JsonElement body);

    @DELETE("library_entries/{libraryEntryId}")
    Call<Void> deleteAnimeLibraryEntry(@Path("libraryEntryId") String libraryEntryId);

    @DELETE("manga_library_entries/{libraryEntryId}")
    Call<Void> deleteMangaLibraryEntry(@Path("libraryEntryId") String libraryEntryId);

    @DELETE("stories/{storyId}")
    Call<Boolean> deleteStory(@Path("storyId") String storyId);

    @DELETE("substories/{substoryId}")
    Call<Boolean> deleteSubstory(@Path("substoryId") String substoryId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("anime/{animeId}")
    Call<AnimeWrapper> getAnime(@Path("animeId") String animeId);

    @GET("full_anime/{animeId}")
    Call<AnimeDigest> getAnimeDigest(@Path("animeId") String animeId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("library_entries")
    Call<Feed> getAnimeLibraryEntries(@Query("user_id") String userId,
            @Query("status") String watchingStatusLibraryUpdateValue);

    @GET("users")
    Call<Feed> getFollowedUsers(@Query("followed_by") String username, @Query("page") Integer page);

    @GET("users")
    Call<Feed> getFollowingUsers(@Query("followers_of") String username,
            @Query("page") Integer page);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("franchises/{franchiseId}")
    Call<Franchise> getFranchise(@Path("franchiseId") String franchiseId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("groups/{groupId}")
    Call<GroupDigest> getGroup(@Path("groupId") String groupId);

    @GET("group_members")
    Call<Feed> getGroupMembers(@Query("group_id") String groupId, @Query("page") Integer page);

    @GET("stories")
    Call<Feed> getGroupStories(@Query("group_id") String groupId, @Query("page") Integer page);

    @GET("full_manga/{mangaId}")
    Call<MangaDigest> getMangaDigest(@Path("mangaId") String mangaId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("manga_library_entries")
    Call<Feed> getMangaLibraryEntries(@Query("user_id") String userId,
            @Query("status") String readingStatusLibraryUpdateValue);

    @GET("stories")
    Call<Feed> getNewsFeed(@Query("news_feed") boolean newsFeed, @Query("page") Integer page);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("notifications")
    Call<Feed> getNotifications(@Query("page") Integer page);

    @GET("sign-in")
    Call<ResponseBody> getSignInPage();

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("stories/{storyId}")
    Call<Feed> getStory(@Path("storyId") String storyId);

    @GET("notifications/{notificationId}")
    Call<Feed> getStoryFromNotification(@Path("notificationId") String notificationId);

    @GET("substories")
    Call<Feed> getSubstories(@Query("story_id") String storyId, @Query("page") Integer page);<commit_msg>added header<commit_after>package com.charlesmadere.hummingbird.networking;

import com.charlesmadere.hummingbird.misc.Constants;
import com.charlesmadere.hummingbird.models.AddAnimeLibraryEntryResponse;
import com.charlesmadere.hummingbird.models.AddMangaLibraryEntryResponse;
import com.charlesmadere.hummingbird.models.AnimeDigest;
import com.charlesmadere.hummingbird.models.AnimeWrapper;
import com.charlesmadere.hummingbird.models.Feed;
import com.charlesmadere.hummingbird.models.Franchise;
import com.charlesmadere.hummingbird.models.GroupDigest;
import com.charlesmadere.hummingbird.models.MangaDigest;
import com.charlesmadere.hummingbird.models.SearchBundle;
import com.charlesmadere.hummingbird.models.SearchDepth;
import com.charlesmadere.hummingbird.models.SearchScope;
import com.charlesmadere.hummingbird.models.User;
import com.charlesmadere.hummingbird.models.UserDigest;
import com.google.gson.JsonElement;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface HummingbirdApi {

    String ACCEPT_JSON_MIMETYPE = "Accept: " + Constants.MIMETYPE_JSON;


    /*
     * internal API
     */

    @Headers(ACCEPT_JSON_MIMETYPE)
    @POST("library_entries")
    Call<AddAnimeLibraryEntryResponse> addAnimeLibraryEntry(@Body JsonElement body);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @POST("manga_library_entries")
    Call<AddMangaLibraryEntryResponse> addMangaLibraryEntry(@Body JsonElement body);

    @DELETE("library_entries/{libraryEntryId}")
    Call<Void> deleteAnimeLibraryEntry(@Path("libraryEntryId") String libraryEntryId);

    @DELETE("manga_library_entries/{libraryEntryId}")
    Call<Void> deleteMangaLibraryEntry(@Path("libraryEntryId") String libraryEntryId);

    @DELETE("stories/{storyId}")
    Call<Boolean> deleteStory(@Path("storyId") String storyId);

    @DELETE("substories/{substoryId}")
    Call<Boolean> deleteSubstory(@Path("substoryId") String substoryId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("anime/{animeId}")
    Call<AnimeWrapper> getAnime(@Path("animeId") String animeId);

    @GET("full_anime/{animeId}")
    Call<AnimeDigest> getAnimeDigest(@Path("animeId") String animeId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("library_entries")
    Call<Feed> getAnimeLibraryEntries(@Query("user_id") String userId,
            @Query("status") String watchingStatusLibraryUpdateValue);

    @GET("users")
    Call<Feed> getFollowedUsers(@Query("followed_by") String username, @Query("page") Integer page);

    @GET("users")
    Call<Feed> getFollowingUsers(@Query("followers_of") String username,
            @Query("page") Integer page);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("franchises/{franchiseId}")
    Call<Franchise> getFranchise(@Path("franchiseId") String franchiseId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("groups/{groupId}")
    Call<GroupDigest> getGroup(@Path("groupId") String groupId);

    @GET("group_members")
    Call<Feed> getGroupMembers(@Query("group_id") String groupId, @Query("page") Integer page);

    @GET("stories")
    Call<Feed> getGroupStories(@Query("group_id") String groupId, @Query("page") Integer page);

    @GET("full_manga/{mangaId}")
    Call<MangaDigest> getMangaDigest(@Path("mangaId") String mangaId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("manga_library_entries")
    Call<Feed> getMangaLibraryEntries(@Query("user_id") String userId,
            @Query("status") String readingStatusLibraryUpdateValue);

    @GET("stories")
    Call<Feed> getNewsFeed(@Query("news_feed") boolean newsFeed, @Query("page") Integer page);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("notifications")
    Call<Feed> getNotifications(@Query("page") Integer page);

    @GET("sign-in")
    Call<ResponseBody> getSignInPage();

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("stories/{storyId}")
    Call<Feed> getStory(@Path("storyId") String storyId);

    @Headers(ACCEPT_JSON_MIMETYPE)
    @GET("notifications/{notificationId}")
    Call<Feed> getStoryFromNotification(@Path("notificationId") String notificationId);

    @GET("substories")
    Call<Feed> getSubstories(@Query("story_id") String storyId, @Query("page") Integer page);
{'fraction_non_alphanumeric': 0.1286358511837655, 'fraction_numerical': 0.002705749718151071, 'mean_word_length': 6.125301204819277, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 49, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2148208', 'n_tokens_mistral': 2870, 'n_tokens_neox': 2856, 'n_words': 423}