gosquared 0.1.5 → 1.0.1
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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/Gemfile +4 -10
- data/LICENSE +21 -0
- data/README.md +138 -48
- data/lib/gosquared.rb +34 -47
- data/lib/gosquared/account.rb +79 -0
- data/lib/gosquared/client.rb +68 -0
- data/lib/gosquared/now.rb +50 -0
- data/lib/gosquared/people.rb +54 -0
- data/lib/gosquared/tracking.rb +29 -0
- data/lib/gosquared/trends.rb +44 -0
- data/spec/account_spec.rb +67 -0
- data/spec/client_spec.rb +71 -0
- data/spec/now_spec.rb +32 -0
- data/spec/people_spec.rb +51 -0
- data/spec/spec_helper.rb +105 -0
- data/spec/tracking_spec.rb +21 -0
- data/spec/trends_spec.rb +37 -0
- metadata +45 -67
- data/Rakefile +0 -14
- data/gosquared.gemspec +0 -28
- data/lib/client.rb +0 -58
- data/test/api.rb +0 -17
- data/test/event.rb +0 -19
@@ -0,0 +1,21 @@
|
|
1
|
+
describe Tracking do
|
2
|
+
subject(:gs) { described_class.new("demo", "GSN-2194840-F") }
|
3
|
+
|
4
|
+
Tracking::DIMENSIONS.each do |dimension|
|
5
|
+
before do
|
6
|
+
stub_request(:post, "https://api.gosquared.com/tracking/v1/#{dimension}?api_key=demo&site_token=GSN-2194840-F").
|
7
|
+
with(:body => "[ {\"person_id\":\"email:test@example.com\",\"properties\":{\"email\":\"test@example.com\"}} ]",
|
8
|
+
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
|
9
|
+
to_return(:status => 200, :body => "", :headers => {response: "success"})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
Tracking::DIMENSIONS.each do |dimension|
|
14
|
+
it "posts a request to the GoSquared Track API with #{dimension} dimension" do
|
15
|
+
gs.send "#{dimension}", ({person_id: "email:test@example.com",
|
16
|
+
properties:{email: "test@example.com"}})
|
17
|
+
expect(gs.post.code).to eq('200')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/spec/trends_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
describe Trends do
|
2
|
+
subject(:gs) { described_class.new("demo","GSN-106863-S") }
|
3
|
+
|
4
|
+
GoSquared::Trends::DIMENSIONS.each do |dimension|
|
5
|
+
before do
|
6
|
+
data = '{"a": [{"test": "response"}]}'
|
7
|
+
stub_request(:get, "https://api.gosquared.com/trends/v2/#{dimension}?api_key=demo&site_token=GSN-106863-S").
|
8
|
+
with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
|
9
|
+
to_return(status: 200, body: data, headers: {})
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
GoSquared::Trends::DIMENSIONS.each do |dimension|
|
14
|
+
it "fetches a request from the GoSquared Trends API with #{dimension} dimension" do
|
15
|
+
gs.send "#{dimension}"
|
16
|
+
expect(gs.fetch).to eq("a" => [{"test"=>"response"}])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
GoSquared::Trends::DIMENSIONS.each do |dimension|
|
21
|
+
before do
|
22
|
+
data = '{"a": [{"test": "response"}, {"with": "params"}]}'
|
23
|
+
stub_request(:get, "https://api.gosquared.com/trends/v2/#{dimension}?api_key=demo&site_token=GSN-106863-S&date_format=yyyy-mm-dd&format=json&from=2016-06-20&group=true&limit=5&site_token=GSN-106863-S&sort=visits&to=2016-06-30").
|
24
|
+
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Host'=>'api.gosquared.com', 'User-Agent'=>'Ruby'}).
|
25
|
+
to_return(:status => 200, :body => data, :headers => {})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
GoSquared::Trends::DIMENSIONS.each do |dimension|
|
30
|
+
it "fetches a request from the GoSquared Trends API with #{dimension} dimension and paramaters" do
|
31
|
+
gs.send("#{dimension}").from('2016-06-20').to('2016-06-30')
|
32
|
+
.date_format('yyyy-mm-dd').sort('visits').group(true).format('json').limit(5)
|
33
|
+
expect(gs.fetch).to eq("a" => [{"test"=>"response"}, {"with"=>"params"}])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
metadata
CHANGED
@@ -1,119 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gosquared
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
-
|
7
|
+
- Russell Vaughan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-07-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: webmock
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: '0
|
33
|
+
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0
|
46
|
-
|
47
|
-
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.8'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.8'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: json
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '1.7'
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '1.7'
|
78
|
-
description: For use with the API and for tracking metrics
|
40
|
+
version: '0'
|
41
|
+
description: A Ruby library for posting data from your application to the GoSquared
|
42
|
+
Tracking API and fetching metrics from the GoSquared Reporting API.
|
79
43
|
email:
|
80
|
-
-
|
44
|
+
- russell@gosquared.com
|
81
45
|
executables: []
|
82
46
|
extensions: []
|
83
47
|
extra_rdoc_files: []
|
84
48
|
files:
|
85
|
-
-
|
86
|
-
- lib/gosquared.rb
|
49
|
+
- ".rspec"
|
87
50
|
- Gemfile
|
88
|
-
-
|
89
|
-
- Rakefile
|
51
|
+
- LICENSE
|
90
52
|
- README.md
|
91
|
-
-
|
92
|
-
-
|
53
|
+
- lib/gosquared.rb
|
54
|
+
- lib/gosquared/account.rb
|
55
|
+
- lib/gosquared/client.rb
|
56
|
+
- lib/gosquared/now.rb
|
57
|
+
- lib/gosquared/people.rb
|
58
|
+
- lib/gosquared/tracking.rb
|
59
|
+
- lib/gosquared/trends.rb
|
60
|
+
- spec/account_spec.rb
|
61
|
+
- spec/client_spec.rb
|
62
|
+
- spec/now_spec.rb
|
63
|
+
- spec/people_spec.rb
|
64
|
+
- spec/spec_helper.rb
|
65
|
+
- spec/tracking_spec.rb
|
66
|
+
- spec/trends_spec.rb
|
93
67
|
homepage: https://github.com/gosquared/ruby-client
|
94
68
|
licenses: []
|
69
|
+
metadata: {}
|
95
70
|
post_install_message:
|
96
71
|
rdoc_options: []
|
97
72
|
require_paths:
|
98
73
|
- lib
|
99
74
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
75
|
requirements:
|
102
|
-
- -
|
76
|
+
- - ">="
|
103
77
|
- !ruby/object:Gem::Version
|
104
78
|
version: '0'
|
105
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
80
|
requirements:
|
108
|
-
- -
|
81
|
+
- - ">="
|
109
82
|
- !ruby/object:Gem::Version
|
110
83
|
version: '0'
|
111
84
|
requirements: []
|
112
85
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
86
|
+
rubygems_version: 2.6.6
|
114
87
|
signing_key:
|
115
|
-
specification_version:
|
116
|
-
summary:
|
88
|
+
specification_version: 4
|
89
|
+
summary: GoSquared Ruby Library
|
117
90
|
test_files:
|
118
|
-
-
|
119
|
-
-
|
91
|
+
- spec/account_spec.rb
|
92
|
+
- spec/client_spec.rb
|
93
|
+
- spec/now_spec.rb
|
94
|
+
- spec/people_spec.rb
|
95
|
+
- spec/spec_helper.rb
|
96
|
+
- spec/tracking_spec.rb
|
97
|
+
- spec/trends_spec.rb
|
data/Rakefile
DELETED
data/gosquared.gemspec
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/usr/bin/env gem build
|
2
|
-
# -*- encoding: utf-8 -*-
|
3
|
-
lib = File.expand_path('../lib/', __FILE__)
|
4
|
-
$:.unshift lib unless $:.include?(lib)
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "gosquared"
|
8
|
-
spec.version = "0.1.5"
|
9
|
-
spec.authors = ["Geoff Wagstaff"]
|
10
|
-
spec.email = ["geoff@gosquared.com"]
|
11
|
-
spec.homepage = "https://github.com/gosquared/ruby-client"
|
12
|
-
spec.summary = %q{Official GoSquared Ruby Client}
|
13
|
-
spec.description = %q{For use with the API and for tracking metrics}
|
14
|
-
|
15
|
-
# Packaged like a gem so that we can easily share it between projects
|
16
|
-
# spec.rubyforge_project = "infrastructure"
|
17
|
-
|
18
|
-
spec.files = Dir['lib/**/*', 'examples/**/*', 'benchmarks/**/*', 'Gemfile', 'gosquared.gemspec', 'Rakefile', 'README.md', 'LICENSE']
|
19
|
-
spec.executables = Dir['bin/*']
|
20
|
-
spec.test_files = Dir['test/**/*']
|
21
|
-
spec.require_paths = ['lib']
|
22
|
-
|
23
|
-
spec.add_development_dependency 'minitest', '~> 3.2'
|
24
|
-
spec.add_development_dependency 'rake', '~> 0.9'
|
25
|
-
|
26
|
-
spec.add_runtime_dependency 'faraday', '~> 0.8'
|
27
|
-
spec.add_runtime_dependency 'json', '~> 1.7'
|
28
|
-
end
|
data/lib/client.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'faraday'
|
3
|
-
require 'uri'
|
4
|
-
require_relative '../config/default'
|
5
|
-
|
6
|
-
module GoSquared
|
7
|
-
class Client
|
8
|
-
@@opts = {}
|
9
|
-
Error = Class.new(StandardError)
|
10
|
-
|
11
|
-
def initialize(opts={})
|
12
|
-
@opts = @@opts.merge(opts)
|
13
|
-
debug 1, GoSquared::DEBUG_WARNING if opts[:site_token].nil?
|
14
|
-
@opts[:debugLevel] ||= GoSquared::DEBUG_DEFAULT_LEVEL
|
15
|
-
|
16
|
-
@req_opts = {
|
17
|
-
:site_token => opts[:site_token]
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
def RESTClient
|
22
|
-
@RESTClient ||= Faraday.new(:url => @url)
|
23
|
-
end
|
24
|
-
|
25
|
-
def get(path, query_params={})
|
26
|
-
response = RESTClient().get do | req |
|
27
|
-
req.url url + path
|
28
|
-
req.params = @req_opts.merge(query_params)
|
29
|
-
end
|
30
|
-
return false unless response.status.to_s.start_with?("20")
|
31
|
-
parse(response.body)
|
32
|
-
end
|
33
|
-
|
34
|
-
def post(path, query_params, post_body="")
|
35
|
-
response = RESTClient().post do | req |
|
36
|
-
req.url url + path
|
37
|
-
req.headers['Content-Type'] = 'application/json'
|
38
|
-
req.params = @req_opts.merge(query_params)
|
39
|
-
req.body = post_body
|
40
|
-
end
|
41
|
-
return false unless response.status.to_s.start_with?("20")
|
42
|
-
parse(response.body)
|
43
|
-
end
|
44
|
-
|
45
|
-
def parse(content)
|
46
|
-
JSON.parse(content)
|
47
|
-
end
|
48
|
-
|
49
|
-
def debug(code, level, extra)
|
50
|
-
return true if (@opts[:debugLevel] & level).zero?
|
51
|
-
|
52
|
-
stream = level > GoSquared::DEBUG_LEVELS[:NOTICE] ? $stdout : $stderr
|
53
|
-
|
54
|
-
# Errors are machine-parseable
|
55
|
-
stream.printf "[GoSquared][%s]:%s\n", level, JSON.generate({message: GoSquared::DEBUG_CODES[code], code: code, extra: extra})
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/test/api.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
|
3
|
-
require 'gosquared'
|
4
|
-
|
5
|
-
describe GoSquared do
|
6
|
-
before do
|
7
|
-
@gosquared = GoSquared::API.new({:site_token => "GSN-106863-S", :api_key => "demo"})
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "getting functions" do
|
11
|
-
GoSquared::API_FUNCTIONS.each do | func_name |
|
12
|
-
it "gets #{func_name}" do
|
13
|
-
response = @gosquared.send(func_name)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/test/event.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
|
3
|
-
require 'gosquared'
|
4
|
-
|
5
|
-
describe GoSquared do
|
6
|
-
before do
|
7
|
-
@gosquared = GoSquared::Event.new({:site_token => "GSN-106863-S"})
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "storing events" do
|
11
|
-
it "stores an event with name and parameters" do
|
12
|
-
response = @gosquared.store_event "Test Event", {:random => "params", :cause => "I can"}
|
13
|
-
end
|
14
|
-
|
15
|
-
it "stores an event with name and without parameters" do
|
16
|
-
response = @gosquared.store_event "Test Event"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|