swiftype 0.0.5 → 1.0.0

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 (97) hide show
  1. data/.gitignore +5 -0
  2. data/.travis.yml +6 -0
  3. data/Gemfile +1 -1
  4. data/README.md +202 -283
  5. data/lib/data/ca-bundle.crt +3554 -0
  6. data/lib/swiftype.rb +7 -31
  7. data/lib/swiftype/client.rb +439 -11
  8. data/lib/swiftype/configuration.rb +29 -4
  9. data/lib/swiftype/exceptions.rb +2 -0
  10. data/lib/swiftype/ext/backport-uri.rb +33 -0
  11. data/lib/swiftype/request.rb +88 -20
  12. data/lib/swiftype/result_set.rb +43 -6
  13. data/lib/swiftype/sso.rb +20 -0
  14. data/lib/swiftype/version.rb +1 -1
  15. data/spec/client_spec.rb +576 -0
  16. data/spec/configuration_spec.rb +36 -0
  17. data/spec/deprecated_spec.rb +20 -0
  18. data/spec/fixtures/vcr/analytics_autoselects.yml +55 -0
  19. data/spec/fixtures/vcr/analytics_autoselects_with_document_type.yml +55 -0
  20. data/spec/fixtures/vcr/analytics_autoselects_with_document_type_and_time_range.yml +55 -0
  21. data/spec/fixtures/vcr/analytics_autoselects_with_time_range.yml +55 -0
  22. data/spec/fixtures/vcr/analytics_clicks.yml +55 -0
  23. data/spec/fixtures/vcr/analytics_clicks_with_document_type.yml +55 -0
  24. data/spec/fixtures/vcr/analytics_clicks_with_document_type_and_time_range.yml +55 -0
  25. data/spec/fixtures/vcr/analytics_clicks_with_time_range.yml +55 -0
  26. data/spec/fixtures/vcr/analytics_searches.yml +55 -0
  27. data/spec/fixtures/vcr/analytics_searches_with_document_type_and_time_range.yml +55 -0
  28. data/spec/fixtures/vcr/analytics_searches_with_time_range.yml +55 -0
  29. data/spec/fixtures/vcr/analytics_searchs_with_document_type.yml +55 -0
  30. data/spec/fixtures/vcr/analytics_top_no_result_queries.yml +55 -0
  31. data/spec/fixtures/vcr/analytics_top_no_result_queries_paginated.yml +55 -0
  32. data/spec/fixtures/vcr/analytics_top_queries.yml +55 -0
  33. data/spec/fixtures/vcr/analytics_top_queries_paginated.yml +55 -0
  34. data/spec/fixtures/vcr/analytics_top_queries_too_large.yml +51 -0
  35. data/spec/fixtures/vcr/bulk_create_documents.yml +49 -0
  36. data/spec/fixtures/vcr/bulk_create_or_update_documents_failure.yml +45 -0
  37. data/spec/fixtures/vcr/bulk_create_or_update_documents_success.yml +49 -0
  38. data/spec/fixtures/vcr/bulk_destroy_documents.yml +45 -0
  39. data/spec/fixtures/vcr/crawl_url.yml +45 -0
  40. data/spec/fixtures/vcr/create_document.yml +48 -0
  41. data/spec/fixtures/vcr/create_document_type.yml +45 -0
  42. data/spec/fixtures/vcr/create_domain.yml +45 -0
  43. data/spec/fixtures/vcr/create_engine.yml +45 -0
  44. data/spec/fixtures/vcr/create_or_update_document_create.yml +47 -0
  45. data/spec/fixtures/vcr/create_or_update_document_update.yml +47 -0
  46. data/spec/fixtures/vcr/create_user.yml +45 -0
  47. data/spec/fixtures/vcr/destroy_document.yml +41 -0
  48. data/spec/fixtures/vcr/destroy_document_type.yml +41 -0
  49. data/spec/fixtures/vcr/destroy_domain.yml +41 -0
  50. data/spec/fixtures/vcr/destroy_engine.yml +41 -0
  51. data/spec/fixtures/vcr/destroy_non_existent_document_type.yml +43 -0
  52. data/spec/fixtures/vcr/document_type_search.yml +60 -0
  53. data/spec/fixtures/vcr/document_type_search_pagination.yml +45 -0
  54. data/spec/fixtures/vcr/document_type_suggest.yml +50 -0
  55. data/spec/fixtures/vcr/document_type_suggest_pagination.yml +45 -0
  56. data/spec/fixtures/vcr/engine_search.yml +64 -0
  57. data/spec/fixtures/vcr/engine_search_facets.yml +162 -0
  58. data/spec/fixtures/vcr/engine_search_pagination.yml +45 -0
  59. data/spec/fixtures/vcr/engine_suggest.yml +52 -0
  60. data/spec/fixtures/vcr/engine_suggest_pagination.yml +45 -0
  61. data/spec/fixtures/vcr/find_document.yml +47 -0
  62. data/spec/fixtures/vcr/find_document_type.yml +45 -0
  63. data/spec/fixtures/vcr/find_domain.yml +45 -0
  64. data/spec/fixtures/vcr/find_domain_failure.yml +43 -0
  65. data/spec/fixtures/vcr/find_engine.yml +45 -0
  66. data/spec/fixtures/vcr/list_document_type.yml +45 -0
  67. data/spec/fixtures/vcr/list_documents.yml +68 -0
  68. data/spec/fixtures/vcr/list_documents_with_pagination.yml +68 -0
  69. data/spec/fixtures/vcr/list_domains.yml +45 -0
  70. data/spec/fixtures/vcr/list_engines.yml +46 -0
  71. data/spec/fixtures/vcr/list_users.yml +45 -0
  72. data/spec/fixtures/vcr/list_users_with_pagination.yml +45 -0
  73. data/spec/fixtures/vcr/log_clickthrough_failure.yml +43 -0
  74. data/spec/fixtures/vcr/log_clickthrough_success.yml +45 -0
  75. data/spec/fixtures/vcr/recrawl_domain_failure.yml +44 -0
  76. data/spec/fixtures/vcr/recrawl_domain_success.yml +45 -0
  77. data/spec/fixtures/vcr/show_user.yml +45 -0
  78. data/spec/fixtures/vcr/update_document.yml +47 -0
  79. data/spec/fixtures/vcr/update_document_unknown_field_failure.yml +45 -0
  80. data/spec/fixtures/vcr/update_documents_failure_non_existent_document.yml +45 -0
  81. data/spec/fixtures/vcr/update_documents_success.yml +45 -0
  82. data/spec/fixtures/vcr/users_client_secret_incorrect.yml +42 -0
  83. data/spec/fixtures/vcr/users_no_api_key.yml +42 -0
  84. data/spec/fixtures/vcr/users_no_client_id_or_secret.yml +43 -0
  85. data/spec/platform_spec.rb +95 -0
  86. data/spec/spec_helper.rb +26 -0
  87. data/spec/ssl_spec.rb +34 -0
  88. data/spec/sso_spec.rb +24 -0
  89. data/swiftype.gemspec +10 -11
  90. metadata +183 -52
  91. data/lib/swiftype/base_model.rb +0 -89
  92. data/lib/swiftype/connection.rb +0 -47
  93. data/lib/swiftype/document.rb +0 -17
  94. data/lib/swiftype/document_type.rb +0 -69
  95. data/lib/swiftype/easy.rb +0 -77
  96. data/lib/swiftype/engine.rb +0 -33
  97. data/lib/swiftype/search.rb +0 -23
@@ -1,17 +0,0 @@
1
- module Swiftype
2
- class Document < BaseModel
3
- parents Engine, DocumentType
4
-
5
- def engine
6
- Engine.find engine_id
7
- end
8
-
9
- def document_type
10
- DocumentType.find document_type_id
11
- end
12
-
13
- def update_fields!(hash)
14
- update_with! put("#{raw_path_to_model}/update_fields.json", {:fields => hash})
15
- end
16
- end
17
- end
@@ -1,69 +0,0 @@
1
- module Swiftype
2
- class DocumentType < BaseModel
3
- parents Engine
4
- include Swiftype::Search
5
-
6
- def build_document(params={})
7
- Document.new({
8
- :document_type_id => id || slug,
9
- :engine_id => engine_id
10
- }.merge(params))
11
- end
12
-
13
- def create_document(params={})
14
- doc = build_document(params)
15
- doc.create!
16
- doc
17
- end
18
-
19
- def create_documents(documents=[])
20
- post("engines/#{engine_id}/document_types/#{slug}/documents/bulk_create.json", {:documents => documents})
21
- end
22
-
23
- def update_documents(documents=[])
24
- put("engines/#{engine_id}/document_types/#{slug}/documents/bulk_update.json", {:documents => documents})
25
- end
26
-
27
- def update_document(document={})
28
- document_id = document[:external_id]
29
- put("engines/#{engine_id}/document_types/#{slug}/documents/#{document_id}/update_fields", {:fields => document[:fields]})
30
- end
31
-
32
- def destroy_document(document_id)
33
- !!delete("engines/#{engine_id}/document_types/#{slug}/documents/#{document_id}")
34
- rescue NonExistentRecord
35
- false
36
- end
37
-
38
- def destroy_documents(document_ids=[])
39
- post("engines/#{engine_id}/document_types/#{slug}/documents/bulk_destroy.json", {:documents => document_ids})
40
- rescue NonExistentRecord
41
- false
42
- end
43
-
44
- def document(id)
45
- Document.new get("engines/#{engine_id}/document_types/#{slug}/documents/#{id}.json")
46
- end
47
-
48
- def engine
49
- Engine.find(engine_id)
50
- end
51
-
52
- def documents
53
- get("engines/#{engine_id}/document_types/#{slug}/documents.json").map { |d| Document.new(d) }
54
- end
55
-
56
- def suggest(query, options={})
57
- search_params = { :q => query }.merge(parse_suggest_options(options))
58
- response = post("engines/#{engine_id}/document_types/#{slug}/suggest.json", search_params)
59
- results = {}
60
- response['records'].each { |document_type, records| results[document_type] = records.map { |d| Swiftype::Document.new(d) }}
61
- results
62
- end
63
-
64
- def search(query, options={})
65
- search_params = { :q => query }.merge(parse_search_options(options))
66
- ResultSet.new(post("engines/#{engine_id}/document_types/#{slug}/search.json", search_params))
67
- end
68
- end
69
- end
data/lib/swiftype/easy.rb DELETED
@@ -1,77 +0,0 @@
1
- require 'swiftype/document'
2
-
3
- module Swiftype
4
- class Easy
5
- include Swiftype::Connection
6
- include Swiftype::Search
7
-
8
- def initialize(options={})
9
- end
10
-
11
- module Engine
12
- def engines
13
- get("engines.json")
14
- end
15
- def create_engine(engine={})
16
- post("engines.json", :engine => engine)
17
- end
18
- def destroy_engine(engine_id)
19
- delete("engines/#{engine_id}")
20
- end
21
- def suggest(engine_id, query, options={})
22
- search_params = { :q => query }.merge(parse_suggest_options(options))
23
- ResultSet.new(post("engines/#{engine_id}/suggest.json", search_params))
24
- end
25
- def search(engine_id, query, options={})
26
- search_params = { :q => query }.merge(parse_search_options(options))
27
- ResultSet.new(post("engines/#{engine_id}/search.json", search_params))
28
- end
29
- end
30
-
31
- module DocumentType
32
- def document_types(engine_id)
33
- get("engines/#{engine_id}/document_types.json")
34
- end
35
- def create_document_type(engine_id, document_type={})
36
- post("engines/#{engine_id}/document_types.json", :document_type => document_type)
37
- end
38
- def destroy_document_type(engine_id, document_type_id)
39
- delete("engines/#{engine_id}/document_types/#{document_type_id}")
40
- end
41
- end
42
-
43
- module Document
44
- def documents(engine_id, document_type_id)
45
- get("engines/#{engine_id}/document_types/#{document_type_id}/documents.json")
46
- end
47
- def create_document(engine_id, document_type_id, document={})
48
- post("engines/#{engine_id}/document_types/#{document_type_id}/documents.json", :document => document)
49
- end
50
- def create_documents(engine_id, document_type_id, documents=[])
51
- post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_create.json", :documents => documents)
52
- end
53
- def destroy_document(engine_id, document_type_id, document_id)
54
- delete("engines/#{engine_id}/document_types/#{document_type_id}/documents/#{document_id}")
55
- end
56
- def destroy_documents(engine_id, document_type_id, document_ids=[])
57
- post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_destroy.json", :documents => document_ids)
58
- end
59
- def create_or_update_document(engine_id, document_type_id, document={})
60
- post("engines/#{engine_id}/document_types/#{document_type_id}/documents/create_or_update.json", :document => document)
61
- end
62
- def create_or_update_documents(engine_id, document_type_id, documents=[])
63
- post("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_create_or_update.json", :documents => documents)
64
- end
65
- def update_document(engine_id, document_type_id, document_id, fields)
66
- put("engines/#{engine_id}/document_types/#{document_type_id}/documents/#{document_id}/update_fields.json", { :fields => fields })
67
- end
68
- def update_documents(engine_id, document_type_id, documents={})
69
- put("engines/#{engine_id}/document_types/#{document_type_id}/documents/bulk_update.json", { :documents => documents })
70
- end
71
- end
72
-
73
- include Swiftype::Easy::Engine
74
- include Swiftype::Easy::DocumentType
75
- include Swiftype::Easy::Document
76
- end
77
- end
@@ -1,33 +0,0 @@
1
- module Swiftype
2
- class Engine < BaseModel
3
- def self.find(id)
4
- new Swiftype::Client.new.get("engines/#{id}.json")
5
- end
6
-
7
- def build_document_type(params={})
8
- DocumentType.new({
9
- :engine_id => id
10
- }.merge(params))
11
- end
12
-
13
- def create_document_type(params={})
14
- doc = build_document_type(params)
15
- doc.create!
16
- doc
17
- end
18
-
19
- def destroy_document_type(document_type_name)
20
- !!delete("engines/#{slug}/document_types/#{document_type_name}")
21
- rescue NonExistentRecord
22
- false
23
- end
24
-
25
- def document_type(id)
26
- DocumentType.new get("engines/#{slug}/document_types/#{id}.json")
27
- end
28
-
29
- def document_types
30
- get("engines/#{slug}/document_types.json").map { |dt| DocumentType.new(dt) }
31
- end
32
- end
33
- end
@@ -1,23 +0,0 @@
1
- module Swiftype
2
- module Search
3
- VALID_SUGGEST_OPTIONS = [:fetch_fields, :search_fields, :filters, :document_types, :functional_boosts, :page, :per_page]
4
- VALID_SEARCH_OPTIONS = [:fetch_fields, :search_fields, :filters, :document_types, :functional_boosts, :page, :per_page, :sort_field, :sort_direction, :facets]
5
-
6
- def parse_search_options(options)
7
- parse_options(options, VALID_SEARCH_OPTIONS)
8
- end
9
-
10
- def parse_suggest_options(options)
11
- parse_options(options, VALID_SUGGEST_OPTIONS)
12
- end
13
-
14
- def parse_options(options, valid_options)
15
- parsed_options = {}
16
- valid_options.each do |option_name|
17
- next unless options[option_name]
18
- parsed_options[option_name] = options[option_name]
19
- end
20
- parsed_options
21
- end
22
- end
23
- end