/*
* Copyright 2017 ThirtyDegreesRay
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.thirtydegreesray.openhub.http;
import android.support.annotation.NonNull;
import com.thirtydegreesray.openhub.mvp.model.Branch;
import com.thirtydegreesray.openhub.mvp.model.FileModel;
import com.thirtydegreesray.openhub.mvp.model.Repository;
import com.thirtydegreesray.openhub.mvp.model.User;
import java.util.ArrayList;
import okhttp3.ResponseBody;
import retrofit2.Response;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Url;
import rx.Observable;
/**
* Created on 2017/8/1.
*
* @author ThirtyDegreesRay
*/
public interface RepoService {
/**
* List repositories being starred
*/
@NonNull @GET("user{user}/starred")
Observable>> getStarredRepos(
@Header("forceNetWork") boolean forceNetWork,
@Path("user") String user,
@Query("page") int page
);
/**
* List user repositories
*/
@NonNull @GET("user{user}/repos")
Observable>> getUserRepos(
@Header("forceNetWork") boolean forceNetWork,
@Path("user") String user,
@Query("page") int page
);
/**
* Check if you are starring a repository
*/
@NonNull @GET("user/starred/{owner}/{repo}")
Observable> checkRepoStarred(
@Path("owner") String owner,
@Path("repo") String repo
);
/**
* Star a repository
*/
@NonNull @PUT("user/starred/{owner}/{repo}")
Observable> starRepo(
@Path("owner") String owner,
@Path("repo") String repo
);
/**
* Unstar a repository
*/
@NonNull @DELETE("user/starred/{owner}/{repo}")
Observable> unstarRepo(
@Path("owner") String owner,
@Path("repo") String repo
);
@NonNull @GET @Headers("Accept: application/vnd.github.html")
Observable> getFileAsHtmlStream(
@Header("forceNetWork") boolean forceNetWork,
@Url String url
);
@NonNull @GET @Headers("Accept: application/vnd.github.VERSION.raw")
Observable> getFileAsStream(
@Header("forceNetWork") boolean forceNetWork,
@Url String url
);
@NonNull @GET("repos/{owner}/{repo}/contents/{path}")
Observable>> getRepoFiles(
@Path("owner") String owner,
@Path("repo") String repo,
@Path(value = "path", encoded = true) String path,
@Query("ref") String branch
);
@NonNull @GET("repos/{owner}/{repo}/branches")
Observable>> getBranches(
@Path("owner") String owner,
@Path("repo") String repo
);
@NonNull @GET("repos/{owner}/{repo}/tags")
Observable>> getTags(
@Path("owner") String owner,
@Path("repo") String repo
);
@NonNull @GET("repos/{owner}/{repo}/stargazers")
Observable>> getStargazers(
@Header("forceNetWork") boolean forceNetWork,
@Path(value = "owner") String owner,
@Path(value = "repo") String repo,
@Query("page") int page
);
@NonNull @GET("repos/{owner}/{repo}/subscribers")
Observable>> getWatchers(
@Header("forceNetWork") boolean forceNetWork,
@Path("owner") String owner,
@Path("repo") String repo,
@Query("page") int page
);
@NonNull @GET("repos/{owner}/{repo}")
Observable> getRepoInfo(
@Header("forceNetWork") boolean forceNetWork,
@Path("owner") String owner,
@Path("repo") String repo
);
}