aylien_text_api 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/LICENSE +1 -1
  4. data/lib/aylien_text_api.rb +1 -1
  5. data/lib/aylien_text_api/client.rb +57 -13
  6. data/lib/aylien_text_api/configuration.rb +14 -3
  7. data/lib/aylien_text_api/connection.rb +4 -2
  8. data/lib/aylien_text_api/error.rb +1 -1
  9. data/lib/aylien_text_api/version.rb +2 -2
  10. data/spec/fixtures/aylien_text_api/client/classify_with_invalid_client.yml +7 -5
  11. data/spec/fixtures/aylien_text_api/client/classify_with_invalid_params.yml +16 -8
  12. data/spec/fixtures/aylien_text_api/client/classify_with_text.yml +25 -16
  13. data/spec/fixtures/aylien_text_api/client/classify_with_unauthenticated_client.yml +7 -5
  14. data/spec/fixtures/aylien_text_api/client/classify_with_valid_url.yml +115 -67
  15. data/spec/fixtures/aylien_text_api/client/classify_with_value_as_text.yml +25 -16
  16. data/spec/fixtures/aylien_text_api/client/classify_with_value_as_valid_url.yml +115 -67
  17. data/spec/fixtures/aylien_text_api/client/concepts_with_invalid_client.yml +7 -5
  18. data/spec/fixtures/aylien_text_api/client/concepts_with_invalid_params.yml +16 -8
  19. data/spec/fixtures/aylien_text_api/client/concepts_with_text.yml +16 -8
  20. data/spec/fixtures/aylien_text_api/client/concepts_with_unauthenticated_client.yml +7 -5
  21. data/spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml +109 -32
  22. data/spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml +16 -8
  23. data/spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml +109 -32
  24. data/spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml +7 -5
  25. data/spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml +16 -8
  26. data/spec/fixtures/aylien_text_api/client/entities_with_text.yml +16 -8
  27. data/spec/fixtures/aylien_text_api/client/entities_with_unauthenticated_client.yml +7 -5
  28. data/spec/fixtures/aylien_text_api/client/entities_with_valid_url.yml +466 -271
  29. data/spec/fixtures/aylien_text_api/client/entities_with_value_as_text.yml +16 -8
  30. data/spec/fixtures/aylien_text_api/client/entities_with_value_as_valid_url.yml +465 -271
  31. data/spec/fixtures/aylien_text_api/client/extract_with_invalid_client.yml +7 -5
  32. data/spec/fixtures/aylien_text_api/client/extract_with_invalid_params.yml +16 -8
  33. data/spec/fixtures/aylien_text_api/client/extract_with_unauthenticated_client.yml +7 -5
  34. data/spec/fixtures/aylien_text_api/client/extract_with_valid_url.yml +267 -154
  35. data/spec/fixtures/aylien_text_api/client/extract_with_value_as_text.yml +16 -8
  36. data/spec/fixtures/aylien_text_api/client/extract_with_value_as_valid_url.yml +267 -154
  37. data/spec/fixtures/aylien_text_api/client/hashtags_with_invalid_client.yml +7 -5
  38. data/spec/fixtures/aylien_text_api/client/hashtags_with_invalid_params.yml +16 -8
  39. data/spec/fixtures/aylien_text_api/client/hashtags_with_text.yml +31 -17
  40. data/spec/fixtures/aylien_text_api/client/hashtags_with_unauthenticated_client.yml +7 -5
  41. data/spec/fixtures/aylien_text_api/client/hashtags_with_valid_url.yml +51 -27
  42. data/spec/fixtures/aylien_text_api/client/hashtags_with_value_as_text.yml +32 -17
  43. data/spec/fixtures/aylien_text_api/client/hashtags_with_value_as_valid_url.yml +51 -27
  44. data/spec/fixtures/aylien_text_api/client/language_with_invalid_client.yml +7 -5
  45. data/spec/fixtures/aylien_text_api/client/language_with_invalid_params.yml +16 -8
  46. data/spec/fixtures/aylien_text_api/client/language_with_unauthenticated_client.yml +7 -5
  47. data/spec/fixtures/aylien_text_api/client/language_with_valid_text.yml +21 -9
  48. data/spec/fixtures/aylien_text_api/client/language_with_valid_url.yml +46 -26
  49. data/spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml +21 -9
  50. data/spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml +46 -26
  51. data/spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml +38 -0
  52. data/spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml +62 -0
  53. data/spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml +42 -0
  54. data/spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml +84 -0
  55. data/spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml +84 -0
  56. data/spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml +7 -5
  57. data/spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml +17 -9
  58. data/spec/fixtures/aylien_text_api/client/related_with_phrase.yml +80 -28
  59. data/spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml +7 -5
  60. data/spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml +80 -28
  61. data/spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml +16 -8
  62. data/spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml +7 -5
  63. data/spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml +16 -8
  64. data/spec/fixtures/aylien_text_api/client/sentiment_with_text.yml +23 -21
  65. data/spec/fixtures/aylien_text_api/client/sentiment_with_unauthenticated_client.yml +7 -5
  66. data/spec/fixtures/aylien_text_api/client/sentiment_with_valid_url.yml +49 -26
  67. data/spec/fixtures/aylien_text_api/client/sentiment_with_value_as_text.yml +23 -21
  68. data/spec/fixtures/aylien_text_api/client/sentiment_with_value_as_valid_url.yml +49 -26
  69. data/spec/fixtures/aylien_text_api/client/summarize_with_invalid_client.yml +7 -5
  70. data/spec/fixtures/aylien_text_api/client/summarize_with_invalid_params.yml +17 -9
  71. data/spec/fixtures/aylien_text_api/client/summarize_with_title_and_text.yml +20 -46
  72. data/spec/fixtures/aylien_text_api/client/summarize_with_unauthenticated_client.yml +7 -5
  73. data/spec/fixtures/aylien_text_api/client/summarize_with_valid_url.yml +61 -34
  74. data/spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml +20 -46
  75. data/spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml +17 -9
  76. data/spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml +61 -34
  77. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml +38 -0
  78. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml +57 -0
  79. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml +53 -0
  80. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml +42 -0
  81. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml +96 -0
  82. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml +57 -0
  83. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml +96 -0
  84. data/spec/lib/aylien_text_api/client_spec.rb +13 -3
  85. data/spec/lib/aylien_text_api/microformats.rb +66 -0
  86. data/spec/lib/aylien_text_api/unsupervised_classify.rb +87 -0
  87. metadata +105 -5
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/classify/unsupervised
6
+ body:
7
+ encoding: US-ASCII
8
+ string: url=http%3A%2F%2Ftechcrunch.com%2F2014%2F10%2F20%2Fthe-super-slim-kindle-voyage-is-a-great-travel-companion%2F&class=voyage&class=travel&class=president
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.1.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ App-Id:
19
+ - "<PASSWORD>"
20
+ App-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - openresty/1.5.12.1
29
+ Date:
30
+ - Tue, 10 Feb 2015 14:06:44 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '2154'
35
+ Connection:
36
+ - keep-alive
37
+ X-Ratelimit-Limit:
38
+ - '207000'
39
+ X-Ratelimit-Remaining:
40
+ - '205365'
41
+ X-Ratelimit-Reset:
42
+ - '1423612800'
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: !binary |-
46
+ eyJ0ZXh0IjoiSW4gMTkzNSwgU2lyIEFsbGVuIExhbmUgYW5kIFYuIEsuIEty
47
+ aXNobmEgTWVub24gZm91bmRlZCBQZW5ndWluIEJvb2tzLCBhIGNvbXBhbnkg
48
+ ZGVkaWNhdGVkIHRvIHByb2R1Y2luZyBoaWdoLXF1YWxpdHksIHNtYWxsLWZv
49
+ cm1hdCBwYXBlcmJhY2sgYm9va3MgZm9yIHRoZSB3b3JsZCBtYXJrZXQuIFRo
50
+ ZXNlIHNtYWxsLCB3ZWxsLW1hZGUgbGl0dGxlIGJvb2tzIGludHJvZHVjZWQg
51
+ c29tZSBhbWF6aW5nIGZpY3Rpb24sIHBoaWxvc29waHksIGNsYXNzaWNhbCB0
52
+ aG91Z2h0IGFuZCBzcGlyaXR1YWxpc20gdG8gYSBodW5ncnkgYXVkaWVuY2Us
53
+ IGFuZCB0aGUgbG93IHByaWNlIG1hZGUgaXQgZWFzeSB0byBidWlsZCBhIGxp
54
+ YnJhcnkgb2YgYW1hemluZyB0aXRsZXMgdGhhdCBjb3VsZCBmaXQgaW50byBh
55
+ IG1pbGsgY3JhdGUuIFBlbmd1aW4sIGl0IGNhbiBiZSBhcmd1ZWQsIGJyb3Vn
56
+ aHQgYWJvdXQgYW4gaW50ZWxsZWN0dWFsIHNlYSBjaGFuZ2UsIGJyaW5naW5n
57
+ IHVzIGJvdGggdGhlIHBvc3Qtd2FyIHdyaXRlcnMgb2Ygbm90ZSBhbmQsIGlu
58
+ IGFub3RoZXIgZGlyZWN0aW9uLCB0aGUgQmVhdHMgYW5kIHRoZSBzcGlyaXR1
59
+ YWwgcmlvdCBvZiB0aGUgMTk2MHMuXG5cbldoeSB3YXMgUGVuZ3VpbiBzbyBw
60
+ b3B1bGFyPyBBbmQgd2h5IGlzIHRoZSA2LWluY2ggS2luZGxlIFZveWFnZSBp
61
+ dHMgZW1vdGlvbmFsIHN1Y2Nlc3Nvcj8gQm90aCByZXZvbHV0aW9uaXplZCB0
62
+ aGUgcGh5c2ljYWwgbm90aW9uIG9mIGJvb2tzLlxuXG5JbiBQZW5ndWlu4oCZ
63
+ cyBjYXNlLCB0aGUgbWVkaXVtIHdhcyB0cnVseSB0aGUgbWVzc2FnZSwgYW5k
64
+ wqB0aGUgd3JpdGluZyBpbnNpZGUgdGhlIHNtYWxsLCBwb2NrZXRhYmxlIGJv
65
+ b2tzIGFsbG93ZWQgZm9yIHBvcnRhYmlsaXR5IGFuZCBlbmNvdXJhZ2VkIGNv
66
+ bGxlY3Rpb24uIEluIHRoZSBLaW5kbGUgVm95YWdl4oCZcyBjYXNlLCBBbWF6
67
+ b24gaGFzIGNyZWF0ZWQgYSBkZWxpZ2h0ZnVsIHRyYXZlbCBjb21wYW5pb24u
68
+ XG5cbkZpcnN0LCBsZXTigJlzIGFkZHJlc3MgdGhlIHNpemUuIFRoZSAkMTk5
69
+ IFZveWFnZSAoJDIxOSB3aXRob3V0IGFkcyBhbmQgd2l0aCAzRykgaXMgYWJv
70
+ dXQgYXMgYmlnIGFzIGEgUGVuZ3VpbiBwYXBlcmJhY2sgYW5kIGp1c3QgYSBi
71
+ aXQgYmlnZ2VyIChhbmQgdGhpY2tlcikgdGhhbiBhIHN0YW5kYXJkIHBhc3Nw
72
+ b3J0LiBJdOKAmXMgNy42IG1tIHRoaWNrIGFuZCByZW1vdmVkIGZyb20gaXRz
73
+ IGNhc2UgaXQgbG9va3MgYWJvdXQgYXMgc3Vic3RhbnRpYWwgYXMgYSB0aGlu
74
+ IHN0YWNrIG9mIHBhcGVyLlxuXG5UaGUgVm95YWdlIGlzIHRoZSBLaW5kbGUg
75
+ ZGlzdGlsbGVkLiBBbG1vc3QgYWxsIG9mIHRoZSBmZWF0dXJlcyBhcmUgdGhl
76
+ cmUg4oCTIHRvdWNoc2NyZWVuLCBicmlnaHQgd2hpdGUgZS1pbmsgZGlzcGxh
77
+ eSwgYW5kIGV2ZW4gYSBzcGVjaWFsIGhhcHRpYyBmZWVkYmFjayBzeXN0ZW0g
78
+ dGhhdCBhbGxvd3MgeW91IHRvIOKAnGNsaWNr4oCdIGxlZnQgYW5kIHJpZ2h0
79
+ IHNpZGUgYnV0dG9ucyB0byB0dXJuIHBhZ2VzLiBZb3UgY2FuIGFsc28gc3dp
80
+ cGUgdGhlIHBhZ2UgbGVmdCBhbmQgcmlnaHQgdG8gbW92ZSB0byB0aGUgbmV4
81
+ dCBwYWdlIGFuZCBzbWFsbCBkZWRpY2F0ZWQgc3BvdHMgYWJvdmUgdGhlIGxv
82
+ bmdlciB0b3VjaC1zZW5zaXRpdmUgcGFkcyB0aGF0IGdvIGJhY2sgb25lIHBh
83
+ Z2UuXG5cbkFtYXpvbiBzZWxscyBhbiAkNDUgZm9sZGluZyBjYXNlIGZvciB0
84
+ aGUgVm95YWdlIHRoYXQgb3BlbnMgdXAgbGlrZSBhIE1vbGVza2luZSByZXBv
85
+ cnRlcuKAmXMgbm90ZWJvb2suIEl0IGFjdGl2YXRlcyB0aGUgS2luZGxlIHVw
86
+ b24gb3BlbmluZyBhbmQgdHVybnMgaXQgb2ZmIHdoZW4gY2xvc2VkLiBIaWRk
87
+ ZW4gbWFnbmV0cyB0aGVuIGFsbG93IHlvdSB0byB0dXJuIHRoZSBjb3ZlciBp
88
+ bnRvIGEgbGl0dGxlIHN0YW5kIGZvciBoYW5kcy1mcmVlIHJlYWRpbmcuXG5c
89
+ blNvIGhvdyBkb2VzIGl0IHdvcms/IEluIHNob3J0LCBJIGxvdmUgZS1pbmsg
90
+ ZGV2aWNlcywgYW5kIHRoZSBWb3lhZ2UgaXMgdGhlIGJlc3Qgb2YgdGhlbS4g
91
+ QmVjYXVzZSBpdCBsYSIsImNsYXNzZXMiOlt7ImxhYmVsIjoidm95YWdlIiwi
92
+ c2NvcmUiOjAuMDE0fSx7ImxhYmVsIjoidHJhdmVsIiwic2NvcmUiOjAuMDA2
93
+ fSx7ImxhYmVsIjoicHJlc2lkZW50Iiwic2NvcmUiOjAuMDAyfV19
94
+ http_version:
95
+ recorded_at: Tue, 10 Feb 2015 14:06:29 GMT
96
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,57 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/classify
6
+ body:
7
+ encoding: US-ASCII
8
+ string: text=CCTV+footage+shows+the+moment+a+suicide+car+bomber+detonates%0A++++++a+device+in+Beirut+on+Tuesday.+The+incident+took+place+in+an+area%0A++++++of+support+for+Hezbollah+and+left+four+people+dead+with+many+more+wounded.%0A++++++A+group+calling+itself+the+al-Nusra+Front+in+Lebanon+has+claimed%0A++++++responsibility+for+the+attack+saying+it+was+in+retaliation+for%0A++++++Hezbollah%27s+military+support+of+president+Bashar+al-Assad%27s+forces+in+Syria&class=voyage&class=travel&class=president
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.1.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ App-Id:
19
+ - "<PASSWORD>"
20
+ App-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - openresty/1.5.12.1
29
+ Date:
30
+ - Tue, 10 Feb 2015 14:06:25 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '605'
35
+ Connection:
36
+ - keep-alive
37
+ X-Ratelimit-Limit:
38
+ - '207000'
39
+ X-Ratelimit-Remaining:
40
+ - '205366'
41
+ X-Ratelimit-Reset:
42
+ - '1423612800'
43
+ body:
44
+ encoding: UTF-8
45
+ string: |-
46
+ {
47
+ "text": "CCTV footage shows the moment a suicide car bomber detonates\n a device in Beirut on Tuesday. The incident took place in an area\n of support for Hezbollah and left four people dead with many more wounded.\n A group calling itself the al-Nusra Front in Lebanon has claimed\n responsibility for the attack saying it was in retaliation for\n Hezbollah's military support of president Bashar al-Assad's forces in Syria",
48
+ "language": "en",
49
+ "categories": [{
50
+ "label": "defence - biological and chemical weapons",
51
+ "code": "11001007",
52
+ "confidence": 1.0
53
+ }]
54
+ }
55
+ http_version:
56
+ recorded_at: Tue, 10 Feb 2015 14:06:10 GMT
57
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/classify/unsupervised
6
+ body:
7
+ encoding: US-ASCII
8
+ string: url=http%3A%2F%2Ftechcrunch.com%2F2014%2F10%2F20%2Fthe-super-slim-kindle-voyage-is-a-great-travel-companion%2F&class=voyage&class=travel&class=president
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.1.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ App-Id:
19
+ - "<PASSWORD>"
20
+ App-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - openresty/1.5.12.1
29
+ Date:
30
+ - Tue, 10 Feb 2015 14:07:05 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '2154'
35
+ Connection:
36
+ - keep-alive
37
+ X-Ratelimit-Limit:
38
+ - '207000'
39
+ X-Ratelimit-Remaining:
40
+ - '205362'
41
+ X-Ratelimit-Reset:
42
+ - '1423612800'
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: !binary |-
46
+ eyJ0ZXh0IjoiSW4gMTkzNSwgU2lyIEFsbGVuIExhbmUgYW5kIFYuIEsuIEty
47
+ aXNobmEgTWVub24gZm91bmRlZCBQZW5ndWluIEJvb2tzLCBhIGNvbXBhbnkg
48
+ ZGVkaWNhdGVkIHRvIHByb2R1Y2luZyBoaWdoLXF1YWxpdHksIHNtYWxsLWZv
49
+ cm1hdCBwYXBlcmJhY2sgYm9va3MgZm9yIHRoZSB3b3JsZCBtYXJrZXQuIFRo
50
+ ZXNlIHNtYWxsLCB3ZWxsLW1hZGUgbGl0dGxlIGJvb2tzIGludHJvZHVjZWQg
51
+ c29tZSBhbWF6aW5nIGZpY3Rpb24sIHBoaWxvc29waHksIGNsYXNzaWNhbCB0
52
+ aG91Z2h0IGFuZCBzcGlyaXR1YWxpc20gdG8gYSBodW5ncnkgYXVkaWVuY2Us
53
+ IGFuZCB0aGUgbG93IHByaWNlIG1hZGUgaXQgZWFzeSB0byBidWlsZCBhIGxp
54
+ YnJhcnkgb2YgYW1hemluZyB0aXRsZXMgdGhhdCBjb3VsZCBmaXQgaW50byBh
55
+ IG1pbGsgY3JhdGUuIFBlbmd1aW4sIGl0IGNhbiBiZSBhcmd1ZWQsIGJyb3Vn
56
+ aHQgYWJvdXQgYW4gaW50ZWxsZWN0dWFsIHNlYSBjaGFuZ2UsIGJyaW5naW5n
57
+ IHVzIGJvdGggdGhlIHBvc3Qtd2FyIHdyaXRlcnMgb2Ygbm90ZSBhbmQsIGlu
58
+ IGFub3RoZXIgZGlyZWN0aW9uLCB0aGUgQmVhdHMgYW5kIHRoZSBzcGlyaXR1
59
+ YWwgcmlvdCBvZiB0aGUgMTk2MHMuXG5cbldoeSB3YXMgUGVuZ3VpbiBzbyBw
60
+ b3B1bGFyPyBBbmQgd2h5IGlzIHRoZSA2LWluY2ggS2luZGxlIFZveWFnZSBp
61
+ dHMgZW1vdGlvbmFsIHN1Y2Nlc3Nvcj8gQm90aCByZXZvbHV0aW9uaXplZCB0
62
+ aGUgcGh5c2ljYWwgbm90aW9uIG9mIGJvb2tzLlxuXG5JbiBQZW5ndWlu4oCZ
63
+ cyBjYXNlLCB0aGUgbWVkaXVtIHdhcyB0cnVseSB0aGUgbWVzc2FnZSwgYW5k
64
+ wqB0aGUgd3JpdGluZyBpbnNpZGUgdGhlIHNtYWxsLCBwb2NrZXRhYmxlIGJv
65
+ b2tzIGFsbG93ZWQgZm9yIHBvcnRhYmlsaXR5IGFuZCBlbmNvdXJhZ2VkIGNv
66
+ bGxlY3Rpb24uIEluIHRoZSBLaW5kbGUgVm95YWdl4oCZcyBjYXNlLCBBbWF6
67
+ b24gaGFzIGNyZWF0ZWQgYSBkZWxpZ2h0ZnVsIHRyYXZlbCBjb21wYW5pb24u
68
+ XG5cbkZpcnN0LCBsZXTigJlzIGFkZHJlc3MgdGhlIHNpemUuIFRoZSAkMTk5
69
+ IFZveWFnZSAoJDIxOSB3aXRob3V0IGFkcyBhbmQgd2l0aCAzRykgaXMgYWJv
70
+ dXQgYXMgYmlnIGFzIGEgUGVuZ3VpbiBwYXBlcmJhY2sgYW5kIGp1c3QgYSBi
71
+ aXQgYmlnZ2VyIChhbmQgdGhpY2tlcikgdGhhbiBhIHN0YW5kYXJkIHBhc3Nw
72
+ b3J0LiBJdOKAmXMgNy42IG1tIHRoaWNrIGFuZCByZW1vdmVkIGZyb20gaXRz
73
+ IGNhc2UgaXQgbG9va3MgYWJvdXQgYXMgc3Vic3RhbnRpYWwgYXMgYSB0aGlu
74
+ IHN0YWNrIG9mIHBhcGVyLlxuXG5UaGUgVm95YWdlIGlzIHRoZSBLaW5kbGUg
75
+ ZGlzdGlsbGVkLiBBbG1vc3QgYWxsIG9mIHRoZSBmZWF0dXJlcyBhcmUgdGhl
76
+ cmUg4oCTIHRvdWNoc2NyZWVuLCBicmlnaHQgd2hpdGUgZS1pbmsgZGlzcGxh
77
+ eSwgYW5kIGV2ZW4gYSBzcGVjaWFsIGhhcHRpYyBmZWVkYmFjayBzeXN0ZW0g
78
+ dGhhdCBhbGxvd3MgeW91IHRvIOKAnGNsaWNr4oCdIGxlZnQgYW5kIHJpZ2h0
79
+ IHNpZGUgYnV0dG9ucyB0byB0dXJuIHBhZ2VzLiBZb3UgY2FuIGFsc28gc3dp
80
+ cGUgdGhlIHBhZ2UgbGVmdCBhbmQgcmlnaHQgdG8gbW92ZSB0byB0aGUgbmV4
81
+ dCBwYWdlIGFuZCBzbWFsbCBkZWRpY2F0ZWQgc3BvdHMgYWJvdmUgdGhlIGxv
82
+ bmdlciB0b3VjaC1zZW5zaXRpdmUgcGFkcyB0aGF0IGdvIGJhY2sgb25lIHBh
83
+ Z2UuXG5cbkFtYXpvbiBzZWxscyBhbiAkNDUgZm9sZGluZyBjYXNlIGZvciB0
84
+ aGUgVm95YWdlIHRoYXQgb3BlbnMgdXAgbGlrZSBhIE1vbGVza2luZSByZXBv
85
+ cnRlcuKAmXMgbm90ZWJvb2suIEl0IGFjdGl2YXRlcyB0aGUgS2luZGxlIHVw
86
+ b24gb3BlbmluZyBhbmQgdHVybnMgaXQgb2ZmIHdoZW4gY2xvc2VkLiBIaWRk
87
+ ZW4gbWFnbmV0cyB0aGVuIGFsbG93IHlvdSB0byB0dXJuIHRoZSBjb3ZlciBp
88
+ bnRvIGEgbGl0dGxlIHN0YW5kIGZvciBoYW5kcy1mcmVlIHJlYWRpbmcuXG5c
89
+ blNvIGhvdyBkb2VzIGl0IHdvcms/IEluIHNob3J0LCBJIGxvdmUgZS1pbmsg
90
+ ZGV2aWNlcywgYW5kIHRoZSBWb3lhZ2UgaXMgdGhlIGJlc3Qgb2YgdGhlbS4g
91
+ QmVjYXVzZSBpdCBsYSIsImNsYXNzZXMiOlt7ImxhYmVsIjoidm95YWdlIiwi
92
+ c2NvcmUiOjAuMDE0fSx7ImxhYmVsIjoidHJhdmVsIiwic2NvcmUiOjAuMDA2
93
+ fSx7ImxhYmVsIjoicHJlc2lkZW50Iiwic2NvcmUiOjAuMDAyfV19
94
+ http_version:
95
+ recorded_at: Tue, 10 Feb 2015 14:06:50 GMT
96
+ recorded_with: VCR 2.9.3
@@ -2,9 +2,17 @@ require_relative '../../spec_helper'
2
2
 
3
3
  describe AylienTextApi::Client do
4
4
  before do
5
- @client = AylienTextApi::Client.new(
6
- app_id: CONFIG["text_api"]["correct_keys"]["app_id"],
7
- app_key: CONFIG["text_api"]["correct_keys"]["app_key"])
5
+ if CONFIG["text_api"]["correct_keys"]["base_uri"] &&
6
+ !CONFIG["text_api"]["correct_keys"]["base_uri"].empty?
7
+ @client = AylienTextApi::Client.new(
8
+ app_id: CONFIG["text_api"]["correct_keys"]["app_id"],
9
+ app_key: CONFIG["text_api"]["correct_keys"]["app_key"],
10
+ base_uri: CONFIG["text_api"]["correct_keys"]["base_uri"])
11
+ else
12
+ @client = AylienTextApi::Client.new(
13
+ app_id: CONFIG["text_api"]["correct_keys"]["app_id"],
14
+ app_key: CONFIG["text_api"]["correct_keys"]["app_key"])
15
+ end
8
16
  @unauthenticated_client = AylienTextApi::Client.new(
9
17
  app_id: CONFIG["text_api"]["incorrect_keys"]["app_id"],
10
18
  app_key: CONFIG["text_api"]["incorrect_keys"]["app_key"])
@@ -20,4 +28,6 @@ describe AylienTextApi::Client do
20
28
  require_relative './related'
21
29
  require_relative './sentiment'
22
30
  require_relative './summarize'
31
+ require_relative './microformats'
32
+ require_relative './unsupervised_classify'
23
33
  end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ describe "Microformats endpoint" do
4
+ before do
5
+ @url = "http://codepen.io/anon/pen/ZYaKbz.html"
6
+ end
7
+
8
+ it "shouldn't be nil with valid url" do
9
+ VCR.use_cassette('microformats_with_valid_url') do
10
+ result = @client.microformats(url: @url)
11
+ result.wont_be_nil
12
+ end
13
+ end
14
+
15
+ it "shouldn't be nil with value as valid url" do
16
+ VCR.use_cassette('microformats_with_value_as_valid_url') do
17
+ result = @client.microformats(@url)
18
+ result.wont_be_nil
19
+ end
20
+ end
21
+
22
+ it "should be nil with invalid params" do
23
+ VCR.use_cassette('microformats_with_invalid_params') do
24
+ result = @client.microformats(wrong_param: @url)
25
+ result.must_be_nil
26
+ end
27
+ end
28
+
29
+ it "should be nil with unauthenticated client" do
30
+ VCR.use_cassette('microformats_with_unauthenticated_client') do
31
+ result = @unauthenticated_client.microformats(url: @url)
32
+ result.must_be_nil
33
+ end
34
+ end
35
+
36
+ it "should raise Forbidden with unauthenticated client" do
37
+ VCR.use_cassette('microformats_with_unauthenticated_client') do
38
+ proc {
39
+ @unauthenticated_client.microformats!(url: @url)
40
+ }.must_raise AylienTextApi::Error::Forbidden
41
+ end
42
+ end
43
+
44
+ it "should be nil with invalid client" do
45
+ VCR.use_cassette('microformats_with_invalid_client') do
46
+ result = @invalid_client.microformats(url: @url)
47
+ result.must_be_nil
48
+ end
49
+ end
50
+
51
+ it "should raise Forbidden with invalid client" do
52
+ VCR.use_cassette('microformats_with_invalid_client') do
53
+ proc {
54
+ @invalid_client.microformats!(url: @url)
55
+ }.must_raise AylienTextApi::Error::Forbidden
56
+ end
57
+ end
58
+
59
+ it "should raise BadRequest with invalid params" do
60
+ VCR.use_cassette('microformats_with_invalid_params') do
61
+ proc {
62
+ @client.microformats!(wrong_param: @url)
63
+ }.must_raise AylienTextApi::Error::BadRequest
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+
3
+ describe "Unsupervised Classify endpoint" do
4
+ before do
5
+ @url = "http://techcrunch.com/2014/10/20/the-super-slim-kindle-voyage-is-a-great-travel-companion/"
6
+ @text = %q(CCTV footage shows the moment a suicide car bomber detonates
7
+ a device in Beirut on Tuesday. The incident took place in an area
8
+ of support for Hezbollah and left four people dead with many more wounded.
9
+ A group calling itself the al-Nusra Front in Lebanon has claimed
10
+ responsibility for the attack saying it was in retaliation for
11
+ Hezbollah's military support of president Bashar al-Assad's forces in Syria)
12
+ @classes = ['voyage', 'travel', 'president']
13
+ end
14
+
15
+ it "shouldn't be nil with valid url" do
16
+ VCR.use_cassette('unsupervised_classify_with_valid_url') do
17
+ result = @client.unsupervised_classify(url: @url, classes: @classes)
18
+ result.wont_be_nil
19
+ end
20
+ end
21
+
22
+ it "shouldn't be nil with text" do
23
+ VCR.use_cassette('unsupervised_classify_with_text') do
24
+ result = @client.unsupervised_classify(text: @text, classes: @classes)
25
+ result.wont_be_nil
26
+ end
27
+ end
28
+
29
+ it "shouldn't be nil with value as valid url" do
30
+ VCR.use_cassette('unsupervised_classify_with_value_as_valid_url') do
31
+ result = @client.unsupervised_classify(@url, classes: @classes)
32
+ result.wont_be_nil
33
+ end
34
+ end
35
+
36
+ it "shouldn't be nil with value as value" do
37
+ VCR.use_cassette('unsupervised_classify_with_value_as_text') do
38
+ result = @client.classify(@text, classes: @classes)
39
+ result.wont_be_nil
40
+ end
41
+ end
42
+
43
+ it "should be nil with invalid params" do
44
+ VCR.use_cassette('unsupervised_classify_with_invalid_params') do
45
+ result = @client.unsupervised_classify(wrong_param: @text, classes: @classes)
46
+ result.must_be_nil
47
+ end
48
+ end
49
+
50
+ it "should be nil with unauthenticated client" do
51
+ VCR.use_cassette('unsupervised_classify_with_unauthenticated_client') do
52
+ result = @unauthenticated_client.unsupervised_classify(text: @text, classes: @classes)
53
+ result.must_be_nil
54
+ end
55
+ end
56
+
57
+ it "should raise Forbidden with unauthenticated client" do
58
+ VCR.use_cassette('unsupervised_classify_with_unauthenticated_client') do
59
+ proc {
60
+ @unauthenticated_client.unsupervised_classify!(text: @text, classes: @classes)
61
+ }.must_raise AylienTextApi::Error::Forbidden
62
+ end
63
+ end
64
+
65
+ it "should be nil with invalid client" do
66
+ VCR.use_cassette('unsupervised_classify_with_invalid_client') do
67
+ result = @invalid_client.unsupervised_classify(text: @text, classes: @classes)
68
+ result.must_be_nil
69
+ end
70
+ end
71
+
72
+ it "should raise Forbidden with invalid client" do
73
+ VCR.use_cassette('unsupervised_classify_with_invalid_client') do
74
+ proc {
75
+ @invalid_client.unsupervised_classify!(text: @text, classes: @classes)
76
+ }.must_raise AylienTextApi::Error::Forbidden
77
+ end
78
+ end
79
+
80
+ it "should raise BadRequest with invalid params" do
81
+ VCR.use_cassette('classify_with_invalid_params') do
82
+ proc {
83
+ @client.classify!(wrong_param: @text, classes: @classes)
84
+ }.must_raise AylienTextApi::Error::BadRequest
85
+ end
86
+ end
87
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aylien_text_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aylien Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-03 00:00:00.000000000 Z
12
+ date: 2015-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -132,6 +132,11 @@ files:
132
132
  - spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
133
133
  - spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
134
134
  - spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
135
+ - spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
136
+ - spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
137
+ - spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
138
+ - spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
139
+ - spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
135
140
  - spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
136
141
  - spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
137
142
  - spec/fixtures/aylien_text_api/client/related_with_phrase.yml
@@ -153,6 +158,13 @@ files:
153
158
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
154
159
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
155
160
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
161
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
162
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
163
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
164
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
165
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
166
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
167
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
156
168
  - spec/lib/aylien_text_api/classify.rb
157
169
  - spec/lib/aylien_text_api/client_spec.rb
158
170
  - spec/lib/aylien_text_api/concepts.rb
@@ -160,9 +172,11 @@ files:
160
172
  - spec/lib/aylien_text_api/extract.rb
161
173
  - spec/lib/aylien_text_api/hashtags.rb
162
174
  - spec/lib/aylien_text_api/language.rb
175
+ - spec/lib/aylien_text_api/microformats.rb
163
176
  - spec/lib/aylien_text_api/related.rb
164
177
  - spec/lib/aylien_text_api/sentiment.rb
165
178
  - spec/lib/aylien_text_api/summarize.rb
179
+ - spec/lib/aylien_text_api/unsupervised_classify.rb
166
180
  - spec/spec_helper.rb
167
181
  homepage: https://github.com/AYLIEN/aylien_textapi_ruby
168
182
  licenses:
@@ -184,11 +198,97 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
198
  version: '0'
185
199
  requirements: []
186
200
  rubyforge_project:
187
- rubygems_version: 2.4.4
201
+ rubygems_version: 2.4.5
188
202
  signing_key:
189
203
  specification_version: 4
190
204
  summary: Aylien Text API is a package of nine different Natural Language Processing,
191
205
  Information Retrieval and Machine Learning APIs that can be quickly and easily adapted
192
206
  to your processes and applications.
193
- test_files: []
194
- has_rdoc:
207
+ test_files:
208
+ - spec/fixtures/aylien_text_api/client/classify_with_invalid_client.yml
209
+ - spec/fixtures/aylien_text_api/client/classify_with_invalid_params.yml
210
+ - spec/fixtures/aylien_text_api/client/classify_with_text.yml
211
+ - spec/fixtures/aylien_text_api/client/classify_with_unauthenticated_client.yml
212
+ - spec/fixtures/aylien_text_api/client/classify_with_valid_url.yml
213
+ - spec/fixtures/aylien_text_api/client/classify_with_value_as_text.yml
214
+ - spec/fixtures/aylien_text_api/client/classify_with_value_as_valid_url.yml
215
+ - spec/fixtures/aylien_text_api/client/concepts_with_invalid_client.yml
216
+ - spec/fixtures/aylien_text_api/client/concepts_with_invalid_params.yml
217
+ - spec/fixtures/aylien_text_api/client/concepts_with_text.yml
218
+ - spec/fixtures/aylien_text_api/client/concepts_with_unauthenticated_client.yml
219
+ - spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml
220
+ - spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml
221
+ - spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml
222
+ - spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml
223
+ - spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml
224
+ - spec/fixtures/aylien_text_api/client/entities_with_text.yml
225
+ - spec/fixtures/aylien_text_api/client/entities_with_unauthenticated_client.yml
226
+ - spec/fixtures/aylien_text_api/client/entities_with_valid_url.yml
227
+ - spec/fixtures/aylien_text_api/client/entities_with_value_as_text.yml
228
+ - spec/fixtures/aylien_text_api/client/entities_with_value_as_valid_url.yml
229
+ - spec/fixtures/aylien_text_api/client/extract_with_invalid_client.yml
230
+ - spec/fixtures/aylien_text_api/client/extract_with_invalid_params.yml
231
+ - spec/fixtures/aylien_text_api/client/extract_with_unauthenticated_client.yml
232
+ - spec/fixtures/aylien_text_api/client/extract_with_valid_url.yml
233
+ - spec/fixtures/aylien_text_api/client/extract_with_value_as_text.yml
234
+ - spec/fixtures/aylien_text_api/client/extract_with_value_as_valid_url.yml
235
+ - spec/fixtures/aylien_text_api/client/hashtags_with_invalid_client.yml
236
+ - spec/fixtures/aylien_text_api/client/hashtags_with_invalid_params.yml
237
+ - spec/fixtures/aylien_text_api/client/hashtags_with_text.yml
238
+ - spec/fixtures/aylien_text_api/client/hashtags_with_unauthenticated_client.yml
239
+ - spec/fixtures/aylien_text_api/client/hashtags_with_valid_url.yml
240
+ - spec/fixtures/aylien_text_api/client/hashtags_with_value_as_text.yml
241
+ - spec/fixtures/aylien_text_api/client/hashtags_with_value_as_valid_url.yml
242
+ - spec/fixtures/aylien_text_api/client/language_with_invalid_client.yml
243
+ - spec/fixtures/aylien_text_api/client/language_with_invalid_params.yml
244
+ - spec/fixtures/aylien_text_api/client/language_with_unauthenticated_client.yml
245
+ - spec/fixtures/aylien_text_api/client/language_with_valid_text.yml
246
+ - spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
247
+ - spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
248
+ - spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
249
+ - spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
250
+ - spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
251
+ - spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
252
+ - spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
253
+ - spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
254
+ - spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
255
+ - spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
256
+ - spec/fixtures/aylien_text_api/client/related_with_phrase.yml
257
+ - spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml
258
+ - spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml
259
+ - spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml
260
+ - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml
261
+ - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml
262
+ - spec/fixtures/aylien_text_api/client/sentiment_with_text.yml
263
+ - spec/fixtures/aylien_text_api/client/sentiment_with_unauthenticated_client.yml
264
+ - spec/fixtures/aylien_text_api/client/sentiment_with_valid_url.yml
265
+ - spec/fixtures/aylien_text_api/client/sentiment_with_value_as_text.yml
266
+ - spec/fixtures/aylien_text_api/client/sentiment_with_value_as_valid_url.yml
267
+ - spec/fixtures/aylien_text_api/client/summarize_with_invalid_client.yml
268
+ - spec/fixtures/aylien_text_api/client/summarize_with_invalid_params.yml
269
+ - spec/fixtures/aylien_text_api/client/summarize_with_title_and_text.yml
270
+ - spec/fixtures/aylien_text_api/client/summarize_with_unauthenticated_client.yml
271
+ - spec/fixtures/aylien_text_api/client/summarize_with_valid_url.yml
272
+ - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
273
+ - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
274
+ - spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
275
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
276
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
277
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
278
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
279
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
280
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
281
+ - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
282
+ - spec/lib/aylien_text_api/classify.rb
283
+ - spec/lib/aylien_text_api/client_spec.rb
284
+ - spec/lib/aylien_text_api/concepts.rb
285
+ - spec/lib/aylien_text_api/entities.rb
286
+ - spec/lib/aylien_text_api/extract.rb
287
+ - spec/lib/aylien_text_api/hashtags.rb
288
+ - spec/lib/aylien_text_api/language.rb
289
+ - spec/lib/aylien_text_api/microformats.rb
290
+ - spec/lib/aylien_text_api/related.rb
291
+ - spec/lib/aylien_text_api/sentiment.rb
292
+ - spec/lib/aylien_text_api/summarize.rb
293
+ - spec/lib/aylien_text_api/unsupervised_classify.rb
294
+ - spec/spec_helper.rb