Ma Suhyeon

Implement post call, post message, post app analysis

...@@ -63,10 +63,21 @@ func NewApp(config Config) *App { ...@@ -63,10 +63,21 @@ func NewApp(config Config) *App {
63 app.echo.POST("/extractions", app.PostExtractions, auth) 63 app.echo.POST("/extractions", app.PostExtractions, auth)
64 64
65 extraction := app.echo.Group("/extractions/:no") 65 extraction := app.echo.Group("/extractions/:no")
66 +
66 extraction.GET("/calls", app.GetCalls) 67 extraction.GET("/calls", app.GetCalls)
68 + extraction.POST("/calls", app.PostCall)
69 + extraction.DELETE("/calls/:id", app.DeleteCall)
70 +
67 extraction.GET("/messages", app.GetMessages) 71 extraction.GET("/messages", app.GetMessages)
72 + extraction.POST("/messages", app.PostMessage)
73 + extraction.DELETE("/messages/:id", app.DeleteMessage)
74 +
68 extraction.GET("/calls/analyses", app.GetCallsAnalyses) 75 extraction.GET("/calls/analyses", app.GetCallsAnalyses)
76 +
69 extraction.GET("/apps/analyses", app.GetAppsAnalyses) 77 extraction.GET("/apps/analyses", app.GetAppsAnalyses)
78 + extraction.POST("/apps/analyses", app.PostAppAnalysis)
79 + extraction.DELETE("/apps/analyses/:package", app.DeleteAppAnalysis)
80 +
70 extraction.GET("/messages/analyses", app.GetMessagesAnalyses) 81 extraction.GET("/messages/analyses", app.GetMessagesAnalyses)
71 extraction.GET("/processes", app.GetProcesses) 82 extraction.GET("/processes", app.GetProcesses)
72 extraction.GET("/alarms", app.GetAlarms) 83 extraction.GET("/alarms", app.GetAlarms)
......
...@@ -33,6 +33,37 @@ func (app *App) GetCalls(c echo.Context) error { ...@@ -33,6 +33,37 @@ func (app *App) GetCalls(c echo.Context) error {
33 return c.JSON(http.StatusOK, calls) 33 return c.JSON(http.StatusOK, calls)
34 } 34 }
35 35
36 +func (app *App) PostCall(c echo.Context) error {
37 + call := Call{}
38 + if err := c.Bind(&call); err != nil {
39 + return err
40 + }
41 +
42 + query := "INSERT INTO calls VALUES (?, ?, ?, ?, ?, ?, ?)"
43 + _, err := app.db.Exec(query, c.Param("no"), call.ID, call.Type, call.Name, call.Number, call.Duration, call.Date)
44 + if err != nil {
45 + return nil
46 + }
47 +
48 + return c.NoContent(http.StatusNoContent)
49 +}
50 +
51 +func (app *App) DeleteCall(c echo.Context) error {
52 + query := "DELETE FROM calls WHERE `extraction_no`=? AND `id`=?"
53 + res, err := app.db.Exec(query, c.Param("no"), c.Param("id"))
54 + if err != nil {
55 + return err
56 + }
57 +
58 + if rows, err := res.RowsAffected(); err != nil {
59 + return err
60 + } else if rows == 0 {
61 + return echo.NewHTTPError(http.StatusNotFound, "Can not find the call")
62 + } else {
63 + return c.NoContent(http.StatusNoContent)
64 + }
65 +}
66 +
36 type CallStats struct { 67 type CallStats struct {
37 Number string `json:"number" db:"number"` 68 Number string `json:"number" db:"number"`
38 Name *string `json:"name" db:"name"` 69 Name *string `json:"name" db:"name"`
...@@ -73,6 +104,41 @@ func (app *App) GetAppsAnalyses(c echo.Context) error { ...@@ -73,6 +104,41 @@ func (app *App) GetAppsAnalyses(c echo.Context) error {
73 return c.JSON(http.StatusOK, apps) 104 return c.JSON(http.StatusOK, apps)
74 } 105 }
75 106
107 +func (app *App) PostAppAnalysis(c echo.Context) error {
108 + info := AppInfo{}
109 + if err := c.Bind(&info); err != nil {
110 + return err
111 + }
112 +
113 + query := "INSERT INTO apps VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
114 + _, err := app.db.Exec(
115 + query,
116 + c.Param("no"), info.PackageName, info.Name, info.Version,
117 + info.WifiUsage, info.CellularUsage, info.LastUsed, info.ForegroundTime,
118 + )
119 + if err != nil {
120 + return err
121 + }
122 +
123 + return c.NoContent(http.StatusNoContent)
124 +}
125 +
126 +func (app *App) DeleteAppAnalysis(c echo.Context) error {
127 + query := "DELETE FROM apps WHERE `extraction_no`=? AND `package_name`=?"
128 + res, err := app.db.Exec(query, c.Param("no"), c.Param("package"))
129 + if err != nil {
130 + return err
131 + }
132 +
133 + if rows, err := res.RowsAffected(); err != nil {
134 + return err
135 + } else if rows == 0 {
136 + return echo.NewHTTPError(http.StatusNotFound, "Can not find the app")
137 + } else {
138 + return c.NoContent(http.StatusNoContent)
139 + }
140 +}
141 +
76 type Message struct { 142 type Message struct {
77 ID int `json:"id" db:"id"` 143 ID int `json:"id" db:"id"`
78 Type int `json:"type" db:"type"` 144 Type int `json:"type" db:"type"`
...@@ -114,6 +180,38 @@ func (app *App) GetMessages(c echo.Context) error { ...@@ -114,6 +180,38 @@ func (app *App) GetMessages(c echo.Context) error {
114 return c.JSON(http.StatusOK, messages) 180 return c.JSON(http.StatusOK, messages)
115 } 181 }
116 182
183 +func (app *App) PostMessage(c echo.Context) error {
184 + message := Message{}
185 + if err := c.Bind(&message); err != nil {
186 + return err
187 + }
188 +
189 + query := "INSERT INTO messages VALUES (?, ?, ?, ?, ?, ?)"
190 + _, err := app.db.Exec(query, c.Param("no"), message.ID, message.Type, message.Address, message.Body, message.Date)
191 +
192 + if err != nil {
193 + return err
194 + }
195 +
196 + return c.NoContent(http.StatusNoContent)
197 +}
198 +
199 +func (app *App) DeleteMessage(c echo.Context) error {
200 + query := "DELETE FROM messages WHERE `extraction_no`=? AND `id`=?"
201 + res, err := app.db.Exec(query, c.Param("no"), c.Param("id"))
202 + if err != nil {
203 + return err
204 + }
205 +
206 + if rows, err := res.RowsAffected(); err != nil {
207 + return err
208 + } else if rows == 0 {
209 + return echo.NewHTTPError(http.StatusNotFound, "Can not find the message")
210 + } else {
211 + return c.NoContent(http.StatusNoContent)
212 + }
213 +}
214 +
117 type MessageStats struct { 215 type MessageStats struct {
118 Address string `json:"address" db:"address"` 216 Address string `json:"address" db:"address"`
119 Receive int `json:"receive" db:"receive"` 217 Receive int `json:"receive" db:"receive"`
......