Skip to content

Commit 140b6f6

Browse files
committed
Documentation of the ICryptoStatsSource interface.
1 parent 650b947 commit 140b6f6

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

doc/doc.tex

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,13 @@
146146
\end{figure}
147147

148148

149-
\section{Datový zdroj s aktuálním kurzem kryptoměn}
149+
\section{Analýza}
150+
151+
\subsection{Datový zdroj s aktuálním kurzem kryptoměn}
150152

151153
Pro vývoj aplikace určené ke sledování obchodního portfólia s kryptoměnami je třeba nalézt vhodný zdroj dat, který bude využíván k získávání aktuálního kurzu sledovaných kryptoměn. Mezi hlavní požadavky na takový datový zdroj je jeho dostupnostie jednoduchost rozhraní a množina podporovaných kurzů. Ideálním zdrojem je tedy takový zdroj, který poskytuje aktuální i historický kurz na všech burzách prostřednictvím REST API bez nutnosti registrace.
152154

153-
\subsection{Webový zdroj CoinGecko}
155+
\subsubsection{Webový zdroj CoinGecko}
154156
Aktuální i historický kurz drtivé většiny všech existujících kryptoměn bez nutnosti registrace nabízí pomocí REST rozhraní webová služba CoinGecko\cite{coingecko2021}. Jediným omezením tohoto API je počet provedených požadavků za minutu, který je stanoven na 100, což je pro aplikaci určenou ke sledování kryptoměnového portfólia více než dostačující.
155157

156158
\begin{lstlisting}
@@ -169,7 +171,6 @@
169171

170172
V úvahu připadá ukládat portfólia a transakce ve formátu JSON či XML přímo na souborový systém, ale z důvodu relace M:N mezi portfólii a kryptoměnami nejsou tyto typy databází příliš vhodné. Jako lepší volba tedy jeví nějaká relační databáze, např. SQLite, která je často používána při tvorbě desktopových aplikací a ukládá se ve formě jednoho souboru na souborový systém zařízení.
171173

172-
173174
\section{Popis architektury vytvořené aplikace}
174175

175176
\subsection{Databázová vrstva}
@@ -222,6 +223,20 @@
222223
\subsection{Služba \texttt{IMarketOrderService}}
223224
Rozhraní pro správu transakcí v perzistentním úložišti poskytuje právě tato služba, kdy poskytuje i metodu pro vyhledání všech transakcí patřících do vybrané položky portfólia.
224225

226+
\subsection{Napojení na online datový zdroj kurzů kryptoměn}
227+
Aby aplikace mohla zobrazovat nejaktuálnější výnosnost investicí, tak potřebuje být schopna získávat data z datového zdroje kurzů kryptoměn.
228+
Pro tyto účely slouží obecné rozhraní \texttt{ICryptoStatsSource}, které definuje následující metody:
229+
230+
\begin{itemize}
231+
\item \texttt{GetMarketEntries(string currency, params string[] ids)} -- stáhne nejaktuálnější informace o vybraných kryptoměnách, kdy údaje o cenách jsou ve měně vybrané pomocí parametru \texttt{currency}.
232+
Mezi stahované informace patří například zkratka kryptoměny, její název, aktuální hodnota či tržní kapitalizace.
233+
\item \texttt{GetAvailableCryptocurrencies()} -- stáhne seznam kryptoměn, na které se může volající datového zdroje tázat.
234+
V seznamu dostupných kryptoměn je u každé informace o jejím názvu, zkratce a identifikátoru.
235+
\end{itemize}
236+
237+
Ve vytvořené aplikaci se nachází implementace \texttt{CoingeckoSource}, která k získávání informací o kryptoměnách používá REST API rozhraní služby Coingecko.
238+
K vytváření HTTP požadavků, pomocí kterých komunikuje se zmíněnou službou, tato implementace používá knihovnu \textbf{TinyRestClient}\footnote{\url{https://github.com/jgiacomini/Tiny.RestClient}}.
239+
225240
\subsection{Služba pro výpočet výkonu jednotlivých entit}
226241
Aby bylo možné vypočítat výkon (zisk či ztráta) jednotlivých entit (portfólio, položka portfólia či uskutečněný obchod), tak bylo vytvořeno rozhraní \texttt{ISummaryService} a jeho implementace \texttt{SummaryServiceImpl}.
227242

0 commit comments

Comments
 (0)