trend 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 9a0e816457dabd59905b38ec854e53a3bb565e0a55d76ce87ac0d191a3134a9a
4
- data.tar.gz: ceefde2ec29a66596f995e5a9a4c8847d5c839a37e4c0fa84a835eba035ee3df
3
+ metadata.gz: a83763d819e0962a0c4c7ca0cb0f5af76852be87becd30bbd341b12246a7510b
4
+ data.tar.gz: ed4b4e58dc20df46dfdb7d252f4dcf680494bb38b901301c002a5a309f840344
5
5
  SHA512:
6
- metadata.gz: 383959b7c7ba1331b3f4f5607825e410cf74ef047bf299a3e98fbc0c24bf003e2a9753103ea438b65b1a22d8cf4f6274a55dba2aa87b25ed5a28d041456f3ae0
7
- data.tar.gz: a4c1bf226d83f76f4a1d4bffb431276b1f9a1fda548d05301efd1053dab8a724fe8bdd069f766e0d2d9cdc06a45dd9fe5936e6b258b8fd57d8e481ce05edb714
6
+ metadata.gz: 042cd0604e706892b96009608827b6ec4cc14336d20d15779de0f6c0bb05bace81b16691d1c78168449041efe1a308c4fccc46ac9ef7b8ff98a44f4ecaa948b6
7
+ data.tar.gz: dd854dc3931e03260eb236fe7d40f7f3da2cb830676472e0d5a9d48c568274e0dae40b47b208cba31dba70e45e2bf503e353eb746283162eca6d3ebeaf566f6c
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm: 2.5.1
3
+ gemfile:
4
+ - Gemfile
5
+ sudo: false
6
+ before_install: gem install bundler
7
+ script: bundle exec rake test
8
+ notifications:
9
+ email:
10
+ on_success: never
11
+ on_failure: change
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.1.1
2
+
3
+ - Added support for API keys
4
+ - Added experimental `correlation` method
5
+
1
6
  ## 0.1.0
2
7
 
3
8
  - First release
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Trend
2
2
 
3
- Ruby client for [Trend](https://trendapi.org), the time series API
3
+ Ruby client for [Trend](https://trendapi.org), the anomaly detection and forecasting API
4
+
5
+ [![Build Status](https://travis-ci.org/ankane/trend.svg?branch=master)](https://travis-ci.org/ankane/trend)
4
6
 
5
7
  ## Getting Started
6
8
 
@@ -10,7 +12,7 @@ Add this line to your application’s Gemfile:
10
12
  gem 'trend'
11
13
  ```
12
14
 
13
- ### Anomalies
15
+ ### Anomaly Detection
14
16
 
15
17
  Detect anomalies in a time series
16
18
 
@@ -36,7 +38,7 @@ series = User.group_by_day(:created_at).count
36
38
  Trend.anomalies(series)
37
39
  ```
38
40
 
39
- ### Forecast
41
+ ### Forecasting
40
42
 
41
43
  Get future predictions for a time series
42
44
 
@@ -64,6 +66,24 @@ Specify the number of predictions to return
64
66
  Trend.forecast(series, count: 3)
65
67
  ```
66
68
 
69
+ ### Correlation [experimental]
70
+
71
+ Get the correlation between two time series
72
+
73
+ ```ruby
74
+ Trend.correlation(series, series2)
75
+ ```
76
+
77
+ ## Authentication
78
+
79
+ An API key is needed for more than 1000 requests per day per IP. [Email us](mailto:hi@trendapi.org) to get one.
80
+
81
+ If you have one, set `ENV["TREND_API_KEY"]` or use:
82
+
83
+ ```ruby
84
+ Trend.api_key = "secret"
85
+ ```
86
+
67
87
  ## History
68
88
 
69
89
  View the [changelog](https://github.com/ankane/trend/blob/master/CHANGELOG.md)
data/lib/trend/client.rb CHANGED
@@ -1,13 +1,16 @@
1
+ require "trend/version"
2
+
1
3
  module Trend
2
4
  class Client
3
5
  HEADERS = {
4
6
  "Content-Type" => "application/json",
5
- "Accept" => "application/json"
7
+ "Accept" => "application/json",
8
+ "User-Agent" => "trend-ruby/#{Trend::VERSION}"
6
9
  }
7
10
 
8
- def initialize(url: nil)
9
- url ||= Trend.url
10
- @uri = URI.parse(url)
11
+ def initialize(url: nil, api_key: nil)
12
+ @api_key = api_key || Trend.api_key
13
+ @uri = URI.parse(url || Trend.url)
11
14
  @http = Net::HTTP.new(@uri.host, @uri.port)
12
15
  @http.use_ssl = true if @uri.scheme == "https"
13
16
  @http.open_timeout = 3
@@ -24,6 +27,11 @@ module Trend
24
27
  Hash[resp["forecast"].map { |k, v| [parse_time(k), v] }]
25
28
  end
26
29
 
30
+ def correlation(series, series2, params = {})
31
+ resp = make_request("correlation", series, params.merge(series2: series2))
32
+ resp["correlation"]
33
+ end
34
+
27
35
  private
28
36
 
29
37
  def make_request(path, series, params)
@@ -31,6 +39,8 @@ module Trend
31
39
  series: series
32
40
  }.merge(params)
33
41
 
42
+ path = "#{path}?#{URI.encode_www_form(api_key: @api_key)}" if @api_key
43
+
34
44
  begin
35
45
  response = @http.post("/#{path}", post_data.to_json, HEADERS)
36
46
  rescue Errno::ECONNREFUSED, Timeout::Error => e
data/lib/trend/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Trend
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/trend.rb CHANGED
@@ -17,6 +17,10 @@ module Trend
17
17
  client.forecast(*args)
18
18
  end
19
19
 
20
+ def self.correlation(*args)
21
+ client.correlation(*args)
22
+ end
23
+
20
24
  def self.url
21
25
  @url ||= ENV["TREND_URL"] || "https://trendapi.org"
22
26
  end
@@ -26,6 +30,15 @@ module Trend
26
30
  @client = nil
27
31
  end
28
32
 
33
+ def self.api_key
34
+ @api_key ||= ENV["TREND_API_KEY"]
35
+ end
36
+
37
+ def self.api_key=(api_key)
38
+ @api_key = api_key
39
+ @client = nil
40
+ end
41
+
29
42
  # private
30
43
  def self.client
31
44
  @client ||= Client.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-24 00:00:00.000000000 Z
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -74,6 +74,7 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - ".travis.yml"
77
78
  - CHANGELOG.md
78
79
  - Gemfile
79
80
  - LICENSE.txt
@@ -103,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
104
  version: '0'
104
105
  requirements: []
105
106
  rubyforge_project:
106
- rubygems_version: 2.7.6
107
+ rubygems_version: 2.7.7
107
108
  signing_key:
108
109
  specification_version: 4
109
110
  summary: Ruby client for Trend, the time series API