twingly-analytics 1.0.1 → 2.0.0

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: e31d1b593419817798bfa388cdb2b2d3c74d2708
4
- data.tar.gz: 3498b2b18671060c8119017bf9bd6ab07c18f8d4
3
+ metadata.gz: f5c4ddb79208dbda2a2171067fe2c31cabff9fbc
4
+ data.tar.gz: 8ce553588c30aba41aecf0b3a469abe2419c33d3
5
5
  SHA512:
6
- metadata.gz: e85e466d13661942b9f6b54b83dac6b9bb7537cc481525783d8863f3750133ed7e0cd68c71569e6c39d45b8c1d00ef588442415a815dbd7f81bb0276d5d76c00
7
- data.tar.gz: 580b72a3b84a9398c57401731f644515e07d4b996bd7d59186543a2a2c865d46e74c59e6b56a3504ea8cb2fb6e38b60c66115439b3f5ab400958c392afa56f8f
6
+ metadata.gz: ccaef06060bbb5f9c155d6582e8f8a1a43bc557dd0f9de6eb89d6af76755b1e7711c87c77ce541c1e55f9b873678690f228857a31d001102833477e27d9f61d7
7
+ data.tar.gz: c46959a67fcb05237e4cb3af84674822335cb841bd4b526523cd173e4039bc3033404c46a527f30d31ea184cfec45344f7b4a83d824709cddf1708103a66d437
data/.travis.yml CHANGED
@@ -1,17 +1,27 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1
7
- - 2.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1
7
+ - 2.2
8
8
  deploy:
9
9
  provider: rubygems
10
10
  api_key:
11
- secure: "QxMWXTQ3/T+0IQZl3pk3hmdoX8FcXTXEhH7Jn7Ub1A1D5faa8VNnfYsWAPjP6+VRgVfKEjAsHNMyZQNTvudpPPC/2kAwwzPvStyS+y7KnRkjZ9acC7sYVVel6cZ2lcl+t8iHY+19NRBFBWpq/P0eCAcR/Ew0XXaLZnig5h/1mQo="
11
+ secure: QxMWXTQ3/T+0IQZl3pk3hmdoX8FcXTXEhH7Jn7Ub1A1D5faa8VNnfYsWAPjP6+VRgVfKEjAsHNMyZQNTvudpPPC/2kAwwzPvStyS+y7KnRkjZ9acC7sYVVel6cZ2lcl+t8iHY+19NRBFBWpq/P0eCAcR/Ew0XXaLZnig5h/1mQo=
12
12
  gem: twingly-analytics
13
13
  gemspec: twingly-analytics-api-ruby.gemspec
14
14
  on:
15
15
  tags: true
16
16
  rvm: 2.2
17
17
  repo: twingly/twingly-analytics-api-ruby
18
+ notifications:
19
+ email: false
20
+ hipchat:
21
+ on_success: never
22
+ on_failure: change
23
+ template:
24
+ - '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} (<a href="%{build_url}">Details</a>/<a href="%{compare_url}">Change view</a>)'
25
+ format: html
26
+ rooms:
27
+ secure: KU2mE9mcqvBczfiCTgTsgMmJPyW02AH/0Rzcli7oj3HVbiHGw8t5JlBQWYROF5TPht0kFhGkiwVPl6HUt/VAGxOIBsOp+/8MXR6aK5FkdIw6g8DMKlDjm9a2QijOT9rvat5bZ3l6hm3snojgkI3s9pLKmLq9l+KalAsPcevwKAQ=
data/README.md CHANGED
@@ -7,10 +7,16 @@ A Ruby gem for Twingly's Analytics API. Twingly is a blog search service that pr
7
7
 
8
8
  ## Installation
9
9
 
10
- Add to your application's [Gemfile](http://bundler.io/gemfile.html) and then run `bundle`
10
+ Install via RubyGems
11
+
12
+ ```Shell
13
+ gem install twingly-analytics
14
+ ```
15
+
16
+ Or add to your application's [Gemfile](http://bundler.io/gemfile.html) and then run `bundle`
11
17
 
12
18
  ```Ruby
13
- gem 'twingly-analytics', github: 'twingly/twingly-analytics-api-ruby'
19
+ gem 'twingly-analytics'
14
20
  ```
15
21
 
16
22
  ## Usage
@@ -29,6 +35,8 @@ result.posts # will include all returned posts
29
35
 
30
36
  The `twinlgy-analytics` gem talks to a commercial blog search API and requires an API key. Best practice is to set the `TWINGLY_ANALYTICS_KEY` environment variable to the obtained key. `Twingly::Analytics::Client` can be passed a key at initialization if your setup does not allow environment variables.
31
37
 
38
+ Example code can be found in [examples/](examples/).
39
+
32
40
  Too learn more about the capabilities of this API you should read the [Twingly Analytics API documentation](https://developer.twingly.com/resources/analytics/).
33
41
 
34
42
  ## Requirements
@@ -1,29 +1,29 @@
1
- require 'set'
2
- require 'bundler'
3
1
  Bundler.require
4
2
 
5
- # Set environment variable TWINGLY_ANALYTICS_KEY
6
- client = Twingly::Analytics::Client.new
3
+ class AnalyticsPostStream
4
+ def initialize(keyword, language: nil)
5
+ # Set environment variable TWINGLY_ANALYTICS_KEY
6
+ client = Twingly::Analytics::Client.new
7
+ @query = client.query
8
+ @query.language = language
9
+ @query.pattern = "sort-order:asc sort:published #{keyword}"
10
+ end
7
11
 
8
- finished = nil
9
- start_time = Time.new(2013, 01, 01)
10
- blogs = Set.new
12
+ def each
13
+ loop do
14
+ result = @query.execute
15
+ result.posts.each do |post|
16
+ yield post
17
+ end
11
18
 
12
- until finished
13
- query = client.query
14
- query.pattern = "sort-order:asc sort:published github"
15
- query.start_time = start_time
16
- query.language = 'sv'
17
- result = query.execute
19
+ break if result.all_results_returned?
18
20
 
19
- result.posts.each do |post|
20
- blogs.add(post.blog_url)
21
+ @query.start_time = result.posts.last.published
22
+ end
21
23
  end
22
-
23
- finished = start_time == result.posts.last.published
24
- start_time = result.posts.last.published
25
24
  end
26
25
 
27
- blogs.each do |url|
28
- puts url
26
+ stream = AnalyticsPostStream.new("(github) AND (hipchat OR slack)")
27
+ stream.each do |post|
28
+ puts post.url
29
29
  end
@@ -0,0 +1,11 @@
1
+ Bundler.require
2
+
3
+ # Set environment variable TWINGLY_ANALYTICS_KEY
4
+ client = Twingly::Analytics::Client.new
5
+ query = client.query
6
+ query.pattern = '"hello world"'
7
+ query.start_time = Time.now - (24 * 3600) # search last day
8
+ result = query.execute
9
+ result.posts.each do |post|
10
+ puts post.url
11
+ end
@@ -3,8 +3,7 @@ require 'faraday'
3
3
  module Twingly
4
4
  module Analytics
5
5
  class Query
6
- attr_accessor :pattern, :language, :client
7
- attr_reader :start_time, :end_time
6
+ attr_accessor :pattern, :language, :client, :start_time, :end_time
8
7
 
9
8
  BASE_URL = 'https://api.twingly.com'
10
9
  ANALYTICS_PATH = '/analytics/Analytics.ashx'
@@ -21,14 +20,6 @@ module Twingly
21
20
  Parser.new.parse(get_response.body)
22
21
  end
23
22
 
24
- def start_time=(time)
25
- @start_time = time.strftime("%F %T")
26
- end
27
-
28
- def end_time=(time)
29
- @end_time = time.strftime("%F %T")
30
- end
31
-
32
23
  def url_parameters
33
24
  Faraday::Utils.build_query(request_parameters)
34
25
  end
@@ -40,20 +31,28 @@ module Twingly
40
31
  :key => client.api_key,
41
32
  :searchpattern => pattern,
42
33
  :documentlang => language,
43
- :ts => start_time,
44
- :tsTo => end_time,
34
+ :ts => ts,
35
+ :tsTo => ts_to,
45
36
  :xmloutputversion => 2
46
37
  }
47
38
  end
48
39
 
49
40
  private
50
41
 
42
+ def ts
43
+ start_time.to_time.strftime("%F %T") if start_time
44
+ end
45
+
46
+ def ts_to
47
+ end_time.to_time.strftime("%F %T") if end_time
48
+ end
49
+
51
50
  def get_response
52
51
  connection = Faraday.new(:url => BASE_URL) do |faraday|
53
52
  faraday.request :url_encoded
54
53
  faraday.adapter Faraday.default_adapter
55
54
  end
56
- connection.headers[:user_agent] = 'Ruby'
55
+ connection.headers[:user_agent] = "Twingly Analytics Ruby Client/#{VERSION}"
57
56
  connection.get(ANALYTICS_PATH, request_parameters)
58
57
  end
59
58
  end
@@ -8,6 +8,10 @@ module Twingly
8
8
  @posts ||= []
9
9
  end
10
10
 
11
+ def all_results_returned?
12
+ number_of_matches_returned.to_i == number_of_matches_total.to_i
13
+ end
14
+
11
15
  def inspect
12
16
  matches = "@posts, "
13
17
  matches << "@number_of_matches_returned=#{self.number_of_matches_returned}, "
@@ -1,5 +1,5 @@
1
1
  module Twingly
2
2
  module Analytics
3
- VERSION = '1.0.1'
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
data/spec/result_spec.rb CHANGED
@@ -9,6 +9,7 @@ describe Result do
9
9
  it { should respond_to :number_of_matches_returned }
10
10
  it { should respond_to :number_of_matches_total }
11
11
  it { should respond_to :seconds_elapsed }
12
+ it { should respond_to :all_results_returned? }
12
13
 
13
14
  context "before query has populated responses" do
14
15
  its(:posts) { should be_empty }
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rspec-its", "~> 1"
26
26
  spec.add_development_dependency "vcr", "~> 2.6"
27
27
  spec.add_development_dependency "webmock", "~> 1.0"
28
- spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "rake", "~> 0"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twingly-analytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johan Eckerström
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-06 00:00:00.000000000 Z
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -104,14 +104,14 @@ dependencies:
104
104
  name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  description: Twingly Analytics is a product from Twingly AB
@@ -129,6 +129,7 @@ files:
129
129
  - Rakefile
130
130
  - examples/Gemfile
131
131
  - examples/find_all_posts_mentioning_github.rb
132
+ - examples/hello_world.rb
132
133
  - lib/twingly-analytics.rb
133
134
  - lib/twingly-analytics/client.rb
134
135
  - lib/twingly-analytics/parser.rb
@@ -168,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
169
  version: '0'
169
170
  requirements: []
170
171
  rubyforge_project:
171
- rubygems_version: 2.4.5
172
+ rubygems_version: 2.4.5.1
172
173
  signing_key:
173
174
  specification_version: 4
174
175
  summary: Ruby API client for Twingly Analytics
@@ -184,4 +185,3 @@ test_files:
184
185
  - spec/result_spec.rb
185
186
  - spec/spec_helper.rb
186
187
  - spec/vcr_setup.rb
187
- has_rdoc: