inkling_api 0.0.2 → 0.0.3
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.
- data/inkling_api.gemspec +4 -1
- data/lib/inkling_api.rb +75 -1
- data/lib/inkling_api/faraday_middlewares/response_xml_slop.rb +1 -1
- data/lib/inkling_api/version.rb +1 -1
- data/spec/inkling_api_spec.rb +32 -1
- metadata +55 -22
data/inkling_api.gemspec
CHANGED
@@ -23,8 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency('hashie', '~> 1.1.0')
|
24
24
|
s.add_dependency('activesupport', '~> 3.0.9')
|
25
25
|
s.add_dependency('i18n', '~> 0.6.0')
|
26
|
+
s.add_dependency('httparty', '~> 0.7.8')
|
27
|
+
s.add_dependency('builder', '~> 3.0.0')
|
26
28
|
|
27
|
-
s.add_development_dependency('rspec')
|
29
|
+
s.add_development_dependency('rspec', '~> 2.6.0')
|
30
|
+
s.add_development_dependency('rspec-core', '~> 2.6.0')
|
28
31
|
s.add_development_dependency('json_spec', '~> 0.6.0')
|
29
32
|
s.add_development_dependency('shoulda', '~> 2.11.3')
|
30
33
|
s.add_development_dependency('ruby-debug19')
|
data/lib/inkling_api.rb
CHANGED
@@ -2,6 +2,7 @@ require 'faraday_stack'
|
|
2
2
|
require 'inkling_api/faraday_middlewares'
|
3
3
|
require 'hashie/mash'
|
4
4
|
require 'inkling_api/activesupport_yaml_hack'
|
5
|
+
require 'ruby-debug'
|
5
6
|
|
6
7
|
module InklingApi
|
7
8
|
module Configuration
|
@@ -43,11 +44,12 @@ module InklingApi
|
|
43
44
|
raise "set_url first" unless @url
|
44
45
|
@connection ||= begin
|
45
46
|
conn = Faraday.new(@url) do |b|
|
47
|
+
b.use Faraday::Request::UrlEncoded
|
46
48
|
b.use FaradayStack::ResponseJSON, content_type: 'application/json'
|
47
49
|
b.use FaradayMiddlewares::ResponseXMLToHash, content_type: 'application/xml'
|
48
50
|
b.use PreserveRawBody
|
49
51
|
#b.use FaradayStack::Caching, cache, strip_params: %w[access_token client_id] unless cache.nil?
|
50
|
-
b.response :raise_error
|
52
|
+
#b.response :raise_error
|
51
53
|
#b.use Faraday::Response::Logger
|
52
54
|
b.use FaradayStack::Instrumentation
|
53
55
|
b.adapter Faraday.default_adapter
|
@@ -65,6 +67,32 @@ module InklingApi
|
|
65
67
|
request.params = params if params
|
66
68
|
end
|
67
69
|
end
|
70
|
+
|
71
|
+
def post(path, payload, params = nil)
|
72
|
+
connection.post do |request|
|
73
|
+
request.url path
|
74
|
+
request.headers['Content-Type'] = 'application/xml'
|
75
|
+
request.body = payload
|
76
|
+
request.params if params
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def put(path, payload, params = nil)
|
81
|
+
connection.put do |request|
|
82
|
+
request.url path
|
83
|
+
request.headers['Content-Type'] = 'application/xml'
|
84
|
+
request.body = payload
|
85
|
+
request.params if params
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def delete(path, params = nil)
|
90
|
+
connection.delete(path)
|
91
|
+
end
|
92
|
+
|
93
|
+
def publish(path, params = nil)
|
94
|
+
connection.post(path)
|
95
|
+
end
|
68
96
|
end
|
69
97
|
|
70
98
|
module ApiMethods
|
@@ -74,6 +102,30 @@ module InklingApi
|
|
74
102
|
raw ? response.env[:raw_body] : response.body
|
75
103
|
end
|
76
104
|
|
105
|
+
def post(path, payload, params = nil)
|
106
|
+
raw = params && params.delete(:raw)
|
107
|
+
response = super
|
108
|
+
raw ? response.env[:raw_body] : response.body
|
109
|
+
end
|
110
|
+
|
111
|
+
def put(path, payload, params = nil)
|
112
|
+
raw = params && params.delete(:raw)
|
113
|
+
response = super
|
114
|
+
raw ? response.env[:raw_body] : response.body
|
115
|
+
end
|
116
|
+
|
117
|
+
def delete(path, params = nil)
|
118
|
+
raw = params && params.delete(:raw)
|
119
|
+
response = super
|
120
|
+
raw ? response.enc[:raw_body] : response.body
|
121
|
+
end
|
122
|
+
|
123
|
+
def publish(path, params = nil)
|
124
|
+
raw = params && params.delete(:raw)
|
125
|
+
response = super
|
126
|
+
raw ? response.enc[:raw_body] : response.body
|
127
|
+
end
|
128
|
+
|
77
129
|
def market(market_id, *args)
|
78
130
|
get("markets/#{market_id}.xml", *args)
|
79
131
|
end
|
@@ -81,6 +133,28 @@ module InklingApi
|
|
81
133
|
def markets(*args)
|
82
134
|
get("markets.json", *args)
|
83
135
|
end
|
136
|
+
|
137
|
+
def new_market(question, class_type, ends_at, tag_list)
|
138
|
+
market_data = { :'name' => question,
|
139
|
+
:'class-type' => class_type,
|
140
|
+
:'ends-at' => ends_at,
|
141
|
+
:'tag-list' => tag_list
|
142
|
+
}
|
143
|
+
post("markets.xml", market_data.to_xml(:root => "market"), :content_type => 'application/xml')
|
144
|
+
end
|
145
|
+
|
146
|
+
def update_market(market_id, question)
|
147
|
+
market_data = { :'name' => question }
|
148
|
+
put("markets/#{market_id}.xml", market_data.to_xml(:root => "market"), :content_type => 'application/xml')
|
149
|
+
end
|
150
|
+
|
151
|
+
def delete_market(market_id)
|
152
|
+
delete("markets/#{market_id}.xml", :content_type => 'application/xml')
|
153
|
+
end
|
154
|
+
|
155
|
+
def publish_market(market_id)
|
156
|
+
publish("markets/#{market_id}.xml", :content_type => 'application/xml')
|
157
|
+
end
|
84
158
|
end
|
85
159
|
|
86
160
|
extend Configuration
|
data/lib/inkling_api/version.rb
CHANGED
data/spec/inkling_api_spec.rb
CHANGED
@@ -14,7 +14,8 @@ describe InklingApi do
|
|
14
14
|
InklingApi
|
15
15
|
end
|
16
16
|
|
17
|
-
%w( configure connection get markets market
|
17
|
+
%w( configure connection get post put delete markets market new_market
|
18
|
+
update_market delete_market publish_market).each do |meth|
|
18
19
|
it "should respond to #{meth}" do
|
19
20
|
inkling_api.should respond_to(meth.to_sym)
|
20
21
|
end
|
@@ -33,4 +34,34 @@ describe InklingApi do
|
|
33
34
|
markets = inkling_api.markets
|
34
35
|
inkling_api.market(markets.first["id"]).should be_a(Hash)
|
35
36
|
end
|
37
|
+
|
38
|
+
it "should create a market" do
|
39
|
+
question = "Is this test going to pass?"
|
40
|
+
class_type = "Exclusive"
|
41
|
+
ends_at = "2014-05-05T02:20:30-05:00"
|
42
|
+
tag_list = "tests"
|
43
|
+
inkling_api.new_market(question, class_type, ends_at, tag_list)["market"]["id"].should_not be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should update a market" do
|
47
|
+
market_id = 37810
|
48
|
+
question = "Testing predicition widget"
|
49
|
+
# FIXME: This will raise a <Faraday::Error::ParsingError> because it expects XML to be returned
|
50
|
+
# However, Inkling Markets returns nothing when updating existing markets
|
51
|
+
# inkling_api.update_market(market_id, question).should be_a(String)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should delete a market" do
|
55
|
+
market_id = 38271
|
56
|
+
lambda do
|
57
|
+
inkling_api.delete_market(market_id)
|
58
|
+
end.should_not raise_error
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should publish a market" do
|
62
|
+
market_id = 38370
|
63
|
+
lambda do
|
64
|
+
inkling_api.publish_market(market_id)
|
65
|
+
end.should_not raise_error
|
66
|
+
end
|
36
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inkling_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,12 +11,12 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-08-
|
14
|
+
date: 2011-08-15 00:00:00.000000000 +00:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: faraday
|
19
|
-
requirement: &
|
19
|
+
requirement: &21966720 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 0.7.4
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *21966720
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: faraday-stack
|
30
|
-
requirement: &
|
30
|
+
requirement: &21966220 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: 0.1.3
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *21966220
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: hashie
|
41
|
-
requirement: &
|
41
|
+
requirement: &21965760 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: 1.1.0
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *21965760
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: activesupport
|
52
|
-
requirement: &
|
52
|
+
requirement: &21965300 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ~>
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: 3.0.9
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *21965300
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: i18n
|
63
|
-
requirement: &
|
63
|
+
requirement: &21964840 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
@@ -68,21 +68,54 @@ dependencies:
|
|
68
68
|
version: 0.6.0
|
69
69
|
type: :runtime
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *21964840
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: httparty
|
74
|
+
requirement: &21964380 !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.7.8
|
80
|
+
type: :runtime
|
81
|
+
prerelease: false
|
82
|
+
version_requirements: *21964380
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: builder
|
85
|
+
requirement: &21963920 !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 3.0.0
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: *21963920
|
72
94
|
- !ruby/object:Gem::Dependency
|
73
95
|
name: rspec
|
74
|
-
requirement: &
|
96
|
+
requirement: &21963460 !ruby/object:Gem::Requirement
|
75
97
|
none: false
|
76
98
|
requirements:
|
77
|
-
- -
|
99
|
+
- - ~>
|
78
100
|
- !ruby/object:Gem::Version
|
79
|
-
version:
|
101
|
+
version: 2.6.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: *21963460
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: rspec-core
|
107
|
+
requirement: &21963000 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ~>
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 2.6.0
|
80
113
|
type: :development
|
81
114
|
prerelease: false
|
82
|
-
version_requirements: *
|
115
|
+
version_requirements: *21963000
|
83
116
|
- !ruby/object:Gem::Dependency
|
84
117
|
name: json_spec
|
85
|
-
requirement: &
|
118
|
+
requirement: &21962540 !ruby/object:Gem::Requirement
|
86
119
|
none: false
|
87
120
|
requirements:
|
88
121
|
- - ~>
|
@@ -90,10 +123,10 @@ dependencies:
|
|
90
123
|
version: 0.6.0
|
91
124
|
type: :development
|
92
125
|
prerelease: false
|
93
|
-
version_requirements: *
|
126
|
+
version_requirements: *21962540
|
94
127
|
- !ruby/object:Gem::Dependency
|
95
128
|
name: shoulda
|
96
|
-
requirement: &
|
129
|
+
requirement: &21962080 !ruby/object:Gem::Requirement
|
97
130
|
none: false
|
98
131
|
requirements:
|
99
132
|
- - ~>
|
@@ -101,10 +134,10 @@ dependencies:
|
|
101
134
|
version: 2.11.3
|
102
135
|
type: :development
|
103
136
|
prerelease: false
|
104
|
-
version_requirements: *
|
137
|
+
version_requirements: *21962080
|
105
138
|
- !ruby/object:Gem::Dependency
|
106
139
|
name: ruby-debug19
|
107
|
-
requirement: &
|
140
|
+
requirement: &21961700 !ruby/object:Gem::Requirement
|
108
141
|
none: false
|
109
142
|
requirements:
|
110
143
|
- - ! '>='
|
@@ -112,7 +145,7 @@ dependencies:
|
|
112
145
|
version: '0'
|
113
146
|
type: :development
|
114
147
|
prerelease: false
|
115
|
-
version_requirements: *
|
148
|
+
version_requirements: *21961700
|
116
149
|
description:
|
117
150
|
email:
|
118
151
|
- david@isotope11.com
|