forked from gitlab4j/gitlab4j-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
314 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
127 changes: 127 additions & 0 deletions
127
src/main/java/com/messners/gitlab/api/RepositoryFileApi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
package com.messners.gitlab.api; | ||
|
||
import javax.ws.rs.core.Form; | ||
import javax.ws.rs.core.Response; | ||
|
||
import com.messners.gitlab.api.models.RepositoryFile; | ||
|
||
|
||
/** | ||
* This class provides an entry point to all the GitLab API repository files calls. | ||
* | ||
* @author lonfee88 <[email protected]> | ||
*/ | ||
public class RepositoryFileApi extends AbstractApi { | ||
|
||
public RepositoryFileApi (GitLabApi gitLabApi) { | ||
super(gitLabApi); | ||
} | ||
|
||
/** | ||
* Get file from repository | ||
* Allows you to receive information about file in repository like name, size, content. | ||
* Note that file content is Base64 encoded. | ||
* | ||
* GET /projects/:id/repository/files | ||
* | ||
* @param file_path (required) - Full path to new file. Ex. lib/class.rb | ||
* @param projectId | ||
* @param ref (required) - The name of branch, tag or commit | ||
* @return | ||
* @throws GitLabApiException | ||
*/ | ||
public RepositoryFile getFile(String filePath, Integer projectId, String ref) throws GitLabApiException { | ||
Form form = new Form(); | ||
addFormParam(form, "file_path", filePath, true); | ||
addFormParam(form, "ref", ref, true); | ||
Response response = get(Response.Status.OK, form.asMap(),"projects", projectId, "repository", "files"); | ||
return (response.readEntity(RepositoryFile.class)); | ||
} | ||
|
||
/** | ||
* Create new file in repository | ||
* | ||
* POST /projects/:id/repository/files | ||
* | ||
* file_path (required) - Full path to new file. Ex. lib/class.rb | ||
* branch_name (required) - The name of branch | ||
* encoding (optional) - 'text' or 'base64'. Text is default. | ||
* content (required) - File content | ||
* commit_message (required) - Commit message | ||
* | ||
* @param file | ||
* @param projectId | ||
* @param branchName | ||
* @param commitMessage | ||
* @return | ||
* @throws GitLabApiException | ||
*/ | ||
public RepositoryFile createFile (RepositoryFile file, Integer projectId, String branchName, String commitMessage) throws GitLabApiException { | ||
Form formData = file2form(file, branchName, commitMessage); | ||
Response response = post(Response.Status.CREATED, formData, "projects", projectId, "repository", "files"); | ||
return (response.readEntity(RepositoryFile.class)); | ||
} | ||
|
||
/** | ||
* Update existing file in repository | ||
* | ||
* PUT /projects/:id/repository/files | ||
* | ||
* file_path (required) - Full path to new file. Ex. lib/class.rb | ||
* branch_name (required) - The name of branch | ||
* encoding (optional) - 'text' or 'base64'. Text is default. | ||
* content (required) - File content | ||
* commit_message (required) - Commit message | ||
* | ||
* @param file | ||
* @param projectId | ||
* @param branchName | ||
* @param commitMessage | ||
* @return | ||
* @throws GitLabApiException | ||
*/ | ||
public RepositoryFile updateFile (RepositoryFile file, Integer projectId, String branchName, String commitMessage) throws GitLabApiException { | ||
Form form = file2form(file, branchName, commitMessage); | ||
Response response = put(Response.Status.OK, form.asMap(), "projects", projectId, "repository", "files"); | ||
return (response.readEntity(RepositoryFile.class)); | ||
} | ||
|
||
/** | ||
* Delete existing file in repository | ||
* | ||
* DELETE /projects/:id/repository/files | ||
* | ||
* file_path (required) - Full path to file. Ex. lib/class.rb | ||
* branch_name (required) - The name of branch | ||
* commit_message (required) - Commit message | ||
* | ||
* @param filePath | ||
* @param projectId | ||
* @param branchName | ||
* @param commitMessage | ||
* @throws GitLabApiException | ||
*/ | ||
public void deleteFile (String filePath, Integer projectId, String branchName, String commitMessage) throws GitLabApiException { | ||
|
||
if (filePath == null) { | ||
throw new RuntimeException("filePath cannot be null"); | ||
} | ||
|
||
Form form = new Form(); | ||
addFormParam(form, "file_path", filePath, true); | ||
addFormParam(form, "branch_name", branchName, true); | ||
addFormParam(form, "commit_message", commitMessage, true); | ||
delete(Response.Status.OK, form.asMap(), "projects", projectId, "repository", "files"); | ||
} | ||
|
||
private Form file2form(RepositoryFile file, String branchName, String commitMessage){ | ||
Form form = new Form(); | ||
addFormParam(form, "file_path", file.getFilePath(), true); | ||
addFormParam(form, "branch_name", branchName, true); | ||
addFormParam(form, "encoding", file.getEncoding(), false); | ||
addFormParam(form, "content", file.getContent(), true); | ||
addFormParam(form, "commit_message", commitMessage, true); | ||
return form; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
src/main/java/com/messners/gitlab/api/models/RepositoryFile.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
|
||
package com.messners.gitlab.api.models; | ||
|
||
|
||
import javax.xml.bind.annotation.XmlAccessType; | ||
import javax.xml.bind.annotation.XmlAccessorType; | ||
import javax.xml.bind.annotation.XmlRootElement; | ||
|
||
@XmlRootElement | ||
@XmlAccessorType(XmlAccessType.FIELD) | ||
public class RepositoryFile { | ||
|
||
private String fileName; //file name only, Ex. lib/class.rb | ||
private String filePath; //full path to file. Ex. lib/class.rb | ||
private Integer size; | ||
private String encoding; | ||
private String content; | ||
private String ref; | ||
private String blobId; | ||
private String commitId; | ||
|
||
public String getFileName() { | ||
return fileName; | ||
} | ||
|
||
public void setFileName(String fileName) { | ||
this.fileName = fileName; | ||
} | ||
|
||
public String getFilePath() { | ||
return filePath; | ||
} | ||
|
||
public void setFilePath(String filePath) { | ||
this.filePath = filePath; | ||
} | ||
|
||
public Integer getSize() { | ||
return size; | ||
} | ||
|
||
public void setSize(Integer size) { | ||
this.size = size; | ||
} | ||
|
||
public String getEncoding() { | ||
return encoding; | ||
} | ||
|
||
public void setEncoding(String encoding) { | ||
this.encoding = encoding; | ||
} | ||
|
||
public String getContent() { | ||
return content; | ||
} | ||
|
||
public void setContent(String content) { | ||
this.content = content; | ||
} | ||
|
||
public String getRef() { | ||
return ref; | ||
} | ||
|
||
public void setRef(String ref) { | ||
this.ref = ref; | ||
} | ||
|
||
public String getBlobId() { | ||
return blobId; | ||
} | ||
|
||
public void setBlobId(String blobId) { | ||
this.blobId = blobId; | ||
} | ||
|
||
public String getCommitId() { | ||
return commitId; | ||
} | ||
|
||
public void setCommitId(String commitId) { | ||
this.commitId = commitId; | ||
} | ||
} |