Skip to content

Commit

Permalink
✨ : compute registry details for Github https urls
Browse files Browse the repository at this point in the history
  • Loading branch information
juwit committed May 6, 2022
1 parent 4cedb17 commit 1bfcecc
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 1 deletion.
14 changes: 14 additions & 0 deletions src/main/java/io/gaia_app/modules/ModuleService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.gaia_app.modules;

import io.gaia_app.modules.bo.TerraformModule;

public interface ModuleService {

/**
* Updates the registry details for a module.
* It tries to compute a project id from an URL, and updates the module.
* @param module module to update
*/
void updateRegistryDetails(TerraformModule module);

}
30 changes: 30 additions & 0 deletions src/main/java/io/gaia_app/modules/ModuleServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.gaia_app.modules;

import io.gaia_app.modules.bo.TerraformModule;
import io.gaia_app.registries.RegistryDetails;
import io.gaia_app.registries.RegistryType;
import org.springframework.stereotype.Service;

import java.util.regex.Pattern;

@Service
public class ModuleServiceImpl implements ModuleService {

/**
* matches https://github.com/something(.git), and captures 'something'.
* The first group (.+?) expands as few times as possible.
* The second non-capturing group (?:) matches the end of the line or .git
*/
private static final String GITHUB_HTTPS_REPOSITORY_URL_REGEX = "https://github\\.com/(.+?)(?:$|\\.git$)";

@Override
public void updateRegistryDetails(TerraformModule module) {
var pattern = Pattern.compile(GITHUB_HTTPS_REPOSITORY_URL_REGEX);
var matcher = pattern.matcher(module.getGitRepositoryUrl());

if (matcher.matches()) {
var projectId = matcher.group(1);
module.setRegistryDetails(new RegistryDetails(RegistryType.GITHUB, projectId));
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.gaia_app.modules.controller;

import io.gaia_app.modules.ModuleService;
import io.gaia_app.modules.bo.TerraformModule;
import io.gaia_app.modules.repository.TerraformModuleGitRepository;
import io.gaia_app.modules.repository.TerraformModuleRepository;
Expand Down Expand Up @@ -31,11 +32,14 @@ public class ModuleRestController {

private RegistryService registryService;

private ModuleService moduleService;

@Autowired
public ModuleRestController(TerraformModuleRepository moduleRepository, TerraformModuleGitRepository moduleGitRepository, RegistryService registryService) {
public ModuleRestController(TerraformModuleRepository moduleRepository, TerraformModuleGitRepository moduleGitRepository, RegistryService registryService, ModuleService moduleService) {
this.moduleRepository = moduleRepository;
this.moduleGitRepository = moduleGitRepository;
this.registryService = registryService;
this.moduleService = moduleService;
}

@GetMapping
Expand Down Expand Up @@ -99,6 +103,12 @@ public TerraformModule refreshModule(@PathVariable String id, User user) {
throw new ModuleForbiddenException();
}

// no registry details found, try to update
if(existingModule.getRegistryDetails() == null){
moduleService.updateRegistryDetails(existingModule);
moduleRepository.save(existingModule);
}

var projectId = existingModule.getRegistryDetails().getProjectId();
var registryType = existingModule.getRegistryDetails().getRegistryType();

Expand Down

0 comments on commit 1bfcecc

Please sign in to comment.