on 0a4df80 help sign in
LICENSEmode 100755 → 100644
since splitsnapshots
unifiedsplit

Only the mode changed.

Procfilemode 100755 → 100644

Only the mode changed.

Setup.hsmode 100755 → 100644

Only the mode changed.

app.jsonmode 100755 → 100644

Only the mode changed.

app/Main.hsmode 100755 → 100644

Only the mode changed.

docs.mdmode 100755 → 100644

Only the mode changed.

docs/Docs.hsmode 100755 → 100644

Only the mode changed.

package.yamlmode 100755 → 100644

Only the mode changed.

readme.mdmode 100755 → 100644+86−74
@@ -6,6 +6,10 @@ _url: [`https://websuck1t.herokuapp.com`](https://websuck1t.herokuapp.com)_
6
6
7## GET /posts/all
7## GET /posts/all
8
8
9+_start with: [`https://websuck1t.herokuapp.com/posts/all`](https://websuck1t.herokuapp.com/posts/all)_
10+
11+Use this _url_ to get the token every time when application begins and previous session was closed
12+
9### Response:
13### Response:
10
14
11- Status code 200
15- Status code 200
@@ -54,12 +58,48 @@ _url: [`https://websuck1t.herokuapp.com`](https://websuck1t.herokuapp.com)_
54 ]
58 ]
55}
59}
56```
60```
61+### Captures:
62+- «token» to further use it in subscription to web socket
57
63
58−## GET /users/:id
64+- «response» to start with the given number of posts in table
59
65
60−Retrieves a user with the given `id`.
66+## WebSocket /posts/subscribe/:token
61
67
68+You access the web socket with the web socket protocol. I. e. `https://` -> `ws://`.
69+
70+Open a web socket from the given `token` for receiving events about new and deleted posts with `ws://websuck1t.herokuapp.com/posts/subscribe/{token}`
71+
72+#### Returns error `498` if the supplied token has expired or is invalid.
73+
74+### Captures:
75+
76+- *token*: The token, received with the previous request.
77+
78+### Response:
79+
80+```javascript
81+{
82+ «token»: 1828,
83+ «response»: {
84+ «deleted»: [
85+ 1819,
86+ 1835,
87+ 1843
88+ ],
89+ «added»: [
90+ 1844,
91+ 1845,
92+ 1846
93+ ]
94+ }
95+}
96+```
97+
98+## GET /posts/:id
99+
100+_url: [`https://websuck1t.herokuapp.com/posts/{id}`](https://websuck1t.herokuapp.com/posts/1)_
101+
62−#### If there is no user with the given `id`, the method returns error `404`.
102+#### If there is no post with the given `id`, the method returns error `404`.
63
103
64### Captures:
104### Captures:
65
105
@@ -78,11 +118,9 @@ Retrieves a user with the given `id`.
78
118
79```javascript
119```javascript
80{
120{
81− "userName": {
121+ «postBody»: «This is the post body»,
82− "secondName": "Leonidovich",
122+ «postAuthor»: 4,
83− "firstName": "Seva"
123+ «postId»: 1
84− },
85− "userId": 1
86}
124}
87```
125```
88
126
@@ -90,11 +128,9 @@ Retrieves a user with the given `id`.
90
128
91```javascript
129```javascript
92{
130{
93− "userName": {
131+ «postBody»: «This is another post body»,
94− "secondName": "Barovich",
132+ «postAuthor»: 4,
95− "firstName": "Foo"
133+ «postId»: 1
96− },
97− "userId": 42
98}
134}
99```
135```
100
136
@@ -102,11 +138,9 @@ Retrieves a user with the given `id`.
102
138
103```javascript
139```javascript
104{
140{
105− "userName": {
141+ «postBody»: «This is the post body»,
106− "secondName": "Fooovich",
142+ «postAuthor»: 7,
107− "firstName": "Bar"
143+ «postId»: 1
108− },
109− "userId": 69
110}
144}
111```
145```
112
146
@@ -114,50 +148,30 @@ Retrieves a user with the given `id`.
114
148
115```javascript
149```javascript
116{
150{
117− "userName": {
151+ «postBody»: «This is another post body»,
118− "secondName": "Quixovich",
152+ «postAuthor»: 7,
119− "firstName": "Qux"
153+ «postId»: 1
120− },
121− "userId": 8
122}
154}
123```
155```
124
156
125−## WebSocket /posts/subscribe/:token
157+- Example (`application/json`):
126−
127−You access the web socket with the web socket protocol. I. e. `https://` -> `ws://`.
128−
129−Open a web socket from the given `token` for receiving events about new and deleted posts.
130−
131−#### Returns error `498` if the supplied token has expired or is invalid.
132−
133−
134−### Captures:
135−
136−- *token*: The token, received with the previous request.
137−
138−### Response:
139
158
140```javascript
159```javascript
141{
160{
142− "token": 1828,
161+ «postBody»: «This is the post body»,
143− "response": {
162+ «postAuthor»: 92,
144− "deleted": [
163+ «postId»: 1
145− 1819,
146− 1835,
147− 1843
148− ],
149− "added": [
150− 1844,
151− 1845,
152− 1846
153− ]
154− }
155}
164}
156```
165```
157
166
158−## GET /posts/:id
159
167
168+## GET /users/:id
169+
170+_url: [`https://websuck1t.herokuapp.com/users/{id}`](https://websuck1t.herokuapp.com/users/1)_
171+
172+Retrieves a user with the given `id`.
173+
160−#### If there is no post with the given `id`, the method returns error `404`.
174+#### If there is no user with the given `id`, the method returns error `404`.
161
175
162### Captures:
176### Captures:
163
177
@@ -176,19 +190,11 @@ Open a web socket from the given `token` for receiving events about new and dele
176
190
177```javascript
191```javascript
178{
192{
179− "postBody": "This is the post body",
193+ "userName": {
180− "postAuthor": 4,
194+ "secondName": "Leonidovich",
181− "postId": 1
195+ "firstName": "Seva"
182−}
196+ },
183−```
197+ "userId": 1
184−
185−- Example (`application/json`):
186−
187−```javascript
188−{
189− "postBody": "This is another post body",
190− "postAuthor": 4,
191− "postId": 1
192}
198}
193```
199```
194
200
@@ -196,9 +202,11 @@ Open a web socket from the given `token` for receiving events about new and dele
196
202
197```javascript
203```javascript
198{
204{
199− "postBody": "This is the post body",
205+ "userName": {
200− "postAuthor": 7,
206+ "secondName": "Barovich",
201− "postId": 1
207+ "firstName": "Foo"
208+ },
209+ "userId": 42
202}
210}
203```
211```
204
212
@@ -206,9 +214,11 @@ Open a web socket from the given `token` for receiving events about new and dele
206
214
207```javascript
215```javascript
208{
216{
209− "postBody": "This is another post body",
217+ "userName": {
210− "postAuthor": 7,
218+ "secondName": "Fooovich",
211− "postId": 1
219+ "firstName": "Bar"
220+ },
221+ "userId": 69
212}
222}
213```
223```
214
224
@@ -216,8 +226,10 @@ Open a web socket from the given `token` for receiving events about new and dele
216
226
217```javascript
227```javascript
218{
228{
219− "postBody": "This is the post body",
229+ "userName": {
220− "postAuthor": 92,
230+ "secondName": "Quixovich",
221− "postId": 1
231+ "firstName": "Qux"
232+ },
233+ "userId": 8
222}
234}
223```
235```
src/Data/CyclicBuffer.hsmode 100755 → 100644

Only the mode changed.

src/Data/Error.hsmode 100755 → 100644

Only the mode changed.

src/Foo/Data.hsmode 100755 → 100644+2−2
@@ -85,7 +85,7 @@ createConfig :: IO Config
85createConfig = do
85createConfig = do
86 mng <- newManager tlsManagerSettings
86 mng <- newManager tlsManagerSettings
87 cfg <- atomically $ Config <$> newTVar 0 <*> newTVar 0 <*> newTVar M.empty <*> newTVar M.empty <*> return mng <*> newTVar M.empty <*> newTVar 0 <*> newTVar (CB.empty 20)
87 cfg <- atomically $ Config <$> newTVar 0 <*> newTVar 0 <*> newTVar M.empty <*> newTVar M.empty <*> return mng <*> newTVar M.empty <*> newTVar 0 <*> newTVar (CB.empty 20)
88− forkIO . forever $ threadDelay 2000000 >> (runHandler . createApp cfg $ startAddingPosts 20 cfg >>= uncurry sendUpdate)
88+ forkIO . forever $ threadDelay 7000000 >> (runHandler . createApp cfg $ startAddingPosts 20 cfg >>= uncurry sendUpdate)
89 return cfg
89 return cfg
90
90
91type Token = Int
91type Token = Int
@@ -165,7 +165,7 @@ startAddingPosts lim cfg = do
165 let us = users cfg
165 let us = users cfg
166 let ps = posts cfg
166 let ps = posts cfg
167
167
168− a <- liftIO $ loremBacon (manager cfg) (Just AllMeat) (Just lim) (Just 0)
168+ a <- liftIO $ loremBacon (manager cfg) (Just AllMeat) (Just lim) (Just False)
169 g <- liftIO newStdGen
169 g <- liftIO newStdGen
170 let rns = randoms g
170 let rns = randoms g
171
171
src/Lib.hsmode 100755 → 100644

Only the mode changed.

src/Network/Bacon.hsmode 100755 → 100644+3−3
@@ -21,15 +21,15 @@ instance ToHttpApiData LoremType where
21 toQueryParam MeatAndFiller = "meat-and-filler"
21 toQueryParam MeatAndFiller = "meat-and-filler"
22 toQueryParam AllMeat = "all-meat"
22 toQueryParam AllMeat = "all-meat"
23
23
24−type API = QueryParam "type" LoremType :> QueryParam "paras" Int :> QueryParam "start-with-lorem" Int :> Get '[JSON] [Text]
24+type API = QueryParam "type" LoremType :> QueryParam "paras" Int :> QueryParam "start-with-lorem" Bool :> Get '[JSON] [Text]
25
25
26clientAPI :: Proxy API
26clientAPI :: Proxy API
27clientAPI = Proxy
27clientAPI = Proxy
28
28
29−loremBacon' :: Maybe LoremType -> Maybe Int -> Maybe Int -> ClientM [Text]
29+loremBacon' :: Maybe LoremType -> Maybe Int -> Maybe Bool -> ClientM [Text]
30loremBacon' = client clientAPI
30loremBacon' = client clientAPI
31
31
32−loremBacon :: Manager -> Maybe LoremType -> Maybe Int -> Maybe Int -> IO (Maybe [Text])
32+loremBacon :: Manager -> Maybe LoremType -> Maybe Int -> Maybe Bool -> IO (Maybe [Text])
33loremBacon mng a b c = do
33loremBacon mng a b c = do
34 let env = mkClientEnv mng (BaseUrl Https "baconipsum.com" 443 "api")
34 let env = mkClientEnv mng (BaseUrl Https "baconipsum.com" 443 "api")
35 res <- runClientM (loremBacon' a b c) env
35 res <- runClientM (loremBacon' a b c) env
stack.yamlmode 100755 → 100644

Only the mode changed.

swagger/Swagger.hsmode 100755 → 100644

Only the mode changed.

test/Spec.hsmode 100755 → 100644

Only the mode changed.