rawscsi 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +13 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE.txt +23 -0
  6. data/README.md +288 -0
  7. data/Rakefile +11 -0
  8. data/lib/rawscsi/base.rb +13 -0
  9. data/lib/rawscsi/index.rb +64 -0
  10. data/lib/rawscsi/index_helpers/connection.rb +23 -0
  11. data/lib/rawscsi/index_helpers/sdf_add.rb +47 -0
  12. data/lib/rawscsi/index_helpers/sdf_delete.rb +19 -0
  13. data/lib/rawscsi/query/compound.rb +114 -0
  14. data/lib/rawscsi/query/simple.rb +16 -0
  15. data/lib/rawscsi/search.rb +46 -0
  16. data/lib/rawscsi/search_helpers/results_active_record.rb +28 -0
  17. data/lib/rawscsi/search_helpers/results_hash.rb +14 -0
  18. data/lib/rawscsi/version.rb +3 -0
  19. data/lib/rawscsi.rb +46 -0
  20. data/rawscsi.gemspec +41 -0
  21. data/spec/fixtures/vcr/index_spec/delete.yml +38 -0
  22. data/spec/fixtures/vcr/index_spec/handle_batch_limit.yml +73 -0
  23. data/spec/fixtures/vcr/index_spec/upload_hash.yml +39 -0
  24. data/spec/fixtures/vcr/search_spec/and_diff_field.yml +32 -0
  25. data/spec/fixtures/vcr/search_spec/and_or_combo.yml +35 -0
  26. data/spec/fixtures/vcr/search_spec/and_same_field.yml +31 -0
  27. data/spec/fixtures/vcr/search_spec/date.yml +34 -0
  28. data/spec/fixtures/vcr/search_spec/disjunction.yml +44 -0
  29. data/spec/fixtures/vcr/search_spec/fields.yml +35 -0
  30. data/spec/fixtures/vcr/search_spec/limit_sort.yml +32 -0
  31. data/spec/fixtures/vcr/search_spec/no_result.yml +30 -0
  32. data/spec/fixtures/vcr/search_spec/numeric_range.yml +32 -0
  33. data/spec/fixtures/vcr/search_spec/simple_search.yml +153 -0
  34. data/spec/lib/rawscsi/index_helpers/connection_spec.rb +25 -0
  35. data/spec/lib/rawscsi/index_helpers/sdf_add_spec.rb +44 -0
  36. data/spec/lib/rawscsi/index_helpers/sdf_delete_spec.rb +11 -0
  37. data/spec/lib/rawscsi/index_spec.rb +62 -0
  38. data/spec/lib/rawscsi/query/compound_spec.rb +80 -0
  39. data/spec/lib/rawscsi/query/simple_spec.rb +11 -0
  40. data/spec/lib/rawscsi/search_spec.rb +170 -0
  41. data/spec/lib/rawscsi/version_spec.rb +8 -0
  42. data/spec/rawscsi_spec.rb +33 -0
  43. data/spec/spec_helper.rb +17 -0
  44. metadata +250 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: http://doc-dummy-for-test-asshywvkb3xdxlpqj7uk3bf2lq.us-east-1.cloudsearch.amazonaws.com/2013-01-01/documents/batch
6
+ body:
7
+ encoding: UTF-8
8
+ string: '[{"id":12345678,"type":"add","fields":{"title":"Test Title","desc":"Test
9
+ Desc"}}]'
10
+ headers:
11
+ user-agent:
12
+ - Faraday v0.9.0
13
+ content-type:
14
+ - application/json
15
+ accept-encoding:
16
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
17
+ accept:
18
+ - "*/*"
19
+ response:
20
+ status:
21
+ code: 200
22
+ message: OK
23
+ headers:
24
+ content-type:
25
+ - application/json; charset=utf-8
26
+ date:
27
+ - Wed, 15 Oct 2014 10:55:13 GMT
28
+ x-amzn-requestid:
29
+ - bd9664bd-5459-11e4-acf6-9d40f1e0a6e9
30
+ content-length:
31
+ - '46'
32
+ connection:
33
+ - Close
34
+ body:
35
+ encoding: UTF-8
36
+ string: '{"status": "success", "adds": 1, "deletes": 0}'
37
+ http_version: '1.1'
38
+ recorded_at: Wed, 15 Oct 2014 10:55:13 GMT
39
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20actors:%27Arnold%27title:%27Terminator%27)&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"lrWxzJAppwEKHgGn","time-ms":2},"hits":{"found":4,"start":0,"hit":[{"id":"tt1340138","fields":{"title":"Terminator"}},{"id":"tt0088247","fields":{"title":"The
28
+ Terminator"}},{"id":"tt0103064","fields":{"title":"Terminator 2: Judgment
29
+ Day"}},{"id":"tt0181852","fields":{"title":"Terminator 3: Rise of the Machines"}}]}}'
30
+ http_version: '1.1'
31
+ recorded_at: Mon, 13 Oct 2014 12:47:12 GMT
32
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,35 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20genres:%27Action%27(or%20actors:%27Stallon%27actors:%27Jackie%27actors:%27Arnold%27actors:%27Weathers%27actors:%27Van%20Damme%27))&sort=rating%20desc&size=10&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"/eLO0pApxgEKHgGn","time-ms":44},"hits":{"found":65,"start":0,"hit":[{"id":"tt0103064","fields":{"title":"Terminator
28
+ 2: Judgment Day"}},{"id":"tt0088247","fields":{"title":"The Terminator"}},{"id":"tt0093773","fields":{"title":"Predator"}},{"id":"tt0083944","fields":{"title":"First
29
+ Blood"}},{"id":"tt0409459","fields":{"title":"Watchmen"}},{"id":"tt1211956","fields":{"title":"Escape
30
+ Plan"}},{"id":"tt0111512","fields":{"title":"Jui kuen II"}},{"id":"tt0100802","fields":{"title":"Total
31
+ Recall"}},{"id":"tt1302011","fields":{"title":"Kung Fu Panda 2"}},{"id":"tt0111503","fields":{"title":"True
32
+ Lies"}}]}}'
33
+ http_version: '1.1'
34
+ recorded_at: Mon, 13 Oct 2014 16:24:57 GMT
35
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,31 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20actors:%27Kevin%20Bacon%27actors:%27Tom%20Hanks%27)&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ content-length:
22
+ - '136'
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"27KxzJAppgEKHgGn","time-ms":2},"hits":{"found":1,"start":0,"hit":[{"id":"tt0112384","fields":{"title":"Apollo
28
+ 13"}}]}}'
29
+ http_version: '1.1'
30
+ recorded_at: Mon, 13 Oct 2014 12:47:12 GMT
31
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,34 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20plot:%27James%20Bond%27)&fq=release_date:%5B%271970-01-01T00:00:00Z%27,%7D&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"9v/10JApuwEKHgGn","time-ms":3},"hits":{"found":12,"start":0,"hit":[{"id":"tt0079574","fields":{"title":"Moonraker"}},{"id":"tt0086006","fields":{"title":"Never
28
+ Say Never Again"}},{"id":"tt0093428","fields":{"title":"The Living Daylights"}},{"id":"tt0120347","fields":{"title":"Tomorrow
29
+ Never Dies"}},{"id":"tt0143145","fields":{"title":"The World Is Not Enough"}},{"id":"tt0113189","fields":{"title":"GoldenEye"}},{"id":"tt0066995","fields":{"title":"Diamonds
30
+ Are Forever"}},{"id":"tt0076752","fields":{"title":"The Spy Who Loved Me"}},{"id":"tt0246460","fields":{"title":"Die
31
+ Another Day"}},{"id":"tt0086034","fields":{"title":"Octopussy"}}]}}'
32
+ http_version: '1.1'
33
+ recorded_at: Mon, 13 Oct 2014 15:25:45 GMT
34
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,44 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(or%20actors:%27Dustin%20Hoffman%27actors:%27Gary%20Oldman%27actors:%27Daniel%20Day%20Lewis%27actors:%27Christopher%20Walken%27)&sort=rating%20desc&size=10&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ content-length:
22
+ - '630'
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: ASCII-8BIT
27
+ string: !binary |-
28
+ eyJzdGF0dXMiOnsicmlkIjoicGVtYjBwQXB2Z0VLSGdHbiIsInRpbWUtbXMi
29
+ OjN9LCJoaXRzIjp7ImZvdW5kIjo2Mywic3RhcnQiOjAsImhpdCI6W3siaWQi
30
+ OiJ0dDAxMTA0MTMiLCJmaWVsZHMiOnsidGl0bGUiOiJMw6lvbiJ9fSx7Imlk
31
+ IjoidHQwMDc3NDE2IiwiZmllbGRzIjp7InRpdGxlIjoiVGhlIERlZXIgSHVu
32
+ dGVyIn19LHsiaWQiOiJ0dDAxMDcyMDciLCJmaWVsZHMiOnsidGl0bGUiOiJJ
33
+ biB0aGUgTmFtZSBvZiB0aGUgRmF0aGVyIn19LHsiaWQiOiJ0dDAwNjE3MjIi
34
+ LCJmaWVsZHMiOnsidGl0bGUiOiJUaGUgR3JhZHVhdGUifX0seyJpZCI6InR0
35
+ MDQ2OTQ5NCIsImZpZWxkcyI6eyJ0aXRsZSI6IlRoZXJlIFdpbGwgQmUgQmxv
36
+ b2QifX0seyJpZCI6InR0MDA3MDUxMSIsImZpZWxkcyI6eyJ0aXRsZSI6IlBh
37
+ cGlsbG9uIn19LHsiaWQiOiJ0dDAwNzQxMTkiLCJmaWVsZHMiOnsidGl0bGUi
38
+ OiJBbGwgdGhlIFByZXNpZGVudCdzIE1lbiJ9fSx7ImlkIjoidHQwMDk1OTUz
39
+ IiwiZmllbGRzIjp7InRpdGxlIjoiUmFpbiBNYW4ifX0seyJpZCI6InR0MDEw
40
+ MjEzOCIsImZpZWxkcyI6eyJ0aXRsZSI6IkpGSyJ9fSx7ImlkIjoidHQwMDY0
41
+ NjY1IiwiZmllbGRzIjp7InRpdGxlIjoiTWlkbmlnaHQgQ293Ym95In19XX19
42
+ http_version: '1.1'
43
+ recorded_at: Mon, 13 Oct 2014 16:11:02 GMT
44
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,35 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20title:%27Die%20Hard%27)&return=title,genres&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"l7CxzJAppQEKHgGn","time-ms":2},"hits":{"found":5,"start":0,"hit":[{"id":"tt0095016","fields":{"genres":["Action","Thriller"],"title":"Die
28
+ Hard"}},{"id":"tt0112864","fields":{"genres":["Action","Crime","Thriller"],"title":"Die
29
+ Hard: With a Vengeance"}},{"id":"tt0099423","fields":{"genres":["Action","Thriller"],"title":"Die
30
+ Hard 2"}},{"id":"tt0337978","fields":{"genres":["Action","Crime","Thriller"],"title":"Live
31
+ Free or Die Hard"}},{"id":"tt1606378","fields":{"genres":["Action","Crime","Thriller"],"title":"A
32
+ Good Day to Die Hard"}}]}}'
33
+ http_version: '1.1'
34
+ recorded_at: Mon, 13 Oct 2014 12:47:12 GMT
35
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20genres:%27Sci-Fi%27)&sort=rating%20desc&size=3&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"rrqxzJApqQEKHgGn","time-ms":2},"hits":{"found":591,"start":0,"hit":[{"id":"tt0080684","fields":{"title":"Star
28
+ Wars: Episode V - The Empire Strikes Back"}},{"id":"tt1375666","fields":{"title":"Inception"}},{"id":"tt0133093","fields":{"title":"The
29
+ Matrix"}}]}}'
30
+ http_version: '1.1'
31
+ recorded_at: Mon, 13 Oct 2014 12:47:13 GMT
32
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,30 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=fasdfiojfd
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"4+Tc0pApxwEKHgGn","time-ms":3},"hits":{"found":0,"start":0,"hit":[]}}'
28
+ http_version: '1.1'
29
+ recorded_at: Mon, 13 Oct 2014 16:28:46 GMT
30
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=(and%20actors:%27Arnold%27title:%27Terminator%27rating:%5B%278%27,%7D)&return=title&q.parser=structured
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ content-length:
22
+ - '208'
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: UTF-8
27
+ string: '{"status":{"rid":"07exzJApqAEKHgGn","time-ms":2},"hits":{"found":2,"start":0,"hit":[{"id":"tt0088247","fields":{"title":"The
28
+ Terminator"}},{"id":"tt0103064","fields":{"title":"Terminator 2: Judgment
29
+ Day"}}]}}'
30
+ http_version: '1.1'
31
+ recorded_at: Mon, 13 Oct 2014 12:47:13 GMT
32
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,153 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://search-imdb-test-klzdilptuleeedvxt7to3c5xl4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/search?q=star+wars
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ content-type:
16
+ - application/json; charset=UTF-8
17
+ etag:
18
+ - '"YzAwMDAwMDAwMDAwMDAwMFNvbHI="'
19
+ last-modified:
20
+ - Sun, 12 Oct 2014 03:55:22 GMT
21
+ content-length:
22
+ - '5511'
23
+ connection:
24
+ - Close
25
+ body:
26
+ encoding: ASCII-8BIT
27
+ string: !binary |-
28
+ eyJzdGF0dXMiOnsicmlkIjoiMEsyeHpKQXBwQUVLSGdHbiIsInRpbWUtbXMi
29
+ OjJ9LCJoaXRzIjp7ImZvdW5kIjo5LCJzdGFydCI6MCwiaGl0IjpbeyJpZCI6
30
+ InR0MDA3Njc1OSIsImZpZWxkcyI6eyJyYXRpbmciOiI4LjciLCJnZW5yZXMi
31
+ OlsiQWN0aW9uIiwiQWR2ZW50dXJlIiwiRmFudGFzeSIsIlNjaS1GaSJdLCJw
32
+ bG90IjoiTHVrZSBTa3l3YWxrZXIgam9pbnMgZm9yY2VzIHdpdGggYSBKZWRp
33
+ IEtuaWdodCwgYSBjb2NreSBwaWxvdCwgYSB3b29raWVlIGFuZCB0d28gZHJv
34
+ aWRzIHRvIHNhdmUgdGhlIHVuaXZlcnNlIGZyb20gdGhlIEVtcGlyZSdzIHdv
35
+ cmxkLWRlc3Ryb3lpbmcgYmF0dGxlLXN0YXRpb24sIHdoaWxlIGFsc28gYXR0
36
+ ZW1wdGluZyB0byByZXNjdWUgUHJpbmNlc3MgTGVpYSBmcm9tIHRoZSBldmls
37
+ IERhcnRoIFZhZGVyLiIsInJlbGVhc2VfZGF0ZSI6IjE5NzctMDUtMjVUMDA6
38
+ MDA6MDBaIiwidGl0bGUiOiJTdGFyIFdhcnMiLCJyYW5rIjoiMjI2IiwicnVu
39
+ bmluZ190aW1lX3NlY3MiOiI3MjYwIiwiZGlyZWN0b3JzIjpbIkdlb3JnZSBM
40
+ dWNhcyJdLCJpbWFnZV91cmwiOiJodHRwOi8vaWEubWVkaWEtaW1kYi5jb20v
41
+ aW1hZ2VzL00vTVY1Qk1UVTROVGN6T0Rrd00xNUJNbDVCYW5CblhrRnRaVGN3
42
+ TXpFeU1USXlNd0BALl9WMV9TWDQwMF8uanBnIiwieWVhciI6IjE5NzciLCJh
43
+ Y3RvcnMiOlsiTWFyayBIYW1pbGwiLCJIYXJyaXNvbiBGb3JkIiwiQ2Fycmll
44
+ IEZpc2hlciJdfX0seyJpZCI6InR0MDA4NjE5MCIsImZpZWxkcyI6eyJyYXRp
45
+ bmciOiI4LjQiLCJnZW5yZXMiOlsiQWN0aW9uIiwiQWR2ZW50dXJlIiwiRmFu
46
+ dGFzeSIsIlNjaS1GaSJdLCJwbG90IjoiQWZ0ZXIgcmVzY3VpbmcgSGFuIFNv
47
+ bG8gZnJvbSB0aGUgcGFsYWNlIG9mIEphYmJhIHRoZSBIdXR0LCB0aGUgUmVi
48
+ ZWxzIGF0dGVtcHQgdG8gZGVzdHJveSB0aGUgU2Vjb25kIERlYXRoIFN0YXIs
49
+ IHdoaWxlIEx1a2UgU2t5d2Fsa2VyIHRyaWVzIHRvIGJyaW5nIGhpcyBmYXRo
50
+ ZXIgYmFjayB0byB0aGUgTGlnaHQgU2lkZSBvZiB0aGUgRm9yY2UuIiwicmVs
51
+ ZWFzZV9kYXRlIjoiMTk4My0wNS0yNVQwMDowMDowMFoiLCJ0aXRsZSI6IlN0
52
+ YXIgV2FyczogRXBpc29kZSBWSSAtIFJldHVybiBvZiB0aGUgSmVkaSIsInJh
53
+ bmsiOiI3ODIiLCJydW5uaW5nX3RpbWVfc2VjcyI6IjgwNDAiLCJkaXJlY3Rv
54
+ cnMiOlsiUmljaGFyZCBNYXJxdWFuZCJdLCJpbWFnZV91cmwiOiJodHRwOi8v
55
+ aWEubWVkaWEtaW1kYi5jb20vaW1hZ2VzL00vTVY1Qk1qRTVNVE0zT0RVNU1W
56
+ NUJNbDVCYW5CblhrRnRaVGN3T1RZek5qazJPUUBALl9WMV9TWDQwMF8uanBn
57
+ IiwieWVhciI6IjE5ODMiLCJhY3RvcnMiOlsiTWFyayBIYW1pbGwiLCJIYXJy
58
+ aXNvbiBGb3JkIiwiQ2FycmllIEZpc2hlciJdfX0seyJpZCI6InR0MDEyMTc2
59
+ NiIsImZpZWxkcyI6eyJyYXRpbmciOiI3LjciLCJnZW5yZXMiOlsiQWN0aW9u
60
+ IiwiQWR2ZW50dXJlIiwiRmFudGFzeSIsIlNjaS1GaSJdLCJwbG90IjoiQWZ0
61
+ ZXIgdGhyZWUgeWVhcnMgb2YgZmlnaHRpbmcgaW4gdGhlIENsb25lIFdhcnMs
62
+ IEFuYWtpbiBTa3l3YWxrZXIgZmFsbHMgcHJleSB0byB0aGUgU2l0aCBMb3Jk
63
+ J3MgbGllcyBhbmQgbWFrZXMgYW4gZW5lbXkgb2YgdGhlIEplZGkgYW5kIHRo
64
+ b3NlIGhlIGxvdmVzLCBjb25jbHVkaW5nIGhpcyBqb3VybmV5IHRvIHRoZSBE
65
+ YXJrIFNpZGUuIiwicmVsZWFzZV9kYXRlIjoiMjAwNS0wNS0xNVQwMDowMDow
66
+ MFoiLCJ0aXRsZSI6IlN0YXIgV2FyczogRXBpc29kZSBJSUkgLSBSZXZlbmdl
67
+ IG9mIHRoZSBTaXRoIiwicmFuayI6IjM3MSIsInJ1bm5pbmdfdGltZV9zZWNz
68
+ IjoiODQwMCIsImRpcmVjdG9ycyI6WyJHZW9yZ2UgTHVjYXMiXSwiaW1hZ2Vf
69
+ dXJsIjoiaHR0cDovL2lhLm1lZGlhLWltZGIuY29tL2ltYWdlcy9NL01WNUJO
70
+ VGM0TVRjM05UUTVPRjVCTWw1QmFuQm5Ya0Z0WlRjd09UZzBOakk0TkFAQC5f
71
+ VjFfU1g0MDBfLmpwZyIsInllYXIiOiIyMDA1IiwiYWN0b3JzIjpbIkhheWRl
72
+ biBDaHJpc3RlbnNlbiIsIk5hdGFsaWUgUG9ydG1hbiIsIkV3YW4gTWNHcmVn
73
+ b3IiXX19LHsiaWQiOiJ0dDI0ODg0OTYiLCJmaWVsZHMiOnsicGxvdCI6IkEg
74
+ Y29udGludWF0aW9uIG9mIHRoZSBzYWdhIGNyZWF0ZWQgYnkgR2VvcmdlIEx1
75
+ Y2FzLiIsImdlbnJlcyI6WyJBY3Rpb24iLCJBZHZlbnR1cmUiLCJGYW50YXN5
76
+ IiwiU2NpLUZpIl0sInRpdGxlIjoiU3RhciBXYXJzOiBFcGlzb2RlIFZJSSIs
77
+ InJlbGVhc2VfZGF0ZSI6IjIwMTUtMDEtMDFUMDA6MDA6MDBaIiwicmFuayI6
78
+ IjE2OCIsImRpcmVjdG9ycyI6WyJKLkouIEFicmFtcyJdLCJhY3RvcnMiOlsi
79
+ TWFyayBIYW1pbGwiLCJIYXJyaXNvbiBGb3JkIiwiQ2FycmllIEZpc2hlciJd
80
+ LCJ5ZWFyIjoiMjAxNSJ9fSx7ImlkIjoidHQxNDA4MTAxIiwiZmllbGRzIjp7
81
+ InJhdGluZyI6IjcuOSIsImdlbnJlcyI6WyJBY3Rpb24iLCJBZHZlbnR1cmUi
82
+ LCJTY2ktRmkiXSwicGxvdCI6IkFmdGVyIHRoZSBjcmV3IG9mIHRoZSBFbnRl
83
+ cnByaXNlIGZpbmQgYW4gdW5zdG9wcGFibGUgZm9yY2Ugb2YgdGVycm9yIGZy
84
+ b20gd2l0aGluIHRoZWlyIG93biBvcmdhbml6YXRpb24sIENhcHRhaW4gS2ly
85
+ ayBsZWFkcyBhIG1hbmh1bnQgdG8gYSB3YXItem9uZSB3b3JsZCB0byBjYXB0
86
+ dXJlIGEgb25lIG1hbiB3ZWFwb24gb2YgbWFzcyBkZXN0cnVjdGlvbi4iLCJy
87
+ ZWxlYXNlX2RhdGUiOiIyMDEzLTA1LTAyVDAwOjAwOjAwWiIsInRpdGxlIjoi
88
+ U3RhciBUcmVrIEludG8gRGFya25lc3MiLCJyYW5rIjoiMTYiLCJydW5uaW5n
89
+ X3RpbWVfc2VjcyI6Ijc5MjAiLCJkaXJlY3RvcnMiOlsiSi5KLiBBYnJhbXMi
90
+ XSwiaW1hZ2VfdXJsIjoiaHR0cDovL2lhLm1lZGlhLWltZGIuY29tL2ltYWdl
91
+ cy9NL01WNUJNVGsyTnpjek9UZ3hORjVCTWw1QmFuQm5Ya0Z0WlRjd09EUTVP
92
+ RGN6T1FAQC5fVjFfU1g0MDBfLmpwZyIsInllYXIiOiIyMDEzIiwiYWN0b3Jz
93
+ IjpbIkNocmlzIFBpbmUiLCJaYWNoYXJ5IFF1aW50byIsIlpvZSBTYWxkYW5h
94
+ Il19fSx7ImlkIjoidHQwNDg5MDQ5IiwiZmllbGRzIjp7InJhdGluZyI6IjYu
95
+ NSIsImdlbnJlcyI6WyJBZHZlbnR1cmUiLCJDb21lZHkiLCJEcmFtYSJdLCJw
96
+ bG90IjoiU3RhciBXYXJzIGZhbmF0aWNzIHRha2UgYSBjcm9zcy1jb3VudHJ5
97
+ IHRyaXAgdG8gW2xpbms9bm0wMDAwMTg0XScgU2t5d2Fsa2VyIFJhbmNoIHNv
98
+ IHRoZWlyIGR5aW5nIGZyaWVuZCBjYW4gc2VlIGEgc2NyZWVuaW5nIG9mIFts
99
+ aW5rPXR0MDEyMDkxNV0gYmVmb3JlIGl0cyByZWxlYXNlLiIsInJlbGVhc2Vf
100
+ ZGF0ZSI6IjIwMDktMDItMDZUMDA6MDA6MDBaIiwidGl0bGUiOiJGYW5ib3lz
101
+ IiwicmFuayI6IjIwODgiLCJydW5uaW5nX3RpbWVfc2VjcyI6IjU0MDAiLCJk
102
+ aXJlY3RvcnMiOlsiS3lsZSBOZXdtYW4iXSwiaW1hZ2VfdXJsIjoiaHR0cDov
103
+ L2lhLm1lZGlhLWltZGIuY29tL2ltYWdlcy9NL01WNUJNVEkyTURNME5UWTVP
104
+ RjVCTWw1QmFuQm5Ya0Z0WlRjd09ETXhNekl3TWdAQC5fVjFfU1g0MDBfLmpw
105
+ ZyIsInllYXIiOiIyMDA5IiwiYWN0b3JzIjpbIkRhbiBGb2dsZXIiLCJKYXkg
106
+ QmFydWNoZWwiLCJLcmlzdGVuIEJlbGwiXX19LHsiaWQiOiJ0dDAxMjA5MTUi
107
+ LCJmaWVsZHMiOnsicmF0aW5nIjoiNi41IiwiZ2VucmVzIjpbIkFjdGlvbiIs
108
+ IkFkdmVudHVyZSIsIkZhbnRhc3kiLCJTY2ktRmkiXSwicGxvdCI6IlR3byBK
109
+ ZWRpIEtuaWdodHMgZXNjYXBlIGEgaG9zdGlsZSBibG9ja2FkZSB0byBmaW5k
110
+ IGFsbGllcyBhbmQgY29tZSBhY3Jvc3MgYSB5b3VuZyBib3kgd2hvIG1heSBi
111
+ cmluZyBiYWxhbmNlIHRvIHRoZSBGb3JjZSwgYnV0IHRoZSBsb25nIGRvcm1h
112
+ bnQgU2l0aCByZXN1cmZhY2UgdG8gcmVjbGFpbSB0aGVpciBvbGQgZ2xvcnku
113
+ IiwicmVsZWFzZV9kYXRlIjoiMTk5OS0wNS0xOVQwMDowMDowMFoiLCJ0aXRs
114
+ ZSI6IlN0YXIgV2FyczogRXBpc29kZSBJIC0gVGhlIFBoYW50b20gTWVuYWNl
115
+ IiwicmFuayI6IjQ2OSIsInJ1bm5pbmdfdGltZV9zZWNzIjoiODE2MCIsImRp
116
+ cmVjdG9ycyI6WyJHZW9yZ2UgTHVjYXMiXSwiaW1hZ2VfdXJsIjoiaHR0cDov
117
+ L2lhLm1lZGlhLWltZGIuY29tL2ltYWdlcy9NL01WNUJNVFE0TmpFd05EQTJO
118
+ bDVCTWw1QmFuQm5Ya0Z0WlRjd05EVXlORFF6TndAQC5fVjFfU1g0MDBfLmpw
119
+ ZyIsInllYXIiOiIxOTk5IiwiYWN0b3JzIjpbIkV3YW4gTWNHcmVnb3IiLCJM
120
+ aWFtIE5lZXNvbiIsIk5hdGFsaWUgUG9ydG1hbiJdfX0seyJpZCI6InR0MDEy
121
+ MTc2NSIsImZpZWxkcyI6eyJyYXRpbmciOiI2LjciLCJnZW5yZXMiOlsiQWN0
122
+ aW9uIiwiQWR2ZW50dXJlIiwiRmFudGFzeSIsIlNjaS1GaSJdLCJwbG90Ijoi
123
+ VGVuIHllYXJzIGxhdGVyLCBBbmFraW4gU2t5d2Fsa2VyIHNoYXJlcyBhIGZv
124
+ cmJpZGRlbiByb21hbmNlIHdpdGggUGFkbcOpLCB3aGlsZSBPYmktV2FuIGlu
125
+ dmVzdGlnYXRlcyBhbiBhc3Nhc3NpbmF0aW9uIGF0dGVtcHQgb24gdGhlIFBy
126
+ aW5jZXNzIGFuZCBkaXNjb3ZlcnMgYSBzZWNyZXQgY2xvbmUgYXJteSBjcmFm
127
+ dGVkIGZvciB0aGUgSmVkaS4iLCJyZWxlYXNlX2RhdGUiOiIyMDAyLTA1LTE2
128
+ VDAwOjAwOjAwWiIsInRpdGxlIjoiU3RhciBXYXJzOiBFcGlzb2RlIElJIC0g
129
+ QXR0YWNrIG9mIHRoZSBDbG9uZXMiLCJyYW5rIjoiOTIyIiwicnVubmluZ190
130
+ aW1lX3NlY3MiOiI4NTIwIiwiZGlyZWN0b3JzIjpbIkdlb3JnZSBMdWNhcyJd
131
+ LCJpbWFnZV91cmwiOiJodHRwOi8vaWEubWVkaWEtaW1kYi5jb20vaW1hZ2Vz
132
+ L00vTVY1Qk1UWTVNakk1TlRJd05sNUJNbDVCYW5CblhrRnRaVFl3TVRNMU5q
133
+ ZzIuX1YxX1NYNDAwXy5qcGciLCJ5ZWFyIjoiMjAwMiIsImFjdG9ycyI6WyJI
134
+ YXlkZW4gQ2hyaXN0ZW5zZW4iLCJOYXRhbGllIFBvcnRtYW4iLCJFd2FuIE1j
135
+ R3JlZ29yIl19fSx7ImlkIjoidHQwMDgwNjg0IiwiZmllbGRzIjp7InJhdGlu
136
+ ZyI6IjguOCIsImdlbnJlcyI6WyJBY3Rpb24iLCJBZHZlbnR1cmUiLCJTY2kt
137
+ RmkiXSwicGxvdCI6IkFmdGVyIHRoZSByZWJlbHMgaGF2ZSBiZWVuIGJydXRh
138
+ bGx5IG92ZXJwb3dlcmVkIGJ5IHRoZSBFbXBpcmUgb24gdGhlaXIgbmV3bHkg
139
+ ZXN0YWJsaXNoZWQgYmFzZSwgTHVrZSBTa3l3YWxrZXIgdGFrZXMgYWR2YW5j
140
+ ZWQgSmVkaSB0cmFpbmluZyB3aXRoIE1hc3RlciBZb2RhLCB3aGlsZSBoaXMg
141
+ ZnJpZW5kcyBhcmUgcHVyc3VlZCBieSBEYXJ0aCBWYWRlciBhcyBwYXJ0IG9m
142
+ IGhpcyBwbGFuIHRvIGNhcHR1cmUgTHVrZS4iLCJyZWxlYXNlX2RhdGUiOiIx
143
+ OTgwLTA1LTE3VDAwOjAwOjAwWiIsInRpdGxlIjoiU3RhciBXYXJzOiBFcGlz
144
+ b2RlIFYgLSBUaGUgRW1waXJlIFN0cmlrZXMgQmFjayIsInJhbmsiOiI2NTEi
145
+ LCJydW5uaW5nX3RpbWVfc2VjcyI6Ijc0NDAiLCJkaXJlY3RvcnMiOlsiSXJ2
146
+ aW4gS2Vyc2huZXIiXSwiaW1hZ2VfdXJsIjoiaHR0cDovL2lhLm1lZGlhLWlt
147
+ ZGIuY29tL2ltYWdlcy9NL01WNUJNakUyTXpRd01UZ3hOMTVCTWw1QmFuQm5Y
148
+ a0Z0WlRjd01EUXpOamsyT1FAQC5fVjFfU1g0MDBfLmpwZyIsInllYXIiOiIx
149
+ OTgwIiwiYWN0b3JzIjpbIk1hcmsgSGFtaWxsIiwiSGFycmlzb24gRm9yZCIs
150
+ IkNhcnJpZSBGaXNoZXIiXX19XX19
151
+ http_version: '1.1'
152
+ recorded_at: Mon, 13 Oct 2014 12:47:12 GMT
153
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,25 @@
1
+ $root = File.expand_path('../../../../../', __FILE__)
2
+ require "#{$root}/spec/spec_helper"
3
+
4
+ describe Rawscsi::IndexHelpers::Connection do
5
+ before(:each) do
6
+ @config = Rawscsi::Configuration.new
7
+ @config.domain_name = "good-songs"
8
+ @config.domain_id = "bxfbnuitrk2tayljprycpx6mna"
9
+ @config.region = "us-west-1"
10
+ @config.api_version = "2013-01-01"
11
+ end
12
+
13
+ it "constructs the url correctly" do
14
+ connection = Rawscsi::IndexHelpers::Connection.new(@config)
15
+ expect(connection.url).to eq("http://doc-good-songs-bxfbnuitrk2tayljprycpx6mna.us-west-1.cloudsearch.amazonaws.com")
16
+ end
17
+
18
+ it "builds a faraday object" do
19
+ VCR.use_cassette("faraday_object") do
20
+ faraday = Rawscsi::IndexHelpers::Connection.new(@config).build
21
+ expect(faraday).to be_kind_of(Faraday::Connection)
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,44 @@
1
+ $root = File.expand_path('../../../../../', __FILE__)
2
+ require "#{$root}/spec/spec_helper"
3
+
4
+ describe Rawscsi::IndexHelpers::SdfAdd do
5
+ Movie = Struct.new(:id, :title, :actors, :rating)
6
+ before(:each) do
7
+ @config = [:title, :actors, :rating]
8
+ end
9
+
10
+ it "constructs an sdf add json for active record object" do
11
+ obj = Movie.new(293428934, "Slingblade", ["Billy Bob Thorton", "Dwight Yokam"], 9)
12
+ sdf_hash = Rawscsi::IndexHelpers::SdfAdd.new(obj, @config).build
13
+ expect(sdf_hash).to eq(
14
+ {
15
+ :id=>"Movie_293428934",
16
+ :type=>"add",
17
+ :fields=>
18
+ {:title=>"Slingblade",
19
+ :actors=>["Billy Bob Thorton", "Dwight Yokam"],
20
+ :rating=>9}
21
+ }
22
+ )
23
+ end
24
+
25
+ it "constructs an sdf add json for a hash" do
26
+ obj = {
27
+ :id => 43134353,
28
+ :title => "Adaptation",
29
+ :actors => ["Nicholas Cage", "Meryl Streep"],
30
+ :rating => 9.5
31
+ }
32
+ sdf_hash = Rawscsi::IndexHelpers::SdfAdd.new(obj).build
33
+ expect(sdf_hash).to eq(
34
+ {:id=>43134353,
35
+ :type=>"add",
36
+ :fields=>
37
+ {:title=>"Adaptation",
38
+ :actors=>["Nicholas Cage", "Meryl Streep"],
39
+ :rating=>9.5}
40
+ }
41
+ )
42
+ end
43
+ end
44
+
@@ -0,0 +1,11 @@
1
+ $root = File.expand_path('../../../../../', __FILE__)
2
+ require "#{$root}/spec/spec_helper"
3
+
4
+ describe Rawscsi::IndexHelpers::SdfDelete do
5
+ it "constructs an sdf delete json for an id" do
6
+ id = 4
7
+ sdf_hash = Rawscsi::IndexHelpers::SdfDelete.new(id).build
8
+ expect(sdf_hash).to eq({:type => "delete", :id => 4})
9
+ end
10
+ end
11
+
@@ -0,0 +1,62 @@
1
+ require "json"
2
+ $root = File.expand_path('../../../../', __FILE__)
3
+ puts "#{$root}"
4
+ require "#{$root}/spec/spec_helper"
5
+
6
+ describe Rawscsi::Index do
7
+ before(:each) do
8
+ Rawscsi.register "Dummy" do |config|
9
+ # this domain has been deleted
10
+ # so don't try anything funny ;)
11
+ config.domain_name = "dummy-for-test"
12
+ config.domain_id = "asshywvkb3xdxlpqj7uk3bf2lq"
13
+ config.region = "us-east-1"
14
+ config.api_version = "2013-01-01"
15
+ end
16
+ @indexer = Rawscsi::Index.new("Dummy")
17
+ end
18
+
19
+ it "instantiates properly" do
20
+ expect(@indexer.config.domain_name).to eq("dummy-for-test")
21
+ expect(@indexer.config.domain_id).to eq("asshywvkb3xdxlpqj7uk3bf2lq")
22
+ expect(@indexer.config.region).to eq("us-east-1")
23
+ expect(@indexer.config.api_version).to eq("2013-01-01")
24
+ end
25
+
26
+ it "uploads indices from hash correctly" do
27
+ VCR.use_cassette("index_spec/upload_hash") do
28
+ hash = { :id => 12345678, :title => "Test Title", :desc => "Test Desc" }
29
+ expect(JSON.parse(@indexer.upload([hash]))).to eq({
30
+ "status" => "success",
31
+ "adds" => 1,
32
+ "deletes" => 0
33
+ })
34
+ end
35
+ end
36
+
37
+ it "partitions array of docs into right size" do
38
+ VCR.use_cassette("index_spec/handle_batch_limit") do
39
+ array_of_hashes = []
40
+ 10000.times do |index|
41
+ rand_title = "title" * 16
42
+ rand_desc = "desc" * 200
43
+ array_of_hashes << { :id => index, :title => rand_title, :desc => rand_desc}
44
+ end
45
+ expect(JSON.parse(@indexer.upload(array_of_hashes))).to eq({
46
+ "status" => "success",
47
+ "adds" => 4399,
48
+ "deletes" => 0
49
+ })
50
+ end
51
+ end
52
+
53
+ it "deletes indices correctly" do
54
+ VCR.use_cassette("index_spec/delete") do
55
+ expect(JSON.parse(@indexer.delete((1..10000).to_a))).to eq({
56
+ "status" => "success",
57
+ "adds" => 0,
58
+ "deletes" => 10000})
59
+ end
60
+ end
61
+ end
62
+