Created
June 15, 2012 22:02
-
-
Save rodrigopinto/2938918 to your computer and use it in GitHub Desktop.
design code suggestions?
This file contains hidden or 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
| class ToolParserWorker | |
| include Sidekiq::Worker | |
| def perform(scan) | |
| ## On a near futute NessusParser will die an become a ParserFactory based on scan tool type | |
| report = NessusParser.execute(self.file.current_path) # execute returns a Report object | |
| scan.update_parsed_report(report.to_json) # scan is mongo document | |
| end | |
| end |
Author
Não tinha entendido que haveriam vários parsers, neste caso fico com a solução do @pellegrino, reescrita pelo @caike
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
O problema que existe nessa solução é que de qualquer forma o Model ficará acoplando com o Parser, que é justamente o que estou querendo evitar. O NessusParser é só um, de um conjunto de parsers de xml, que eu não queria que tivessem dependências com a regra da aplicação, ou seja, só faz parsear o xml e retorna um objeto report. O que motivou a criar os parsers próprios e não utilizar os existentes, foi o os módules de parser terem dependência com ORM.
Dado esse cenário, utilizando a sugestão do @pellegrino, o que pensei:
Dessa forma, fica obscuro para que está chamando UpdateScanParser que ele chama uma fábrica de Parser internamente, o que me incomoda é que método UpdateScanParser#parse, parece desrespeitar o SRP, mas ao mesmo tempo não acho que deveria criar mais uma classe pra tratar a o update externamente.
@tapajos coloquei o que o update_parsed_report faz ;)