diff --git a/app/src/main/java/com/fastaccess/data/dao/GitHubStatusModel.java b/app/src/main/java/com/fastaccess/data/dao/GitHubStatusModel.java new file mode 100644 index 00000000..e8eaed80 --- /dev/null +++ b/app/src/main/java/com/fastaccess/data/dao/GitHubStatusModel.java @@ -0,0 +1,52 @@ +package com.fastaccess.data.dao; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Date; + +/** + * Created by Hashemsergani on 18.10.17. + */ + +public class GitHubStatusModel implements Parcelable { + + private String status; + private String body; + private Date createdOn; + + public String getStatus() { return status;} + + public void setStatus(String status) { this.status = status;} + + public String getBody() { return body;} + + public void setBody(String body) { this.body = body;} + + public Date getCreatedOn() { return createdOn;} + + public void setCreatedOn(Date createdOn) { this.createdOn = createdOn;} + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.status); + dest.writeString(this.body); + dest.writeLong(this.createdOn != null ? this.createdOn.getTime() : -1); + } + + public GitHubStatusModel() {} + + protected GitHubStatusModel(Parcel in) { + this.status = in.readString(); + this.body = in.readString(); + long tmpCreatedOn = in.readLong(); + this.createdOn = tmpCreatedOn == -1 ? null : new Date(tmpCreatedOn); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public GitHubStatusModel createFromParcel(Parcel source) {return new GitHubStatusModel(source);} + + @Override public GitHubStatusModel[] newArray(int size) {return new GitHubStatusModel[size];} + }; +} diff --git a/app/src/main/java/com/fastaccess/data/service/ContentService.kt b/app/src/main/java/com/fastaccess/data/service/ContentService.kt index ee9328ff..5f686406 100644 --- a/app/src/main/java/com/fastaccess/data/service/ContentService.kt +++ b/app/src/main/java/com/fastaccess/data/service/ContentService.kt @@ -2,6 +2,7 @@ package com.fastaccess.data.service import com.fastaccess.data.dao.CommitRequestModel import com.fastaccess.data.dao.GitCommitModel +import com.fastaccess.data.dao.GitHubStatusModel import io.reactivex.Observable import retrofit2.http.* @@ -23,4 +24,7 @@ interface ContentService { @Path("path") path: String, @Query("branch") branch: String, @Body body: CommitRequestModel): Observable + + @GET("api/last-message.json") + fun checkStatus(): Observable } \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java index c0d7de28..d2026eda 100644 --- a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java +++ b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java @@ -12,6 +12,7 @@ import com.fastaccess.App; import com.fastaccess.BuildConfig; import com.fastaccess.R; import com.fastaccess.data.dao.GitHubErrorResponse; +import com.fastaccess.data.dao.GitHubStatusModel; import com.fastaccess.data.dao.NameParser; import com.fastaccess.data.service.ContentService; import com.fastaccess.data.service.GistService; @@ -40,6 +41,7 @@ import com.google.gson.GsonBuilder; import java.io.File; import java.lang.reflect.Modifier; +import io.reactivex.Observable; import okhttp3.OkHttpClient; import okhttp3.ResponseBody; import okhttp3.logging.HttpLoggingInterceptor; @@ -212,6 +214,17 @@ public class RestProvider { return null; } + @NonNull public static Observable gitHubStatus() { + return new Retrofit.Builder() + .baseUrl("https://status.github.com/") + .client(provideOkHttpClient()) + .addConverterFactory(new GithubResponseConverter(gson)) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build() + .create(ContentService.class) + .checkStatus(); + } + public static void clearHttpClient() { okHttpClient = null; } diff --git a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java index 7c4cfa9e..aa4e7e8f 100644 --- a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java +++ b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java @@ -112,6 +112,7 @@ public abstract class BaseActivity void makeRestCall(@NonNull Observable observable, @NonNull Consumer onNext); void makeRestCall(@NonNull Observable observable, @NonNull Consumer onNext, boolean cancelable); + + void onCheckGitHubStatus(); } interface PaginationListener

{ diff --git a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java index 23abea4f..982019e2 100644 --- a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java @@ -121,6 +121,15 @@ public class BasePresenter extends TiPresenter impl return resId; } + public void onCheckGitHubStatus() { + manageObservable(RestProvider.gitHubStatus() + .doOnNext(gitHubStatusModel -> { + if (!"good".equalsIgnoreCase(gitHubStatusModel.getStatus())) { + sendToView(v -> v.showErrorMessage("Github Status:\n" + gitHubStatusModel.getBody())); + } + })); + } + public boolean isEnterprise() { return enterprise; }