collins_client 0.2.11 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16ab54b81d038f140c59584b761713f4d771c21b
4
- data.tar.gz: 0c377aa52c3a063a6e08535372e9acfb14bddc4c
3
+ metadata.gz: 42f443869d38df5e776cc352fbd070a6c987b182
4
+ data.tar.gz: 2706390265c708a02a1d7f911fc8d370000fa842
5
5
  SHA512:
6
- metadata.gz: 2716ad0b825440c3a212850f9951cb5e67eef0950db86ab251cbbb2ad3c61610e050d6dcdd24a9b9e257ec3c12e2cddf44ce8e98738b1a7ca4150228b05f1c30
7
- data.tar.gz: 085a10106bd8c24202858a3bdbc0e0ab492313b56d87d54c07956301d8be3676054545a75f18a610dee4e33283ddb243c667956d8b051eae80f64b28fa9dafba
6
+ metadata.gz: 1c4a51bc5f16121738a5d89d69d8a5f77cc9a23563eb0159b87f82bf3d03ecd668a26417abde9ecc611979cc35b7faf9797bcb9a2e868fde95743e145bee1204
7
+ data.tar.gz: a236080e09f67961e04d842e73af11a8d20495ef5d2eb9707439cd42f0dd9f62e5937e1d48e4988e98f2506890599c7493d1ccdb99475ec1c16697e43ed7e48e
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
 
3
3
  gem 'httparty', '~> 0.8.3'
4
4
 
data/Gemfile.lock CHANGED
@@ -1,5 +1,5 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.3.2)
5
5
  crack (0.3.1)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.11
1
+ 0.2.15
@@ -8,10 +8,10 @@ Gem::Specification.new do |s|
8
8
  s.version = File.read 'VERSION'
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Blake Matheny", "Gabe Conradi"]
12
- s.date = "2014-08-08"
11
+ s.authors = ["Blake Matheny", "Gabe Conradi", "Will Richard"]
12
+ s.date = "2015-03-17"
13
13
  s.description = "Provides ruby support for interacting with the Collins API"
14
- s.email = ["bmatheny@tumblr.com","gabe@tumblr.com"]
14
+ s.email = ["accounts@tumblr.com","gabe@tumblr.com","will@tumblr.com"]
15
15
  s.extra_rdoc_files = [
16
16
  "README.md"
17
17
  ]
@@ -123,6 +123,40 @@ module Collins; module Api
123
123
  end
124
124
  end
125
125
 
126
+ # Count number of assets matching the specified criteria
127
+ #
128
+ # @param [Hash] options Query options (same as in the "find" method)
129
+ # @return integer The number of assets matching the query
130
+ # @raise [UnexpectedResponseError] If the HTTP response code is not a 200
131
+ def count options = {}
132
+ # create a copy so that we do not modify the original options array
133
+ options = options.dup
134
+
135
+ if options.include? :size or options.include? :page
136
+ raise ExpectationFailedError.new "Do not specify 'size' or 'page' options when counting assets"
137
+ else
138
+ options[:size] = 1
139
+ options[:page] = 0
140
+ end
141
+
142
+ query = asset_hash_to_find_query options
143
+ params = query.to_a.map do |param|
144
+ key, val = param
145
+ if val.is_a?(Array)
146
+ val.map{|v| "#{key}=#{asset_escape_attribute(v)}"}.join("&")
147
+ else
148
+ "#{key}=#{asset_escape_attribute(val)}"
149
+ end
150
+ end.reject{|s| s.empty?}
151
+
152
+ logger.debug("Counting assets using params #{params.inspect}")
153
+ http_get("/api/assets", params) do |response|
154
+ parse_response response, :expects => 200, :as => :data do |json|
155
+ json["Pagination"]["TotalResults"].to_i
156
+ end
157
+ end
158
+ end
159
+
126
160
  private
127
161
  def asset_escape_attribute value
128
162
  URI.escape(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
@@ -58,7 +58,7 @@ module Collins; module Api
58
58
  # @param [String,Collins::Asset] asset_or_tag
59
59
  # @param [String] message
60
60
  # @param [Severity] level severity level to use
61
- # @return [Boolean] true if logged successfully
61
+ # @return [OpenStruct] The log struct created
62
62
  # @raise [Collins::ExpectationFailed] the specified level was invalid
63
63
  # @raise [Collins::RequestError,Collins::UnexpectedResponseError] if the asset or message invalid
64
64
  def log! asset_or_tag, message, level = nil
@@ -70,7 +70,9 @@ module Collins; module Api
70
70
  parameters = select_non_empty_parameters parameters
71
71
  logger.debug("Logging to #{asset.tag} with parameters #{parameters.inspect}")
72
72
  http_put("/api/asset/#{asset.tag}/log", parameters, asset.location) do |response|
73
- parse_response response, :as => :status, :expects => 201
73
+ parse_response response, :as => :paginated, :expects => 201 do |json|
74
+ OpenStruct.new(symbolize_hash(json))
75
+ end
74
76
  end
75
77
  end
76
78
 
@@ -84,7 +86,7 @@ module Collins; module Api
84
86
  # @option options [Fixnum] :size (25) Number of results to retrieve
85
87
  # @option options [String] :sort (DESC) Sort ordering for results
86
88
  # @option options [String] :filter Semicolon separated list of severity levels to include or exclude
87
- # @option options [String] :all_tag If specified, an asset tag is this value, proxy to the all_logs method
89
+ # @option options [String] :all_tag If specified, and asset tag is set to :all_tag, proxy to the all_logs method
88
90
  # @note To exclude a level via a filter it must be prepended with a `!`
89
91
  # @return [Array<OpenStruct>] Array of log objects
90
92
  # @raise [Collins::UnexpectedResponseError] on a non-200 response
@@ -136,6 +138,19 @@ module Collins; module Api
136
138
  end
137
139
  end
138
140
 
141
+ # Get a log, given its id
142
+ # @param [Int] id The log id to retrieve
143
+ # @return [OpenStruct] The log openstruct
144
+ # @raise [Collins::UnexpectedResponseError] on a non-200 response
145
+ def get_log id
146
+ logger.debug("Fetching log #{id}")
147
+ http_get("/api/log/#{id}") do |response|
148
+ parse_response response, :as => :paginated, :default => nil, :raise => strict?, :expects => 200 do |json|
149
+ OpenStruct.new(symbolize_hash(json))
150
+ end
151
+ end
152
+ end
153
+
139
154
  private
140
155
  def log_level_from_string level
141
156
  return nil if (level.nil? || level.empty?)
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Matheny
8
8
  - Gabe Conradi
9
+ - Will Richard
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2014-08-08 00:00:00 Z
14
+ date: 2015-03-17 00:00:00 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: httparty
@@ -24,8 +25,9 @@ dependencies:
24
25
  version_requirements: *id001
25
26
  description: Provides ruby support for interacting with the Collins API
26
27
  email:
27
- - bmatheny@tumblr.com
28
+ - accounts@tumblr.com
28
29
  - gabe@tumblr.com
30
+ - will@tumblr.com
29
31
  executables: []
30
32
 
31
33
  extensions: []
@@ -94,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
96
  requirements: []
95
97
 
96
98
  rubyforge_project:
97
- rubygems_version: 2.4.1
99
+ rubygems_version: 2.3.0
98
100
  signing_key:
99
101
  specification_version: 3
100
102
  summary: Client library for Collins API