rawscsi 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+