From caab778df9f438f19b67acb36eeb7ffd7159f5b7 Mon Sep 17 00:00:00 2001 From: Johannes Konings Date: Fri, 8 Jan 2021 17:06:22 +0100 Subject: [PATCH] scraper architecture extended --- README.md | 4 ++-- architecture/architecture_class.plantuml | 18 ++++++++++++++++-- .../architecture_class/converter.png | Bin 8008 -> 0 bytes .../architecture_class/provider.png | Bin 18265 -> 18262 bytes .../architecture_class/scraper.png | Bin 0 -> 16474 bytes 5 files changed, 18 insertions(+), 4 deletions(-) delete mode 100644 out/architecture/architecture_class/converter.png create mode 100644 out/architecture/architecture_class/scraper.png diff --git a/README.md b/README.md index ca140c1..835f051 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ ![class diagramm provider](out/architecture/architecture_class/provider.png) -### converter +### scraper -![class diagramm converter](out/architecture/architecture_class/converter.png) +![class diagramm scraper](out/architecture/architecture_class/scraper.png) # documentation diff --git a/architecture/architecture_class.plantuml b/architecture/architecture_class.plantuml index c65801e..c729f65 100644 --- a/architecture/architecture_class.plantuml +++ b/architecture/architecture_class.plantuml @@ -20,10 +20,24 @@ metrics_collector <|-- zcl_amp_metrics_ @enduml -@startuml converter +@startuml scraper + + +interface if_http_extension{ + handle_request +} +interface zif_amp_converter{ + convert +} + +class zcl_amp_scraper <> class zcl_amp_conv_http_json <> -class zcl_amp_con_prom_keyvalue <> +class zcl_amp_conv_prom_keyvalue <> class zcl_amp_metrics_ <> +zcl_amp_scraper --> zcl_amp_conv_http_json +zcl_amp_scraper --> zcl_amp_conv_prom_keyvalue +zcl_amp_scraper --> zcl_amp_metrics_ + @enduml \ No newline at end of file diff --git a/out/architecture/architecture_class/converter.png b/out/architecture/architecture_class/converter.png deleted file mode 100644 index d01f95e3f31f3dad2f18f56e6da5c6c9306ab5ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8008 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 AO#lD@ diff --git a/out/architecture/architecture_class/provider.png b/out/architecture/architecture_class/provider.png index 8260a3e7834033d08c2d1d2ead4872c10caedcce..606ba7f00b022b80bebe1e97115a9f0f3d0e37eb 100644 GIT binary patch delta 359 zcmV-t0hs>Tjsez=0gzdLPH9wFbZ~58Zgh2RYybfO004NLol)OQ0znXdU%3Ba9+fyb zudp~oB(=blB(>LL+Z&IC+udV#?m(;my)~4IOOjsa`!Vx_5mnvXVlV8I9f|JD0*g4V>ImB)D111ciA>VTwL+HPG?(bclP5)NU z*_!<|L)4l7dBE7B;F{L+8PsTF)m z`^5~LsjM$9^UO6t<>Mp!tGp_TB=iVDN8yW9ww;o%v4^%+<6H?hgmb0?~ FrbXo0u+{(o delta 362 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 literal 0 HcmV?d00001