collins_client 0.2.7 → 0.2.9

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.
data/README.md CHANGED
@@ -14,7 +14,7 @@ First install rvm
14
14
 
15
15
  Install the collins gem and use it
16
16
 
17
- $ gem install --source=http://repo.tumblr.net:9929/ collins_client
17
+ $ gem install collins_client
18
18
 
19
19
  Remember, if you don't have 1.9.3 set as the default, before you use collins you'll need to do `rvm use 1.9.3`.
20
20
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.2.9
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "collins_client"
8
- s.version = "0.2.7"
8
+ s.version = "0.2.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Blake Matheny"]
12
- s.date = "2012-10-31"
12
+ s.date = "2012-11-19"
13
13
  s.description = "Provides ruby support for interacting with the Collins API"
14
14
  s.email = "bmatheny@tumblr.com"
15
15
  s.extra_rdoc_files = [
@@ -55,7 +55,7 @@ Gem::Specification.new do |s|
55
55
  s.homepage = "https://github.com/tumblr/collins/tree/master/support/ruby/collins-client"
56
56
  s.licenses = ["APL 2.0"]
57
57
  s.require_paths = ["lib"]
58
- s.rubygems_version = "1.8.24"
58
+ s.rubygems_version = "1.8.23"
59
59
  s.summary = "Client library for Collins API"
60
60
 
61
61
  if s.respond_to? :specification_version then
@@ -81,7 +81,7 @@ module Collins; module Api
81
81
  def find options = {}
82
82
  solrquery = options.delete(:query)
83
83
  if solrquery != nil then
84
- return search solrquery, options[:size], options.sort
84
+ return search solrquery, (options[:size] || 50), (options[:sort] || "ASC"), "tag", options
85
85
  end
86
86
  use_api_version "1.1"
87
87
  query = asset_hash_to_find_query options
@@ -101,7 +101,7 @@ module Collins; module Api
101
101
  end
102
102
  end
103
103
 
104
- def search query, size = 50, sort = "ASC", sort_field = "tag"
104
+ def search query, size = 50, sort = "ASC", sort_field = "tag", options = {}
105
105
  use_api_version "1.2"
106
106
  if query.start_with? "\"" and query.end_with? "\"" then
107
107
  query = query[1..-2]
@@ -112,7 +112,17 @@ module Collins; module Api
112
112
  :sort => sort,
113
113
  :sort_field => sort_field
114
114
  }
115
- logger.debug("perform asset search using query #{query}")
115
+ query = asset_hash_to_find_query options.merge(params)
116
+ params = query.to_a.map do |(key,val)|
117
+ if val.is_a?(Array) then
118
+ val.map{|v| "#{key}=#{asset_escape_attribute(v)}"}.join("&")
119
+ elsif val.nil? then
120
+ ""
121
+ else
122
+ "#{key}=#{asset_escape_attribute(val)}"
123
+ end
124
+ end.reject{|s| s.empty?}
125
+ logger.debug("perform asset search using query #{query} - #{params.inspect}")
116
126
  http_get("/api/assets",params) do |response|
117
127
  parse_response response, :expects => 200, :as => :paginated do |json|
118
128
  json.map { |j| Collins::Asset.from_json(j) }
@@ -106,6 +106,21 @@ module Collins; module Api
106
106
  end
107
107
  end
108
108
 
109
+ # new solr interface
110
+ def search_logs options = {}
111
+ parameters = get_page_options(options).merge(
112
+ :query => get_option(:query, options, nil)
113
+ )
114
+ parameters = select_non_empty_parameters parameters
115
+ logger.debug("Fetching logs for all assets with parameters #{parameters.inspect}")
116
+ http_get("/api/assets/logs/search", parameters) do |response|
117
+ parse_response response, :as => :paginated, :default => [], :raise => strict?, :expects => 200 do |json|
118
+ json.map{|j| OpenStruct.new(symbolize_hash(j))}
119
+ end
120
+ end
121
+
122
+ end
123
+
109
124
  # Same as logs but for all assets
110
125
  # @see #logs
111
126
  def all_logs options = {}
@@ -25,7 +25,8 @@ module Collins
25
25
  # are attributes of the asset (such as hostname), and which are nort (such as sort or page).
26
26
  # @return [Array,<String>] Non-date related query parameters that are 'reserved'
27
27
  GENERAL_PARAMS = [
28
- "details", "tag", "type", "status", "page", "size", "sort", "state", "operation", "remoteLookup"
28
+ "details", "tag", "type", "status", "page", "size", "sort", "state", "operation", "remoteLookup", "query",
29
+ "sort_field"
29
30
  ]
30
31
  # @return [Array<String>] DATE_PARAMS plus GENERAL_PARAMS
31
32
  ALL_PARAMS = DATE_PARAMS + GENERAL_PARAMS
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-31 00:00:00.000000000 Z
12
+ date: 2012-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -84,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
84
  version: '0'
85
85
  segments:
86
86
  - 0
87
- hash: -1509418886285766907
87
+ hash: -117054897362145987
88
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  requirements: []
95
95
  rubyforge_project:
96
- rubygems_version: 1.8.24
96
+ rubygems_version: 1.8.23
97
97
  signing_key:
98
98
  specification_version: 3
99
99
  summary: Client library for Collins API