Skip to content
Snippets Groups Projects
Commit cbd7ebc0 authored by John Carlson's avatar John Carlson
Browse files

Merge branch 'develop'

parents 35eba923 e31b881c
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 132 additions and 286 deletions
package com.commit451.gitlab.model.api;
 
import android.net.Uri;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
import java.util.Date;
 
@Parcel
@JsonObject
public class ProjectNamespace {
@JsonField(name = "id")
@Json(name = "id")
long id;
@JsonField(name = "name")
@Json(name = "name")
String name;
@JsonField(name = "path")
@Json(name = "path")
String path;
@JsonField(name = "owner_id")
@Json(name = "owner_id")
long ownerId;
@JsonField(name = "created_at")
@Json(name = "created_at")
Date createdAt;
@JsonField(name = "updated_at")
@Json(name = "updated_at")
Date updatedAt;
@JsonField(name = "description")
@Json(name = "description")
String description;
@JsonField(name = "avatar")
@Json(name = "avatar")
Avatar avatar;
@JsonField(name = "public")
@Json(name = "public")
boolean isPublic;
 
public ProjectNamespace() {
Loading
Loading
@@ -86,15 +82,14 @@ public class ProjectNamespace {
}
 
@Parcel
@JsonObject
public static class Avatar {
@JsonField(name = "url")
Uri url;
@Json(name = "url")
String url;
 
public Avatar() {
}
 
public Uri getUrl() {
public String getUrl() {
return url;
}
}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.commit451.gitlab.util.ObjectUtil;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
import java.util.Date;
 
@Parcel
@JsonObject
public class RepositoryCommit {
@JsonField(name = "id")
@Json(name = "id")
String id;
@JsonField(name = "short_id")
@Json(name = "short_id")
String shortId;
@JsonField(name = "title")
@Json(name = "title")
String title;
@JsonField(name = "author_name")
@Json(name = "author_name")
String authorName;
@JsonField(name = "author_email")
@Json(name = "author_email")
String authorEmail;
@JsonField(name = "created_at")
@Json(name = "created_at")
Date createdAt;
@JsonField(name = "message")
@Json(name = "message")
String message;
 
public RepositoryCommit() {}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
@Parcel
@JsonObject
public class RepositoryFile {
@JsonField(name = "file_name")
@Json(name = "file_name")
String fileName;
@JsonField(name = "file_path")
@Json(name = "file_path")
String filePath;
@JsonField(name = "size")
@Json(name = "size")
long size;
@JsonField(name = "encoding")
@Json(name = "encoding")
String encoding;
@JsonField(name = "content")
@Json(name = "content")
String content;
@JsonField(name = "ref")
@Json(name = "ref")
String ref;
@JsonField(name = "blob_id")
@Json(name = "blob_id")
String blobId;
@JsonField(name = "commit_id")
@Json(name = "commit_id")
String commitId;
@JsonField(name = "last_commit_id")
@Json(name = "last_commit_id")
String lastCommitId;
 
public RepositoryFile() {}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import android.net.Uri;
import android.support.annotation.StringDef;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.commit451.gitlab.R;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -13,7 +10,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
 
@Parcel
@JsonObject
public class RepositoryTreeObject {
 
public static final String TYPE_FOLDER = "tree";
Loading
Loading
@@ -25,14 +21,14 @@ public class RepositoryTreeObject {
public @interface Type {
}
 
@JsonField(name = "id")
@Json(name = "id")
String id;
@JsonField(name = "name")
@Json(name = "name")
String name;
@JsonField(name = "type")
@Json(name = "type")
@Type
String type;
@JsonField(name = "mode")
@Json(name = "mode")
String mode;
 
public RepositoryTreeObject() {}
Loading
Loading
@@ -52,29 +48,4 @@ public class RepositoryTreeObject {
public String getMode() {
return mode;
}
public int getDrawableForType() {
if (type == null) {
return R.drawable.ic_unknown_24dp;
}
switch (type) {
case TYPE_FILE:
return R.drawable.ic_file_24dp;
case TYPE_FOLDER:
return R.drawable.ic_folder_24dp;
case TYPE_REPO:
return R.drawable.ic_repo_24dp;
}
return R.drawable.ic_unknown_24dp;
}
public Uri getUrl(Project project, String branchName, String currentPath) {
return project.getWebUrl().buildUpon()
.appendPath("tree")
.appendPath(branchName)
.appendEncodedPath(currentPath)
.appendPath(name)
.build();
}
}
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -9,18 +8,17 @@ import org.parceler.Parcel;
* A runner. It runs builds. yeah
*/
@Parcel
@JsonObject
public class Runner {
 
@JsonField(name = "id")
@Json(name = "id")
long id;
@JsonField(name = "description")
@Json(name = "description")
String description;
@JsonField(name = "active")
@Json(name = "active")
boolean active;
@JsonField(name = "is_shared")
@Json(name = "is_shared")
boolean isShared;
@JsonField(name = "name")
@Json(name = "name")
String name;
 
public long getId() {
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -11,21 +10,20 @@ import java.util.Date;
* A snippet!
*/
@Parcel
@JsonObject
public class Snippet {
@JsonField(name = "id")
@Json(name = "id")
long id;
@JsonField(name = "title")
@Json(name = "title")
String title;
@JsonField(name = "file_name")
@Json(name = "file_name")
String fileName;
@JsonField(name = "author")
@Json(name = "author")
Author author;
@JsonField(name = "expires_at")
@Json(name = "expires_at")
Date expiresAt;
@JsonField(name = "updated_at")
@Json(name = "updated_at")
Date updatedAt;
@JsonField(name = "created_at")
@Json(name = "created_at")
Date createdAt;
 
protected Snippet() {
Loading
Loading
@@ -45,19 +43,18 @@ public class Snippet {
}
 
@Parcel
@JsonObject
public static class Author {
@JsonField(name = "id")
@Json(name = "id")
long mId;
@JsonField(name = "username")
@Json(name = "username")
String mUsername;
@JsonField(name = "email")
@Json(name = "email")
String mEmail;
@JsonField(name = "name")
@Json(name = "name")
String mName;
@JsonField(name = "state")
@Json(name = "state")
String mState;
@JsonField(name = "created_at")
@Json(name = "created_at")
Date mCreatedAt;
 
protected Author() {
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
/**
* A tag in Git
*/
@JsonObject
public class Tag {
 
@JsonField(name = "name")
@Json(name = "name")
String name;
@JsonField(name = "message")
@Json(name = "message")
String message;
@JsonField(name = "commit")
@Json(name = "commit")
Commit commit;
@JsonField(name = "release")
@Json(name = "release")
Release release;
 
protected Tag() {
Loading
Loading
@@ -38,20 +36,18 @@ public class Tag {
return release;
}
 
@JsonObject
public static class Commit {
 
@JsonField(name = "id")
@Json(name = "id")
String mId;
@JsonField(name = "message")
@Json(name = "message")
String mMessage;
}
 
@JsonObject
public static class Release {
@JsonField(name = "tag_name")
@Json(name = "tag_name")
String mTagName;
@JsonField(name = "description")
@Json(name = "description")
String mDescription;
}
}
Loading
Loading
@@ -2,8 +2,7 @@ package com.commit451.gitlab.model.api;
 
import android.support.annotation.StringDef;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -16,7 +15,6 @@ import java.util.Date;
* makes it not play nice with any automated json parsing
*/
@Parcel
@JsonObject
public class Todo {
 
public static final String TARGET_ISSUE = "Issue";
Loading
Loading
@@ -35,25 +33,25 @@ public class Todo {
public @interface State {
}
 
@JsonField(name = "id")
@Json(name = "id")
String id;
@JsonField(name = "project")
@Json(name = "project")
Project project;
@JsonField(name = "author")
@Json(name = "author")
UserBasic author;
@JsonField(name = "action_name")
@Json(name = "action_name")
String actionName;
@JsonField(name = "target_type")
@Json(name = "target_type")
@TargetType
String targetType;
@JsonField(name = "target_url")
@Json(name = "target_url")
String targetUrl;
@JsonField(name = "body")
@Json(name = "body")
String body;
@JsonField(name = "state")
@Json(name = "state")
@State
String state;
@JsonField(name = "created_at")
@Json(name = "created_at")
Date createdAt;
 
public Todo() {}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import android.net.Uri;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
import java.util.Date;
 
@Parcel
@JsonObject
public class User extends UserBasic {
@JsonField(name = "created_at")
@Json(name = "created_at")
Date createdAt;
@JsonField(name = "is_admin")
@Json(name = "is_admin")
boolean isAdmin;
@JsonField(name = "bio")
@Json(name = "bio")
String bio;
@JsonField(name = "skype")
@Json(name = "skype")
String skype;
@JsonField(name = "linkedin")
@Json(name = "linkedin")
String linkedin;
@JsonField(name = "twitter")
@Json(name = "twitter")
String twitter;
@JsonField(name = "website_url")
Uri websiteUrl;
@Json(name = "website_url")
String websiteUrl;
 
public User() {}
 
Loading
Loading
@@ -53,7 +49,7 @@ public class User extends UserBasic {
return twitter;
}
 
public Uri getWebsiteUrl() {
public String getWebsiteUrl() {
return websiteUrl;
}
}
Loading
Loading
@@ -4,8 +4,7 @@ import android.net.Uri;
import android.support.annotation.Nullable;
import android.support.annotation.StringDef;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -13,7 +12,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
 
@Parcel
@JsonObject
public class UserBasic extends UserSafe {
 
public static final String STATE_ACTIVE = "active";
Loading
Loading
@@ -23,15 +21,15 @@ public class UserBasic extends UserSafe {
@Retention(RetentionPolicy.SOURCE)
public @interface State {}
 
@JsonField(name = "id")
@Json(name = "id")
long id;
@JsonField(name = "state")
@Json(name = "state")
@State
String state;
@JsonField(name = "avatar_url")
Uri avatarUrl;
@JsonField(name = "web_url")
Uri webUrl;
@Json(name = "avatar_url")
String avatarUrl;
@Json(name = "web_url")
String webUrl;
 
public UserBasic() {}
 
Loading
Loading
@@ -39,15 +37,16 @@ public class UserBasic extends UserSafe {
return id;
}
 
public @State String getState() {
@State
public String getState() {
return state;
}
 
public Uri getAvatarUrl() {
public String getAvatarUrl() {
return avatarUrl;
}
 
public Uri getWebUrl() {
public String getWebUrl() {
return webUrl;
}
 
Loading
Loading
@@ -56,7 +55,7 @@ public class UserBasic extends UserSafe {
if (webUrl == null) {
return null;
}
return Uri.parse(webUrl.toString() + ".atom");
return Uri.parse(webUrl + ".atom");
}
 
@Override
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
Loading
Loading
@@ -9,25 +8,24 @@ import java.util.Date;
import java.util.List;
 
@Parcel
@JsonObject
public class UserFull extends User {
@JsonField(name = "email")
@Json(name = "email")
String email;
@JsonField(name = "theme_id")
@Json(name = "theme_id")
int themeId;
@JsonField(name = "color_scheme_id")
@Json(name = "color_scheme_id")
int colorSchemeId;
@JsonField(name = "projects_limit")
@Json(name = "projects_limit")
int projectsLimit;
@JsonField(name = "current_sign_in_at")
@Json(name = "current_sign_in_at")
Date currentSignInAt;
@JsonField(name = "identities")
@Json(name = "identities")
List<Identity> identities;
@JsonField(name = "can_create_group")
@Json(name = "can_create_group")
boolean canCreateGroup;
@JsonField(name = "can_create_project")
@Json(name = "can_create_project")
boolean canCreateProject;
@JsonField(name = "two_factor_enabled")
@Json(name = "two_factor_enabled")
boolean twoFactorEnabled;
 
public UserFull() {}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
@Parcel
@JsonObject
public class UserLogin extends UserFull {
@JsonField(name = "private_token")
@Json(name = "private_token")
String privateToken;
 
public UserLogin() {}
Loading
Loading
package com.commit451.gitlab.model.api;
 
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import com.squareup.moshi.Json;
 
import org.parceler.Parcel;
 
@Parcel
@JsonObject
public class UserSafe {
@JsonField(name = "name")
@Json(name = "name")
String name;
@JsonField(name = "username")
@Json(name = "username")
String username;
 
public UserSafe() {}
Loading
Loading
Loading
Loading
@@ -221,7 +221,8 @@ object Navigator {
 
fun navigateToUrl(activity: Activity, uri: Uri, account: Account) {
Timber.d("navigateToUrl: %s", uri)
if (account.serverUrl.host == uri.host) {
val serverUri = Uri.parse(account.serverUrl)
if (serverUri.host == uri.host) {
activity.startActivity(DeepLinker.generateDeeplinkIntentFromUri(activity, uri))
} else {
IntentUtil.openPage(activity as BaseActivity, uri.toString())
Loading
Loading
Loading
Loading
@@ -8,12 +8,11 @@ class CustomHostnameVerifier(private val trustedHostname: String?) : HostnameVer
 
companion object {
private val DEFAULT_HOSTNAME_VERIFIER = OkHostnameVerifier.INSTANCE
//TODO make this not static, its kinda dirty
var lastFailedHostname: String? = null
private set
}
 
var lastFailedHostname: String? = null
private set
override fun verify(hostname: String, session: SSLSession): Boolean {
if (DEFAULT_HOSTNAME_VERIFIER.verify(hostname, session)) {
lastFailedHostname = null
Loading
Loading
package com.commit451.gitlab.ssl;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
public final class X509Util {
private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
private X509Util() {}
public static String getFingerPrint(X509Certificate certificate) throws CertificateEncodingException {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA-1");
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(e);
}
digest.update(certificate.getEncoded());
return hexify(digest.digest());
}
public static String hexify(byte[] bytes) {
char[] hexChars = new char[bytes.length * 3];
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
hexChars[i * 3] = HEX_ARRAY[v >>> 4];
hexChars[i * 3 + 1] = HEX_ARRAY[v & 0x0F];
hexChars[i * 3 + 2] = ':';
}
int length = hexChars.length;
if (length > 0) {
return new String(hexChars, 0, length - 1);
} else {
return "";
}
}
}
package com.commit451.gitlab.ssl
import com.commit451.gitlab.util.Hash
import java.security.cert.X509Certificate
object X509Util {
fun getFingerPrint(certificate: X509Certificate): String {
return Hash.sha1(certificate.encoded)
}
}
package com.commit451.gitlab.util
import `in`.uncod.android.bypass.Bypass
import android.content.Context
import com.commit451.gitlab.activity.FullscreenImageActivity
import com.commit451.gitlab.model.api.Project
/**
* Creates [BypassFactory]s which are configured to handle relative Urls
*/
object BypassFactory {
fun create(context: Context): Bypass {
return Bypass(context)
}
fun create(context: Context, project: Project): Bypass {
val bypass = Bypass(context)
bypass.setImageSpanClickListener { view, _, imageUrl ->
val intent = FullscreenImageActivity.newIntent(view.context, project, imageUrl)
context.startActivity(intent)
}
return bypass
}
}
\ No newline at end of file
Loading
Loading
@@ -2,27 +2,12 @@ package com.commit451.gitlab.util
 
import android.net.Uri
import com.commit451.gitlab.model.Account
import org.joda.time.DateTime
import org.joda.time.format.ISODateTimeFormat
import java.util.*
 
/**
* Converts things!
*/
object ConversionUtil {
 
fun fromDate(date: Date): String {
return ISODateTimeFormat.dateTime().print(DateTime(date))
}
fun toDate(dateString: String?): Date? {
if (dateString == null || dateString.isEmpty()) {
return null
}
return ISODateTimeFormat.dateTimeParser().parseDateTime(dateString).toDate()
}
fun fromUri(uri: Uri?): String? {
if (uri == null) {
return null
Loading
Loading
@@ -48,7 +33,8 @@ object ConversionUtil {
return uri
}
 
val builder = account.serverUrl
val serverUri = Uri.parse(account.serverUrl)
val builder = serverUri
.buildUpon()
.encodedQuery(uri.encodedQuery)
.encodedFragment(uri.encodedFragment)
Loading
Loading
Loading
Loading
@@ -2,33 +2,12 @@ package com.commit451.gitlab.util
 
import android.net.Uri
 
import com.commit451.gitlab.ssl.X509Util
import java.io.UnsupportedEncodingException
import java.net.URLEncoder
import java.nio.charset.Charset
import java.security.MessageDigest
import java.security.NoSuchAlgorithmException
object Gravatar {
 
@JvmOverloads
fun init(email: String? = null): Builder {
return Builder(email)
}
 
private fun md5(raw: String): String {
try {
val digest = MessageDigest.getInstance("MD5")
digest.update(raw.toByteArray(Charset.forName("UTF-8")))
return X509Util.hexify(digest.digest())
} catch (e: NoSuchAlgorithmException) {
throw IllegalStateException(e)
}
}
class Builder constructor(private val mEmail: String?) {
 
private var mSSL = false
Loading
Loading
@@ -79,7 +58,7 @@ object Gravatar {
uriBuilder.append("http://www.gravatar.com/avatar/")
}
if (mEmail != null) {
uriBuilder.append(md5(mEmail))
uriBuilder.append(Hash.md5(mEmail))
} else {
uriBuilder.append("00000000000000000000000000000000")
}
Loading
Loading
@@ -101,7 +80,7 @@ object Gravatar {
queryBuilder.append("&r=").append(mRating)
}
val query = queryBuilder.toString()
if (query.length > 0) {
if (query.isNotEmpty()) {
uriBuilder.append("?").append(query.substring(1))
}
 
Loading
Loading
@@ -109,10 +88,6 @@ object Gravatar {
}
}
 
enum class Rating {
G, PG, R, X
}
enum class DefaultImage {
_404, MYSTERY_MAN, IDENTICON, MONSTERID, WAVATAR, RETRO, BLANK
}
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment