clarify 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +5 -0
- data/Dockerfile +2 -4
- data/README.md +248 -55
- data/features/insights.feature +14 -0
- data/features/list-bundles.feature +7 -7
- data/features/search-bundles.feature +4 -4
- data/features/step_definitions/list_steps.rb +49 -1
- data/features/support/env.rb +6 -0
- data/features/support/lib/names.rb +4 -0
- data/features/tracks.feature +14 -0
- data/lib/clarify.rb +5 -2
- data/lib/clarify/response_factory.rb +11 -6
- data/lib/clarify/responses/insights.rb +22 -0
- data/lib/clarify/responses/spoken_keywords_insight.rb +9 -0
- data/lib/clarify/responses/spoken_words_insight.rb +9 -0
- data/lib/clarify/version.rb +1 -1
- data/spec/clarify/responses/insights_spec.rb +27 -0
- data/src_readme/README_no_output.md +34 -1
- data/src_readme/examples/bundle_fetch.rb +1 -1
- data/src_readme/examples/bundle_insight_list.rb +22 -0
- data/src_readme/readme.md.erb +4 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c66097ba2e37737f19845cf320ce3490e0c2d996
|
4
|
+
data.tar.gz: 22ad56e43e04b86ca099d17cbbe772af8ea941c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bae0b919bc4ca1a0e37b58c9d5228e3acdb4ca3dbeb828d7290ffe70bbb3a6d597b66080bcf91e4a7d1be867c03b4ef62b58e8c623d5140f7e99ac1cfa92ea89
|
7
|
+
data.tar.gz: 29213c93cb0e203d53b2237b658d8390db5f36102b17859ea7254fd023b068c236ea93b38e1cee2ac99c9f8ed9c54c77c3c104f718e8ad424b988a60e67cb7a0
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Dockerfile
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
FROM ruby:latest
|
2
2
|
|
3
|
-
RUN mkdir -p /data
|
3
|
+
RUN mkdir -p /data
|
4
4
|
WORKDIR /data
|
5
|
-
ADD
|
6
|
-
ADD lib/clarify/version.rb /data/lib/clarify/version.rb
|
5
|
+
ADD . /data/
|
7
6
|
RUN bundle install
|
8
7
|
|
9
|
-
ADD features /data/features
|
10
8
|
|
11
9
|
ENTRYPOINT [ "rake" ]
|
data/README.md
CHANGED
@@ -49,10 +49,12 @@ end
|
|
49
49
|
|
50
50
|
Example output of bundles_search.rb:
|
51
51
|
```
|
52
|
-
|
53
|
-
matched audio content at
|
54
|
-
|
55
|
-
matched audio content at
|
52
|
+
Obama-2004-DNC-Keynote - /v1/bundles/51ee9932989c47d3adf734c4e467c83f
|
53
|
+
matched audio content at 951.62 to 951.82
|
54
|
+
How-Schools-Kill-Creativity - /v1/bundles/6864abafeee8458bb9902628ee270cae
|
55
|
+
matched audio content at 485.92 to 486.11
|
56
|
+
The-Surprising-Science-of-Happiness - /v1/bundles/d6dcddf1066b4dd4bed78334e553e233
|
57
|
+
matched audio content at 80.94 to 81.57
|
56
58
|
```
|
57
59
|
|
58
60
|
### Get a list of bundles
|
@@ -69,14 +71,16 @@ end
|
|
69
71
|
|
70
72
|
Example output of list_bundles.rb:
|
71
73
|
```
|
72
|
-
- /v1/bundles/
|
73
|
-
- /v1/bundles/
|
74
|
-
- /v1/bundles/
|
75
|
-
- /v1/bundles/
|
76
|
-
- /v1/bundles/
|
77
|
-
- /v1/bundles/
|
78
|
-
- /v1/bundles/
|
79
|
-
- /v1/bundles/
|
74
|
+
- /v1/bundles/d6dcddf1066b4dd4bed78334e553e233
|
75
|
+
- /v1/bundles/f87a4e7928a84cf192091a337dbbdd80
|
76
|
+
- /v1/bundles/cbc77abbc54e4cc686d65156fe1d29a3
|
77
|
+
- /v1/bundles/6864abafeee8458bb9902628ee270cae
|
78
|
+
- /v1/bundles/75afdd5a5af74a559b8381c22ead1047
|
79
|
+
- /v1/bundles/ae5fbaa351e44897a211c0c9f097ffba
|
80
|
+
- /v1/bundles/0e81c313755248e3860c6f569498eb84
|
81
|
+
- /v1/bundles/f145f401d14442c1838d04764c5a5bf1
|
82
|
+
- /v1/bundles/41266fd35e6f4cf78c6040dd24b9c34d
|
83
|
+
- /v1/bundles/68bca9f916e846c79ccd2b8079afc2f4
|
80
84
|
```
|
81
85
|
|
82
86
|
### Fetch a particular bundle
|
@@ -88,7 +92,7 @@ require 'pp'
|
|
88
92
|
|
89
93
|
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
90
94
|
|
91
|
-
bundle_url = '/v1/bundles/
|
95
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
92
96
|
bundle = clarify.get(bundle_url)
|
93
97
|
puts "Bundle Name: #{bundle.name}"
|
94
98
|
pp bundle
|
@@ -96,27 +100,156 @@ pp bundle
|
|
96
100
|
|
97
101
|
Example output of bundle_fetch.rb:
|
98
102
|
```
|
99
|
-
Bundle Name: The
|
100
|
-
#<Clarify::Responses::Bundle:
|
103
|
+
Bundle Name: The-Surprising-Science-of-Happiness
|
104
|
+
#<Clarify::Responses::Bundle:0x007f65808368b8
|
101
105
|
@body=
|
102
|
-
{"id"=>"
|
106
|
+
{"id"=>"d6dcddf1066b4dd4bed78334e553e233",
|
103
107
|
"version"=>1,
|
104
|
-
"
|
105
|
-
"
|
106
|
-
"
|
107
|
-
"updated"=>"2014-04-08T18:37:35.420Z",
|
108
|
+
"name"=>"The-Surprising-Science-of-Happiness",
|
109
|
+
"created"=>"2015-04-21T18:13:47.377Z",
|
110
|
+
"updated"=>"2015-04-21T18:13:47.377Z",
|
108
111
|
"_class"=>"Bundle",
|
109
112
|
"_links"=>
|
110
|
-
{"self"=>{"href"=>"/v1/bundles/
|
113
|
+
{"self"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"},
|
111
114
|
"curies"=>
|
112
115
|
[{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
|
113
116
|
"clarify:metadata"=>
|
114
|
-
{"href"=>"/v1/bundles/
|
117
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/metadata"},
|
115
118
|
"clarify:tracks"=>
|
116
|
-
{"href"=>"/v1/bundles/
|
119
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/tracks"},
|
120
|
+
"clarify:insights"=>
|
121
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"}}},
|
117
122
|
@response=#<Net::HTTPOK 200 OK readbody=true>>
|
118
123
|
```
|
119
124
|
|
125
|
+
### Fetch a particular bundle's insight list
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
# bundle_insight_list.rb
|
129
|
+
require 'clarify'
|
130
|
+
require 'pp'
|
131
|
+
|
132
|
+
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
133
|
+
|
134
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
135
|
+
bundle = clarify.get(bundle_url)
|
136
|
+
|
137
|
+
bundle_insights_url = bundle.relation('clarify:insights')
|
138
|
+
|
139
|
+
puts "Insights for Bundle Name: #{bundle.name} (#{bundle_insights_url})"
|
140
|
+
insights = clarify.get(bundle_insights_url)
|
141
|
+
pp insights
|
142
|
+
puts '-----------'
|
143
|
+
insights.each do |insight, insight_url|
|
144
|
+
puts "Insight #{insight} (#{insight_url})"
|
145
|
+
insight = clarify.get(insight_url)
|
146
|
+
pp insight
|
147
|
+
puts ''
|
148
|
+
puts ''
|
149
|
+
puts ''
|
150
|
+
end
|
151
|
+
```
|
152
|
+
|
153
|
+
Example output of bundle_insight_list.rb:
|
154
|
+
```
|
155
|
+
Insights for Bundle Name: The-Surprising-Science-of-Happiness (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights)
|
156
|
+
#<Clarify::Responses::Insights:0x007f710e256760
|
157
|
+
@body=
|
158
|
+
{"bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
|
159
|
+
"created"=>"2015-04-21T18:13:47.388Z",
|
160
|
+
"updated"=>"2015-05-16T20:39:27.740Z",
|
161
|
+
"_class"=>"Insights",
|
162
|
+
"_links"=>
|
163
|
+
{"self"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
|
164
|
+
"parent"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"},
|
165
|
+
"insight:spoken_words"=>
|
166
|
+
{"href"=>
|
167
|
+
"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89"},
|
168
|
+
"insight:spoken_keywords"=>
|
169
|
+
{"href"=>
|
170
|
+
"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec"},
|
171
|
+
"curies"=>
|
172
|
+
[{"href"=>"/docs/insights/{rel}",
|
173
|
+
"name"=>"insight",
|
174
|
+
"templated"=>true}]}},
|
175
|
+
@response=#<Net::HTTPOK 200 OK readbody=true>>
|
176
|
+
-----------
|
177
|
+
Insight insight:spoken_words (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89)
|
178
|
+
#<Clarify::Responses::SpokenWordsInsight:0x007f710e226b78
|
179
|
+
@body=
|
180
|
+
{"id"=>"c1ea412ef6aa434dbe05df12f97b9f89",
|
181
|
+
"bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
|
182
|
+
"name"=>"spoken_words",
|
183
|
+
"status"=>"ready",
|
184
|
+
"created"=>"2015-04-21T18:13:50.087Z",
|
185
|
+
"updated"=>"2015-04-21T18:13:50.090Z",
|
186
|
+
"track_data"=>
|
187
|
+
[{"spoken_duration"=>1189.48,
|
188
|
+
"word_count"=>3709,
|
189
|
+
"spoken_duration_percent"=>0.93}],
|
190
|
+
"_class"=>"SpokenWordsInsight",
|
191
|
+
"_links"=>
|
192
|
+
{"self"=>
|
193
|
+
{"href"=>
|
194
|
+
"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89"},
|
195
|
+
"curies"=>
|
196
|
+
[{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
|
197
|
+
"parent"=>
|
198
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
|
199
|
+
"clarify:bundle"=>
|
200
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"}}},
|
201
|
+
@response=#<Net::HTTPOK 200 OK readbody=true>>
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
Insight insight:spoken_keywords (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec)
|
206
|
+
#<Clarify::Responses::SpokenKeywordsInsight:0x007f710e197ea0
|
207
|
+
@body=
|
208
|
+
{"id"=>"b83668e8089148b7a5c96b1b045637ec",
|
209
|
+
"bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
|
210
|
+
"name"=>"spoken_keywords",
|
211
|
+
"status"=>"ready",
|
212
|
+
"created"=>"2015-05-16T20:39:27.739Z",
|
213
|
+
"updated"=>"2015-05-16T20:39:27.741Z",
|
214
|
+
"track_data"=>
|
215
|
+
[{"keywords"=>
|
216
|
+
[{"term"=>"one", "count"=>43, "weight"=>1},
|
217
|
+
{"term"=>"happiness", "count"=>27, "weight"=>0.628},
|
218
|
+
{"term"=>"like", "count"=>23, "weight"=>0.535},
|
219
|
+
{"term"=>"can", "count"=>20, "weight"=>0.465},
|
220
|
+
{"term"=>"know", "count"=>18, "weight"=>0.419},
|
221
|
+
{"term"=>"people", "count"=>17, "weight"=>0.395},
|
222
|
+
{"term"=>"really", "count"=>16, "weight"=>0.372},
|
223
|
+
{"term"=>"right", "count"=>15, "weight"=>0.349},
|
224
|
+
{"term"=>"2", "count"=>14, "weight"=>0.326},
|
225
|
+
{"term"=>"make", "count"=>13, "weight"=>0.302},
|
226
|
+
{"term"=>"change", "count"=>13, "weight"=>0.302},
|
227
|
+
{"term"=>"us", "count"=>12, "weight"=>0.279},
|
228
|
+
{"term"=>"say", "count"=>11, "weight"=>0.256},
|
229
|
+
{"term"=>"just", "count"=>11, "weight"=>0.256},
|
230
|
+
{"term"=>"better", "count"=>10, "weight"=>0.233},
|
231
|
+
{"term"=>"much", "count"=>10, "weight"=>0.233},
|
232
|
+
{"term"=>"now", "count"=>10, "weight"=>0.233},
|
233
|
+
{"term"=>"course", "count"=>10, "weight"=>0.233},
|
234
|
+
{"term"=>"3", "count"=>10, "weight"=>0.233},
|
235
|
+
{"term"=>"get", "count"=>9, "weight"=>0.209}]}],
|
236
|
+
"_class"=>"SpokenKeywordsInsight",
|
237
|
+
"_links"=>
|
238
|
+
{"self"=>
|
239
|
+
{"href"=>
|
240
|
+
"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec"},
|
241
|
+
"curies"=>
|
242
|
+
[{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
|
243
|
+
"parent"=>
|
244
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
|
245
|
+
"clarify:bundle"=>
|
246
|
+
{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"}}},
|
247
|
+
@response=#<Net::HTTPOK 200 OK readbody=true>>
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
```
|
252
|
+
|
120
253
|
### Get a list of bundles and their names
|
121
254
|
|
122
255
|
```ruby
|
@@ -136,14 +269,16 @@ end
|
|
136
269
|
|
137
270
|
Example output of bundles_list_fetch.rb:
|
138
271
|
```
|
139
|
-
- Bundle Name: The
|
140
|
-
- Bundle Name:
|
141
|
-
- Bundle Name:
|
142
|
-
- Bundle Name:
|
143
|
-
- Bundle Name:
|
144
|
-
- Bundle Name:
|
145
|
-
- Bundle Name:
|
146
|
-
- Bundle Name:
|
272
|
+
- Bundle Name: The-Surprising-Science-of-Happiness
|
273
|
+
- Bundle Name: GWB-2004-Victory-Speech
|
274
|
+
- Bundle Name: harvard-sentences-2
|
275
|
+
- Bundle Name: How-Schools-Kill-Creativity
|
276
|
+
- Bundle Name: MLK-I-Have-a-Dream
|
277
|
+
- Bundle Name: dorothyandthewizardinoz_01
|
278
|
+
- Bundle Name: How-Great-Leaders-Inspire-Action
|
279
|
+
- Bundle Name: The-Happy-Secret-to-Better-Work
|
280
|
+
- Bundle Name: FDR-Statue-of-Liberty
|
281
|
+
- Bundle Name: Reagan-Challenger-Disaster
|
147
282
|
```
|
148
283
|
|
149
284
|
### Get a list of tracks and the URL of their original media
|
@@ -165,14 +300,16 @@ end
|
|
165
300
|
|
166
301
|
Example output of bundles_show_tracks.rb:
|
167
302
|
```
|
168
|
-
- http://
|
169
|
-
- http://
|
170
|
-
- http://
|
171
|
-
- http://
|
172
|
-
- http://
|
173
|
-
- http://
|
174
|
-
- http://
|
175
|
-
- http://
|
303
|
+
- http://media.clarify.io/video/presentations/DanGilbert-TED2004-The-Surprising-Science-of-Happiness.mp4
|
304
|
+
- http://media.clarify.io/audio/speeches/GWB-2004-Victory-Speech.mp3
|
305
|
+
- http://media.clarify.io/audio/samples/harvard-sentences-2.wav
|
306
|
+
- http://media.clarify.io/video/presentations/SirKenRobinson-TED2006-How-Schools-Kill-Creativity.mp4
|
307
|
+
- http://media.clarify.io/audio/speeches/MLK-I-Have-a-Dream.mp3
|
308
|
+
- http://media.clarify.io/audio/books/dorothyandthewizardinoz_01_baum_64kb.mp3
|
309
|
+
- http://media.clarify.io/video/presentations/SimonSinek-TEDxPugetSound-How-Great-Leaders-Inspire-Action.mp4
|
310
|
+
- http://media.clarify.io/video/presentations/ShawnAchor-TEDxBloomington-The-Happy-Secret-to-Better-Work.mp4
|
311
|
+
- http://media.clarify.io/audio/speeches/FDR-Statue-of-Liberty.mp3
|
312
|
+
- http://media.clarify.io/audio/speeches/Reagan-Challenger-Disaster.mp3
|
176
313
|
```
|
177
314
|
|
178
315
|
### Create a bundle
|
@@ -197,18 +334,20 @@ pp created_bundle
|
|
197
334
|
|
198
335
|
Example output of bundle_create.rb:
|
199
336
|
```
|
200
|
-
#<Clarify::Response:
|
337
|
+
#<Clarify::Response:0x007fd0740a7278
|
201
338
|
@body=
|
202
|
-
{"id"=>"
|
339
|
+
{"id"=>"1bf2f176592144398d799bfa2298f629",
|
203
340
|
"_class"=>"Ref",
|
204
341
|
"_links"=>
|
205
|
-
{"self"=>{"href"=>"/v1/bundles/
|
342
|
+
{"self"=>{"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629"},
|
206
343
|
"curies"=>
|
207
344
|
[{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
|
208
345
|
"clarify:metadata"=>
|
209
|
-
{"href"=>"/v1/bundles/
|
346
|
+
{"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/metadata"},
|
210
347
|
"clarify:tracks"=>
|
211
|
-
{"href"=>"/v1/bundles/
|
348
|
+
{"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/tracks"},
|
349
|
+
"clarify:insights"=>
|
350
|
+
{"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/insights"}}},
|
212
351
|
@response=#<Net::HTTPCreated 201 Created readbody=true>>
|
213
352
|
```
|
214
353
|
|
@@ -232,15 +371,60 @@ end
|
|
232
371
|
|
233
372
|
Example output of searches_paged_over.rb:
|
234
373
|
```
|
235
|
-
-
|
374
|
+
- Reagan-Challenger-Disaster
|
236
375
|
{"score"=>1,
|
237
376
|
"term_results"=>
|
238
|
-
[{"score"=>0.
|
377
|
+
[{"score"=>0.34,
|
239
378
|
"matches"=>
|
240
379
|
[{"type"=>"audio",
|
241
380
|
"track"=>0,
|
242
381
|
"hits"=>
|
243
|
-
[{"start"=>
|
382
|
+
[{"start"=>34.29, "end"=>34.71}, {"start"=>172.59, "end"=>173.2}]}]}]}
|
383
|
+
- How-Great-Leaders-Inspire-Action
|
384
|
+
{"score"=>0.632,
|
385
|
+
"term_results"=>
|
386
|
+
[{"score"=>0.286,
|
387
|
+
"matches"=>
|
388
|
+
[{"type"=>"audio",
|
389
|
+
"track"=>0,
|
390
|
+
"hits"=>
|
391
|
+
[{"start"=>64.53, "end"=>65},
|
392
|
+
{"start"=>72.9, "end"=>73.12},
|
393
|
+
{"start"=>502.59, "end"=>502.81},
|
394
|
+
{"start"=>625.4, "end"=>625.65},
|
395
|
+
{"start"=>637.97, "end"=>638.25}]}]}]}
|
396
|
+
- FDR-Statue-of-Liberty
|
397
|
+
{"score"=>0.566,
|
398
|
+
"term_results"=>
|
399
|
+
[{"score"=>0.155,
|
400
|
+
"matches"=>
|
401
|
+
[{"type"=>"audio",
|
402
|
+
"track"=>0,
|
403
|
+
"hits"=>[{"start"=>48.47, "end"=>48.73}]}]}]}
|
404
|
+
- The-Happy-Secret-to-Better-Work
|
405
|
+
{"score"=>0.354,
|
406
|
+
"term_results"=>
|
407
|
+
[{"score"=>0.097,
|
408
|
+
"matches"=>
|
409
|
+
[{"type"=>"audio",
|
410
|
+
"track"=>0,
|
411
|
+
"hits"=>[{"start"=>652.78, "end"=>653.05}]}]}]}
|
412
|
+
- The-Surprising-Science-of-Happiness
|
413
|
+
{"score"=>0.283,
|
414
|
+
"term_results"=>
|
415
|
+
[{"score"=>0.078,
|
416
|
+
"matches"=>
|
417
|
+
[{"type"=>"audio",
|
418
|
+
"track"=>0,
|
419
|
+
"hits"=>[{"start"=>78.05, "end"=>78.39}]}]}]}
|
420
|
+
- On-the-Edge-of-Hypermedia
|
421
|
+
{"score"=>0.212,
|
422
|
+
"term_results"=>
|
423
|
+
[{"score"=>0.058,
|
424
|
+
"matches"=>
|
425
|
+
[{"type"=>"audio",
|
426
|
+
"track"=>0,
|
427
|
+
"hits"=>[{"start"=>2083.62, "end"=>2084.12}]}]}]}
|
244
428
|
```
|
245
429
|
|
246
430
|
### Get all of your bundles over many pages
|
@@ -259,14 +443,23 @@ end
|
|
259
443
|
|
260
444
|
Example output of bundles_paged_over.rb:
|
261
445
|
```
|
262
|
-
- The
|
263
|
-
-
|
264
|
-
-
|
265
|
-
-
|
266
|
-
-
|
267
|
-
-
|
268
|
-
-
|
269
|
-
-
|
446
|
+
- The-Surprising-Science-of-Happiness
|
447
|
+
- GWB-2004-Victory-Speech
|
448
|
+
- harvard-sentences-2
|
449
|
+
- How-Schools-Kill-Creativity
|
450
|
+
- MLK-I-Have-a-Dream
|
451
|
+
- dorothyandthewizardinoz_01
|
452
|
+
- How-Great-Leaders-Inspire-Action
|
453
|
+
- The-Happy-Secret-to-Better-Work
|
454
|
+
- FDR-Statue-of-Liberty
|
455
|
+
- Reagan-Challenger-Disaster
|
456
|
+
- Obama-2008-DNC-Speech
|
457
|
+
- GWB-2000-Victory-Speech
|
458
|
+
- Obama-2004-DNC-Keynote
|
459
|
+
- FDR-Inaugural-Address
|
460
|
+
- Mission-Critical-Innovation
|
461
|
+
- On-the-Edge-of-Hypermedia
|
462
|
+
- harvard-sentences-1
|
270
463
|
```
|
271
464
|
|
272
465
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
Feature: As a user of the API, I am able to list my submitted bundles.
|
3
|
+
Scenario: I am building an index page to my bundle collection.
|
4
|
+
# This is not a great test, but I wanted to get *A* cuke in place before
|
5
|
+
# releasing this test.
|
6
|
+
Given I am using the environment's API key
|
7
|
+
And I know the following urls referenced as:
|
8
|
+
| name | URL |
|
9
|
+
| media:statue-of-liberty | http://media.clarify.io/audio/speeches/FDR-Statue-of-Liberty.mp3 |
|
10
|
+
When I create a bundle named "Statue of Liberty" with the media url "[media:statue-of-liberty]"
|
11
|
+
And I wait until the bundle has the "insight:spoken_words" insight
|
12
|
+
Then the spoken words insight should reveal "689" spoken words
|
13
|
+
|
14
|
+
|
@@ -2,12 +2,12 @@ Feature: As a user of the API, I am able to list my submitted bundles.
|
|
2
2
|
Scenario: I am building an index page to my bundle collection.
|
3
3
|
Given I am using the documentation API key
|
4
4
|
And I know the following urls referenced as:
|
5
|
-
| name | URL
|
6
|
-
| media:
|
7
|
-
| media:
|
8
|
-
| media:
|
5
|
+
| name | URL |
|
6
|
+
| media:statue-of-liberty | http://media.clarify.io/audio/speeches/FDR-Statue-of-Liberty.mp3 |
|
7
|
+
| media:gwb-victory-speech | http://media.clarify.io/audio/speeches/GWB-2004-Victory-Speech.mp3 |
|
8
|
+
| media:harvard-sentences | http://media.clarify.io/audio/samples/harvard-sentences-2.wav |
|
9
9
|
When I request a list of bundles
|
10
10
|
Then I should get the HTTP status code 200
|
11
|
-
And my results should include a track with the URL "[media:
|
12
|
-
And my results should include a track with the URL "[media:
|
13
|
-
And my results should include a track with the URL "[media:
|
11
|
+
And my results should include a track with the URL "[media:statue-of-liberty]"
|
12
|
+
And my results should include a track with the URL "[media:gwb-victory-speech]"
|
13
|
+
And my results should include a track with the URL "[media:harvard-sentences]"
|
@@ -3,8 +3,8 @@ Feature: As a user of the API, I am able to search for bundles based on the cont
|
|
3
3
|
Scenario: I am building a search functionality into my application.
|
4
4
|
Given I am using the documentation API key
|
5
5
|
And I know the following urls referenced as:
|
6
|
-
| name | URL
|
7
|
-
| media:
|
8
|
-
When I search my bundles for the text "
|
6
|
+
| name | URL |
|
7
|
+
| media:creativity | http://media.clarify.io/video/presentations/SirKenRobinson-TED2006-How-Schools-Kill-Creativity.mp4 |
|
8
|
+
When I search my bundles for the text "creativity"
|
9
9
|
Then I should get the HTTP status code 200
|
10
|
-
And my results should include a track with the URL "[media:
|
10
|
+
And my results should include a track with the URL "[media:creativity]"
|
@@ -34,6 +34,22 @@ Then(/^my results should include a track with the URL "(.*?)"$/) do |url|
|
|
34
34
|
expect(media_urls).to include(curies.resolve(url))
|
35
35
|
end
|
36
36
|
|
37
|
+
Then(/^my bundle has exactly "(\d+)" tracks?$/) do |count|
|
38
|
+
tracks = customer.restclient.get(@my_bundle.relation('clarify:tracks'))
|
39
|
+
|
40
|
+
media_urls = tracks.map { |track| track['media_url'] }
|
41
|
+
|
42
|
+
expect(media_urls.length).to eq(count.to_i)
|
43
|
+
end
|
44
|
+
|
45
|
+
Then(/^my bundle should include a track with the URL "(.*?)"$/) do |url|
|
46
|
+
tracks = customer.restclient.get(@my_bundle.relation('clarify:tracks'))
|
47
|
+
|
48
|
+
media_urls = tracks.map { |track| track['media_url'] }
|
49
|
+
|
50
|
+
expect(media_urls).to include(curies.resolve(url))
|
51
|
+
end
|
52
|
+
|
37
53
|
# rubocop:disable Metrics/LineLength
|
38
54
|
When(/^I create a bundle named "(.*?)" with the media url "(.*?)"$/) do |name, url|
|
39
55
|
# rubocop:enable Metrics/LineLength
|
@@ -41,7 +57,7 @@ When(/^I create a bundle named "(.*?)" with the media url "(.*?)"$/) do |name, u
|
|
41
57
|
name: names.translate(name),
|
42
58
|
media_url: curies.resolve(url)
|
43
59
|
}
|
44
|
-
customer.bundle_repository.create!(bundle)
|
60
|
+
@my_bundle = customer.bundle_repository.create!(bundle)
|
45
61
|
end
|
46
62
|
|
47
63
|
Then(/^my results should incude a bundle named "(.*?)"$/) do |name|
|
@@ -61,6 +77,12 @@ Given(/^I have a bundle named "(.*?)"$/) do |name|
|
|
61
77
|
@my_bundle = customer.bundle_repository.create!(bundle)
|
62
78
|
end
|
63
79
|
|
80
|
+
When(/^I add a track with the URL "(.*?)" to the bundle$/) do |url|
|
81
|
+
create_url = @my_bundle.relation!('clarify:tracks')
|
82
|
+
|
83
|
+
@result = customer.client.post(create_url, media_url: curies.resolve(url))
|
84
|
+
end
|
85
|
+
|
64
86
|
When(/^I delete my bundle$/) do
|
65
87
|
customer.bundle_repository.delete!(@my_bundle)
|
66
88
|
end
|
@@ -74,3 +96,29 @@ Then(/^the server should not list my bundle$/) do
|
|
74
96
|
|
75
97
|
expect(bundle_urls).to_not include(@my_bundle.relation('self'))
|
76
98
|
end
|
99
|
+
|
100
|
+
When(/I wait until the bundle has the "(.*?)" insight/) do |insight|
|
101
|
+
insight_url = nil
|
102
|
+
60.times do |i|
|
103
|
+
insights_url = @my_bundle.relation('clarify:insights')
|
104
|
+
puts "Fetching insight url (#{insights_url}) attempt #{i}"
|
105
|
+
insights = customer.client.get(insights_url)
|
106
|
+
|
107
|
+
if insights.relation(insight)
|
108
|
+
insight_url = insights.relation(insight)
|
109
|
+
break
|
110
|
+
else
|
111
|
+
sleep(i)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
expect(insight_url).to_not eq(nil)
|
116
|
+
end
|
117
|
+
|
118
|
+
Then(/^the spoken words insight should reveal "(\d+)" spoken words$/) do |words|
|
119
|
+
insights_url = @my_bundle.relation('clarify:insights')
|
120
|
+
insights = customer.client.get(insights_url)
|
121
|
+
insight_url = insights.relation('insight:spoken_words')
|
122
|
+
insight = customer.client.get(insight_url)
|
123
|
+
expect(insight.body['track_data'][0]['word_count']).to eq(words.to_i)
|
124
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -32,5 +32,11 @@ World do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
After do
|
35
|
+
customer.log_in_via_environment
|
36
|
+
customer.client.pager(customer.bundle_repository.fetch).each do |bundle_url|
|
37
|
+
bundle = customer.client.get(bundle_url)
|
38
|
+
customer.bundle_repository.delete!(bundle) if names.matches?(bundle.name)
|
39
|
+
end
|
40
|
+
|
35
41
|
exceptions.raise_pending!
|
36
42
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: As a user of the API, I am able to get all of my tracks for a bundle.
|
2
|
+
Scenario: A user wants a list of their tracks for a bundle.
|
3
|
+
Given I am using the environment's API key
|
4
|
+
And I know the following urls referenced as:
|
5
|
+
| name | URL |
|
6
|
+
| media:dorothy | http://media.clarify.io/audio/books/dorothyandthewizardinoz_01_baum_64kb.mp3 |
|
7
|
+
| media:dorothy2 | http://media.clarify.io/audio/books/dorothyandthewizardinoz_01_baum_64kb.mp3 |
|
8
|
+
And I have a bundle named "Wizard of Oz"
|
9
|
+
And I add a track with the URL "[media:dorothy]" to the bundle
|
10
|
+
And I add a track with the URL "[media:dorothy2]" to the bundle
|
11
|
+
Then my bundle should include a track with the URL "[media:dorothy]"
|
12
|
+
And my bundle should include a track with the URL "[media:dorothy2]"
|
13
|
+
And my bundle has exactly "2" tracks
|
14
|
+
|
data/lib/clarify.rb
CHANGED
@@ -9,11 +9,14 @@ require 'clarify/configuration'
|
|
9
9
|
require 'clarify/errors'
|
10
10
|
require 'clarify/client'
|
11
11
|
require 'clarify/response'
|
12
|
-
require 'clarify/response_factory'
|
13
12
|
require 'clarify/responses/bundle'
|
14
13
|
require 'clarify/responses/collection'
|
14
|
+
require 'clarify/responses/insights'
|
15
15
|
require 'clarify/responses/search_collection'
|
16
|
+
require 'clarify/responses/spoken_keywords_insight'
|
17
|
+
require 'clarify/responses/spoken_words_insight'
|
16
18
|
require 'clarify/responses/no_body'
|
17
|
-
require 'clarify/collection_iterator'
|
18
19
|
require 'clarify/responses/tracks'
|
20
|
+
require 'clarify/response_factory'
|
21
|
+
require 'clarify/collection_iterator'
|
19
22
|
require 'clarify/version'
|
@@ -20,15 +20,20 @@ module Clarify
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def klass_for_class(name)
|
23
|
-
klasses
|
23
|
+
klasses.fetch name
|
24
|
+
end
|
25
|
+
|
26
|
+
def klasses
|
27
|
+
{
|
28
|
+
'Bundle' => Clarify::Responses::Bundle,
|
24
29
|
'Collection' => Clarify::Responses::Collection,
|
30
|
+
'Insights' => Clarify::Responses::Insights,
|
31
|
+
'Ref' => Clarify::Response,
|
25
32
|
'SearchCollection' => Clarify::Responses::SearchCollection,
|
26
|
-
'
|
27
|
-
'
|
28
|
-
'
|
33
|
+
'SpokenWordsInsight' => Clarify::Responses::SpokenWordsInsight,
|
34
|
+
'SpokenKeywordsInsight' => Clarify::Responses::SpokenKeywordsInsight,
|
35
|
+
'Tracks' => Clarify::Responses::Tracks
|
29
36
|
}
|
30
|
-
|
31
|
-
klasses.fetch name
|
32
37
|
end
|
33
38
|
end
|
34
39
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Clarify
|
5
|
+
module Responses
|
6
|
+
# An Insights class represents a list of links to insights which have been
|
7
|
+
# processed by the API. This class is used to locate insight documents.
|
8
|
+
#
|
9
|
+
# You can enumerate over the insight URLs and get names / urls of insights.
|
10
|
+
class Insights < Clarify::Response
|
11
|
+
include Enumerable
|
12
|
+
|
13
|
+
def each
|
14
|
+
items.each { |name, insight| yield name, insight['href'] }
|
15
|
+
end
|
16
|
+
|
17
|
+
def items
|
18
|
+
body['_links'].select { |name, _| name[0..7] == 'insight:' }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/clarify/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
describe Clarify::Responses::Insights do
|
3
|
+
let(:body) do
|
4
|
+
{
|
5
|
+
'_links' => {
|
6
|
+
'self' => { 'href' => 'foo' },
|
7
|
+
'parent' => { 'href' => 'bar' },
|
8
|
+
'insight:foo' => { 'href' => 'baz' }
|
9
|
+
}
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#each' do
|
14
|
+
it 'iterates over each insight' do
|
15
|
+
insights = Clarify::Responses::Insights.new(body, nil)
|
16
|
+
|
17
|
+
expect { |b| insights.each(&b) }.to yield_control.once
|
18
|
+
expect(insights.to_h).to eq('insight:foo' => 'baz')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#items' do
|
23
|
+
subject { Clarify::Responses::Insights.new(body, nil).items }
|
24
|
+
|
25
|
+
it { is_expected.to eq('insight:foo' => { 'href' => 'baz' }) }
|
26
|
+
end
|
27
|
+
end
|
@@ -78,7 +78,7 @@ require 'pp'
|
|
78
78
|
|
79
79
|
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
80
80
|
|
81
|
-
bundle_url = '/v1/bundles/
|
81
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
82
82
|
bundle = clarify.get(bundle_url)
|
83
83
|
puts "Bundle Name: #{bundle.name}"
|
84
84
|
pp bundle
|
@@ -89,6 +89,39 @@ Example output of bundle_fetch.rb:
|
|
89
89
|
<output of bundle_fetch.rb>
|
90
90
|
```
|
91
91
|
|
92
|
+
### Fetch a particular bundle's insight list
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
# bundle_insight_list.rb
|
96
|
+
require 'clarify'
|
97
|
+
require 'pp'
|
98
|
+
|
99
|
+
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
100
|
+
|
101
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
102
|
+
bundle = clarify.get(bundle_url)
|
103
|
+
|
104
|
+
bundle_insights_url = bundle.relation('clarify:insights')
|
105
|
+
|
106
|
+
puts "Insights for Bundle Name: #{bundle.name} (#{bundle_insights_url})"
|
107
|
+
insights = clarify.get(bundle_insights_url)
|
108
|
+
pp insights
|
109
|
+
puts '-----------'
|
110
|
+
insights.each do |insight, insight_url|
|
111
|
+
puts "Insight #{insight} (#{insight_url})"
|
112
|
+
insight = clarify.get(insight_url)
|
113
|
+
pp insight
|
114
|
+
puts ''
|
115
|
+
puts ''
|
116
|
+
puts ''
|
117
|
+
end
|
118
|
+
```
|
119
|
+
|
120
|
+
Example output of bundle_insight_list.rb:
|
121
|
+
```
|
122
|
+
<output of bundle_insight_list.rb>
|
123
|
+
```
|
124
|
+
|
92
125
|
### Get a list of bundles and their names
|
93
126
|
|
94
127
|
```ruby
|
@@ -3,7 +3,7 @@ require 'pp'
|
|
3
3
|
|
4
4
|
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
5
5
|
|
6
|
-
bundle_url = '/v1/bundles/
|
6
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
7
7
|
bundle = clarify.get(bundle_url)
|
8
8
|
puts "Bundle Name: #{bundle.name}"
|
9
9
|
pp bundle
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'clarify'
|
2
|
+
require 'pp'
|
3
|
+
|
4
|
+
clarify = Clarify::Client.new(api_key: 'docs-api-key')
|
5
|
+
|
6
|
+
bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
|
7
|
+
bundle = clarify.get(bundle_url)
|
8
|
+
|
9
|
+
bundle_insights_url = bundle.relation('clarify:insights')
|
10
|
+
|
11
|
+
puts "Insights for Bundle Name: #{bundle.name} (#{bundle_insights_url})"
|
12
|
+
insights = clarify.get(bundle_insights_url)
|
13
|
+
pp insights
|
14
|
+
puts '-----------'
|
15
|
+
insights.each do |insight, insight_url|
|
16
|
+
puts "Insight #{insight} (#{insight_url})"
|
17
|
+
insight = clarify.get(insight_url)
|
18
|
+
pp insight
|
19
|
+
puts ''
|
20
|
+
puts ''
|
21
|
+
puts ''
|
22
|
+
end
|
data/src_readme/readme.md.erb
CHANGED
@@ -26,6 +26,10 @@ configuration and http client setup.
|
|
26
26
|
|
27
27
|
<%= example_with_output('bundle_fetch.rb') %>
|
28
28
|
|
29
|
+
### Fetch a particular bundle's insight list
|
30
|
+
|
31
|
+
<%= example_with_output('bundle_insight_list.rb') %>
|
32
|
+
|
29
33
|
### Get a list of bundles and their names
|
30
34
|
|
31
35
|
<%= example_with_output('bundles_list_fetch.rb') %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clarify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clarify Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- features/create-bundles.feature
|
132
132
|
- features/delete-bundle.feature
|
133
133
|
- features/identity-steps.feature
|
134
|
+
- features/insights.feature
|
134
135
|
- features/list-bundles.feature
|
135
136
|
- features/search-bundles.feature
|
136
137
|
- features/step_definitions/curied_url_steps.rb
|
@@ -143,6 +144,7 @@ files:
|
|
143
144
|
- features/support/lib/customer.rb
|
144
145
|
- features/support/lib/exceptions.rb
|
145
146
|
- features/support/lib/names.rb
|
147
|
+
- features/tracks.feature
|
146
148
|
- lib/clarify.rb
|
147
149
|
- lib/clarify/bundle_repository.rb
|
148
150
|
- lib/clarify/client.rb
|
@@ -153,8 +155,11 @@ files:
|
|
153
155
|
- lib/clarify/response_factory.rb
|
154
156
|
- lib/clarify/responses/bundle.rb
|
155
157
|
- lib/clarify/responses/collection.rb
|
158
|
+
- lib/clarify/responses/insights.rb
|
156
159
|
- lib/clarify/responses/no_body.rb
|
157
160
|
- lib/clarify/responses/search_collection.rb
|
161
|
+
- lib/clarify/responses/spoken_keywords_insight.rb
|
162
|
+
- lib/clarify/responses/spoken_words_insight.rb
|
158
163
|
- lib/clarify/responses/tracks.rb
|
159
164
|
- lib/clarify/rest_client.rb
|
160
165
|
- lib/clarify/version.rb
|
@@ -167,6 +172,7 @@ files:
|
|
167
172
|
- spec/clarify/response_spec.rb
|
168
173
|
- spec/clarify/responses/bundle_spec.rb
|
169
174
|
- spec/clarify/responses/collection_spec.rb
|
175
|
+
- spec/clarify/responses/insights_spec.rb
|
170
176
|
- spec/clarify/responses/search_collection_spec.rb
|
171
177
|
- spec/clarify/responses/tracks_spec.rb
|
172
178
|
- spec/clarify/rest_client_spec.rb
|
@@ -174,6 +180,7 @@ files:
|
|
174
180
|
- src_readme/README_no_output.md
|
175
181
|
- src_readme/examples/bundle_create.rb
|
176
182
|
- src_readme/examples/bundle_fetch.rb
|
183
|
+
- src_readme/examples/bundle_insight_list.rb
|
177
184
|
- src_readme/examples/bundles_list_fetch.rb
|
178
185
|
- src_readme/examples/bundles_paged_over.rb
|
179
186
|
- src_readme/examples/bundles_search.rb
|
@@ -211,6 +218,7 @@ test_files:
|
|
211
218
|
- features/create-bundles.feature
|
212
219
|
- features/delete-bundle.feature
|
213
220
|
- features/identity-steps.feature
|
221
|
+
- features/insights.feature
|
214
222
|
- features/list-bundles.feature
|
215
223
|
- features/search-bundles.feature
|
216
224
|
- features/step_definitions/curied_url_steps.rb
|
@@ -223,6 +231,7 @@ test_files:
|
|
223
231
|
- features/support/lib/customer.rb
|
224
232
|
- features/support/lib/exceptions.rb
|
225
233
|
- features/support/lib/names.rb
|
234
|
+
- features/tracks.feature
|
226
235
|
- spec/clarify/bundle_repository_spec.rb
|
227
236
|
- spec/clarify/client_spec.rb
|
228
237
|
- spec/clarify/collection_iterator_spec.rb
|
@@ -232,6 +241,7 @@ test_files:
|
|
232
241
|
- spec/clarify/response_spec.rb
|
233
242
|
- spec/clarify/responses/bundle_spec.rb
|
234
243
|
- spec/clarify/responses/collection_spec.rb
|
244
|
+
- spec/clarify/responses/insights_spec.rb
|
235
245
|
- spec/clarify/responses/search_collection_spec.rb
|
236
246
|
- spec/clarify/responses/tracks_spec.rb
|
237
247
|
- spec/clarify/rest_client_spec.rb
|