konstati 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +23 -24
- data/examples/account_info.rb +11 -0
- data/examples/create_spamassassin_test.rb +17 -0
- data/lib/konstati.rb +34 -22
- data/lib/konstati/account.rb +15 -0
- data/lib/konstati/tests.rb +22 -0
- metadata +25 -5
data/README.markdown
CHANGED
@@ -20,7 +20,8 @@ Use RubyGems to install this library:
|
|
20
20
|
|
21
21
|
Konstati uses HTTP basic authentication, which can be setup using:
|
22
22
|
|
23
|
-
Konstati
|
23
|
+
Konstati.username = "user"
|
24
|
+
Konstati.apikey = "apikey"
|
24
25
|
|
25
26
|
If authentication fails, Konstati will return 401 Unauhtorized.
|
26
27
|
|
@@ -30,56 +31,54 @@ If authentication fails, Konstati will return 401 Unauhtorized.
|
|
30
31
|
|
31
32
|
This is a sample request:
|
32
33
|
|
33
|
-
result = Konstati::Tests
|
34
|
+
result = Konstati::Tests.create(
|
34
35
|
:bodyHtml => "<p>Hello World</p>", # required
|
35
36
|
:bodyText => "Hello World", # optional
|
36
37
|
:subject => "Free stuff!", # required
|
37
38
|
:fromEmail => "email@example.com", # required
|
38
39
|
:fromName => "John Doe", # required
|
39
|
-
:lang => "pt_BR", # required
|
40
40
|
:customer => "mycustomerlogin" # optional
|
41
41
|
)
|
42
42
|
|
43
43
|
The result will contain the following data:
|
44
44
|
|
45
|
-
id
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# "score" and "tips" (may be empty)
|
45
|
+
id # (String) unique test id, you can use this to query it later
|
46
|
+
emailMessage # (Hash) contains all message-related parameters specified in the request
|
47
|
+
customer # (String) optional customer name/login supplied in the request
|
48
|
+
lang # (String) language used on the results
|
49
|
+
type # (String) type of test (currently only spamassassin)
|
50
|
+
status # (String) status of the spam test (done/processing/error/cancelled)
|
51
|
+
startedAt # (Float) when the test was started (in seconds)
|
52
|
+
updatedAt # (Float) when the test was last updated (in seconds)
|
53
|
+
totalRuntime # (Float) time it took for the test to be processed (in seconds)
|
54
|
+
result # (Hash) contains all test result fields (score, isSpam, matchedRules)
|
56
55
|
|
57
56
|
### Get a Test Result
|
58
57
|
|
59
|
-
result = Konstati::Tests
|
58
|
+
result = Konstati::Tests.find("4d54f05b898d2994e41dde8b")
|
60
59
|
|
61
60
|
If test does not exist, 404 Not Found will be raised.
|
62
61
|
|
63
62
|
### List Test Results
|
64
63
|
|
65
|
-
results = Konstati::Tests
|
64
|
+
results = Konstati::Tests.find(:params => {})
|
66
65
|
|
67
66
|
Optional parameters in :params may be used to filter results. Available parameters are **lang**,
|
68
|
-
**status** and **customer**. Each parameter can be used alone or
|
67
|
+
**status** and **customer**. Each parameter can be used alone or with other(s).
|
69
68
|
|
70
69
|
Here are some examples:
|
71
70
|
|
72
71
|
# all tests performed by "johndoe"
|
73
|
-
results = Konstati::Tests
|
72
|
+
results = Konstati::Tests.find(:params => {:customer => "johndoe"})
|
74
73
|
|
75
|
-
# all tests in
|
76
|
-
results = Konstati::Tests
|
74
|
+
# all tests in pt by "johndoe"
|
75
|
+
results = Konstati::Tests.find(:params => {:customer => "johndoe", :lang => "pt"})
|
77
76
|
|
78
|
-
# all tests with "done" status in "
|
79
|
-
results = Konstati::Tests
|
77
|
+
# all tests with "done" status in "en"
|
78
|
+
results = Konstati::Tests .find(:params => {:status => "done", :lang => "en"})
|
80
79
|
|
81
80
|
You can also perform pagination using **perPage** and **pageNumber** parameters. Default behavior is to
|
82
81
|
return the first 20 results. These parameters can also be used together with filters:
|
83
82
|
|
84
|
-
# give me 40 tests performed by "johndoe" in
|
85
|
-
results = Konstati::Tests
|
83
|
+
# give me 40 tests performed by "johndoe" in pt
|
84
|
+
results = Konstati::Tests.find(:params => {:lang => "en", :perPage => 40, :customer => "johndoe"})
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require '../lib/konstati'
|
2
|
+
require '../lib/konstati/account'
|
3
|
+
|
4
|
+
Konstati.username = ''
|
5
|
+
Konstati.apikey = ''
|
6
|
+
|
7
|
+
info = Konstati::Account.info
|
8
|
+
|
9
|
+
credits = info['rateLimit']['max'] - info['rateLimit']['current']
|
10
|
+
|
11
|
+
puts "I still have #{credits} credits left."
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require '../lib/konstati'
|
2
|
+
|
3
|
+
Konstati.username = ''
|
4
|
+
Konstati.apikey = ''
|
5
|
+
|
6
|
+
test = Konstati::Test.create(
|
7
|
+
:type => "spamassassin",
|
8
|
+
:bodyHtml => "<p>Hello World</p>",
|
9
|
+
:bodyText => "Hello World",
|
10
|
+
:subject => "CHEAP VIAGRA!!!!",
|
11
|
+
:fromEmail => "email@example.com",
|
12
|
+
:fromName => "John Doe",
|
13
|
+
:lang => "pt",
|
14
|
+
:customer => "mycustomerlogin"
|
15
|
+
)
|
16
|
+
|
17
|
+
puts "This email has scored #{test['result']['score']} points in SpamAssassin."
|
data/lib/konstati.rb
CHANGED
@@ -1,39 +1,51 @@
|
|
1
|
-
require
|
1
|
+
require 'restclient'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require File.dirname(__FILE__) + '/konstati/account'
|
5
|
+
require File.dirname(__FILE__) + '/konstati/tests'
|
2
6
|
|
3
7
|
module Konstati
|
4
8
|
|
5
|
-
|
9
|
+
VERSION = '0.2.0'
|
6
10
|
|
7
|
-
|
11
|
+
def self.endpoint
|
12
|
+
@endpoint ||= "https://api.konstati.co/v1"
|
13
|
+
end
|
8
14
|
|
9
|
-
self.
|
10
|
-
|
11
|
-
|
15
|
+
def self.endpoint=(val)
|
16
|
+
@endpoint = val
|
17
|
+
end
|
12
18
|
|
13
|
-
def self.
|
14
|
-
|
15
|
-
self.password = options[:password]
|
19
|
+
def self.username
|
20
|
+
@username
|
16
21
|
end
|
17
22
|
|
18
|
-
def self.
|
19
|
-
|
20
|
-
"#{prefix(prefix_options)}#{collection_name}/#{id}#{query_string(query_options)}"
|
23
|
+
def self.username=(val)
|
24
|
+
@username = val
|
21
25
|
end
|
22
26
|
|
23
|
-
def self.
|
24
|
-
|
25
|
-
"#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
|
27
|
+
def self.apikey=(val)
|
28
|
+
@apikey = val
|
26
29
|
end
|
27
|
-
end
|
28
30
|
|
29
|
-
|
31
|
+
def self.apikey
|
32
|
+
@apikey
|
33
|
+
end
|
30
34
|
|
31
|
-
|
32
|
-
|
33
|
-
self.collection_name = "tests/spamassassin"
|
34
|
-
self.element_name = "tests/spamassassin"
|
35
|
+
def self.resource(path)
|
36
|
+
RestClient::Resource.new(@endpoint + path, @username, @apikey)
|
35
37
|
end
|
36
38
|
|
37
|
-
|
39
|
+
def self.request(method, path, params = {})
|
40
|
+
JSON.parse(
|
41
|
+
RestClient::Request.execute(
|
42
|
+
:method => method,
|
43
|
+
:url => endpoint + path,
|
44
|
+
:payload => params,
|
45
|
+
:user => @username,
|
46
|
+
:password => @apikey
|
47
|
+
)
|
48
|
+
)
|
49
|
+
end
|
38
50
|
|
39
51
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Konstati
|
4
|
+
class Account
|
5
|
+
|
6
|
+
def self.initialize
|
7
|
+
puts 'bola'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.info
|
11
|
+
Konstati.request("get", "/account")
|
12
|
+
# RestClient::Resource.new(Konstati::Config.endpoint + '/account', Konstati::Config.username, Konstati::Config.apikey).get
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Konstati
|
2
|
+
|
3
|
+
class Tests
|
4
|
+
|
5
|
+
def self.create(params)
|
6
|
+
Konstati.request(:post, '/tests', params)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.find(params = {})
|
10
|
+
Konstati.request(:get, '/tests', params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.delete(id)
|
14
|
+
Konstati.request(:delete, '/tests/' + id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get(id)
|
18
|
+
Konstati.request(:get, '/tests/' + id)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: konstati
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pedro Padron
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-18 00:00:00 -03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: json
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
@@ -32,6 +32,20 @@ dependencies:
|
|
32
32
|
version: "0"
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: restclient
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
35
49
|
description: Ruby client to the Konstati API
|
36
50
|
email: ppadron@w3p.com.br
|
37
51
|
executables: []
|
@@ -41,8 +55,14 @@ extensions: []
|
|
41
55
|
extra_rdoc_files:
|
42
56
|
- README.markdown
|
43
57
|
- LICENSE
|
58
|
+
- examples/account_info.rb
|
59
|
+
- examples/create_spamassassin_test.rb
|
44
60
|
files:
|
45
61
|
- lib/konstati.rb
|
62
|
+
- lib/konstati/account.rb
|
63
|
+
- lib/konstati/tests.rb
|
64
|
+
- examples/account_info.rb
|
65
|
+
- examples/create_spamassassin_test.rb
|
46
66
|
- README.markdown
|
47
67
|
- LICENSE
|
48
68
|
has_rdoc: true
|