@@ -117,4 +117,49 @@ defmodule ExTracker.Parser do
117117 def parse_label ( object ) do
118118 struct ( ExTracker.Record.Label , object )
119119 end
120+
121+ @ doc """
122+ Parse stories from the API response json.
123+ """
124+ @ spec parse_stories ( [ Map . t ] | nil ) :: [ ExTracker.Record.Story . t ] | nil
125+ def parse_stories ( nil ) , do: nil
126+ def parse_stories ( object ) do
127+ object |> Enum . map ( & ExTracker.Parser . parse_story / 1 )
128+ % { object | story_transactions: parse_story_transactions ( object . story_transactions ) ,
129+ cicle_time_details: parse_cicle_time_details ( object . cicle_time_details )
130+ }
131+ end
132+
133+ @ doc """
134+ Parse story from the API response json.
135+ """
136+ @ spec parse_story ( Map . t ) :: ExTracker.Record.Story . t
137+ def parse_story ( object ) do
138+ struct ( ExTracker.Record.Story , object )
139+ end
140+
141+ @ doc """
142+ Parse story transactions from the API response json.
143+ """
144+ @ spec parse_story_transactions ( [ Map . t ] | nil ) :: [ ExTracker.Record.StoryTransaction . t ] | nil
145+ def parse_story_transactions ( nil ) , do: nil
146+ def parse_story_transactions ( object ) do
147+ object |> Enum . map ( & ExTracker.Parser . parse_story_transaction / 1 )
148+ end
149+
150+ @ doc """
151+ Parse story transactions from the API response json.
152+ """
153+ @ spec parse_story_transaction ( Map . t ) :: ExTracker.Record.StoryTransaction . t
154+ def parse_story_transaction ( object ) do
155+ struct ( ExTracker.Record.StoryTransaction , object )
156+ end
157+
158+ @ doc """
159+ Parse cicle time details from the API response json.
160+ """
161+ @ spec parse_cicle_time_details ( Map . t ) :: ExTracker.Record.CicleTimeDetails . t
162+ def parse_cicle_time_details ( object ) do
163+ struct ( ExTracker.Record.CicleTimeDetails , object )
164+ end
120165end
0 commit comments