22
33import com .offbytwo .jenkins .JenkinsServer ;
44import com .redhat .digkins .model .BuildStatus ;
5- import com .redhat .digkins .services .CreateJobService ;
5+ import com .redhat .digkins .services .ArtifactsService ;
6+ import com .redhat .digkins .services .JobService ;
67import com .redhat .digkins .services .TriggerBuildService ;
78import com .redhat .digkins .util .DiggerClientException ;
89import com .redhat .digkins .util .JenkinsAuth ;
910import org .slf4j .Logger ;
1011import org .slf4j .LoggerFactory ;
1112
13+ import java .io .File ;
1214import java .io .IOException ;
15+ import java .io .InputStream ;
1316import java .net .URI ;
1417import java .net .URISyntaxException ;
1518
@@ -24,8 +27,9 @@ public class DiggerClient {
2427
2528 private JenkinsServer jenkinsServer ;
2629
27- private CreateJobService createJobService ;
30+ private JobService jobService ;
2831 private TriggerBuildService triggerBuildService ;
32+ private ArtifactsService artifactsService ;
2933
3034 private DiggerClient () {
3135 }
@@ -42,29 +46,33 @@ private DiggerClient() {
4246 * @throws DiggerClientException if something goes wrong
4347 */
4448 public static DiggerClient createDefaultWithAuth (String url , String user , String password ) throws DiggerClientException {
49+ TriggerBuildService triggerBuildService = new TriggerBuildService (TriggerBuildService .DEFAULT_FIRST_CHECK_DELAY , TriggerBuildService .DEFAULT_POLL_PERIOD );
50+ JobService jobService = new JobService ();
51+ ArtifactsService artifactsService = new ArtifactsService ();
4552 return DiggerClient .builder ()
46- .createJobService (new CreateJobService ())
47- .triggerBuildService (new TriggerBuildService (TriggerBuildService .DEFAULT_FIRST_CHECK_DELAY , TriggerBuildService .DEFAULT_POLL_PERIOD ))
53+ .createJobService (jobService )
54+ .triggerBuildService (triggerBuildService )
55+ .artifactsService (artifactsService )
4856 .withAuth (url , user , password )
4957 .build ();
5058 }
5159
5260 public static DiggerClientBuilder builder () {
5361 return new DiggerClientBuilder ();
5462 }
55-
5663 public static class DiggerClientBuilder {
5764 private JenkinsAuth auth ;
58- private CreateJobService createJobService ;
65+ private JobService jobService ;
5966 private TriggerBuildService triggerBuildService ;
67+ private ArtifactsService artifactsService ;
6068
6169 public DiggerClientBuilder withAuth (String url , String user , String password ) {
6270 this .auth = new JenkinsAuth (url , user , password );
6371 return this ;
6472 }
6573
66- public DiggerClientBuilder createJobService (CreateJobService createJobService ) {
67- this .createJobService = createJobService ;
74+ public DiggerClientBuilder createJobService (JobService jobService ) {
75+ this .jobService = jobService ;
6876 return this ;
6977 }
7078
@@ -73,12 +81,18 @@ public DiggerClientBuilder triggerBuildService(TriggerBuildService triggerBuildS
7381 return this ;
7482 }
7583
84+ public DiggerClientBuilder artifactsService (ArtifactsService artifactsService ) {
85+ this .artifactsService = artifactsService ;
86+ return this ;
87+ }
88+
7689 public DiggerClient build () throws DiggerClientException {
7790 final DiggerClient client = new DiggerClient ();
7891 try {
7992 client .jenkinsServer = new JenkinsServer (new URI (auth .getUrl ()), auth .getUser (), auth .getPassword ());
80- client .createJobService = this .createJobService ;
93+ client .jobService = this .jobService ;
8194 client .triggerBuildService = this .triggerBuildService ;
95+ client .artifactsService = this .artifactsService ;
8296 return client ;
8397 } catch (URISyntaxException e ) {
8498 throw new DiggerClientException ("Invalid jenkins url format." );
@@ -97,7 +111,7 @@ public DiggerClient build() throws DiggerClientException {
97111 */
98112 public void createJob (String name , String gitRepo , String gitBranch ) throws DiggerClientException {
99113 try {
100- createJobService .create (this .jenkinsServer , name , gitRepo , gitBranch );
114+ jobService .create (this .jenkinsServer , name , gitRepo , gitBranch );
101115 } catch (Throwable e ) {
102116 throw new DiggerClientException (e );
103117 }
@@ -160,9 +174,25 @@ public BuildStatus build(String jobName) throws DiggerClientException {
160174 * @param buildNumber job build number
161175 * @param artifactName - name of the artifact to fetch - can be regexp
162176 * @return InputStream with file contents
177+ * @throws DiggerClientException - when problem with fetching artifacts from jenkins
178+ */
179+ public InputStream fetchArtifact (String jobName , int buildNumber , String artifactName ) throws DiggerClientException {
180+ return artifactsService .streamArtifact (jenkinsServer ,jobName , buildNumber , artifactName );
181+ }
182+
183+ /**
184+ * Save artifact for specified location for specific job, build number and artifact name.
185+ * If name would be an regular expression method would return stream for the first match.
186+ *
187+ * @param jobName name of the job
188+ * @param buildNumber job build number
189+ * @param artifactName name of the artifact to fetch - can be regexp for example *.apk
190+ * @param outputFile file (location) used to save artifact
191+ *
192+ * @throws DiggerClientException when problem with fetching artifacts from jenkins
193+ * @throws IOException when one of the files cannot be saved
163194 */
164- public InputStream fetchArtifact (String jobName , long buildNumber , String artifactName ) {
165- ArtifactsService artifactsService = new ArtifactsService (jenkins );
166- return artifactsService .fetchArtifact (jobName ,buildNumber ,artifactName );
195+ public void saveArtifact (String jobName , int buildNumber , String artifactName , File outputFile ) throws DiggerClientException , IOException {
196+ artifactsService .saveArtifact (jenkinsServer ,jobName , buildNumber , artifactName ,outputFile );
167197 }
168198}
0 commit comments