one_sky 0.0.1 → 0.0.2
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/lib/one_sky/project.rb +21 -6
- data/lib/one_sky/version.rb +1 -1
- data/lib/one_sky.rb +2 -1
- data/spec/project_spec.rb +20 -2
- metadata +3 -3
data/lib/one_sky/project.rb
CHANGED
@@ -11,12 +11,22 @@ module OneSky
|
|
11
11
|
|
12
12
|
# Returns details about the project.
|
13
13
|
def details
|
14
|
-
get("/details")["project"]
|
14
|
+
get("/project/details")["project"]
|
15
|
+
end
|
16
|
+
|
17
|
+
# Returns available types to be specified when creating a new the project.
|
18
|
+
def types
|
19
|
+
get("/project/types")["types"]
|
15
20
|
end
|
16
21
|
|
17
22
|
# Returns an array of available languages.
|
18
23
|
def languages
|
19
|
-
get("/languages")["languages"]
|
24
|
+
get("/project/languages")["languages"]
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns info about your account.
|
28
|
+
def info
|
29
|
+
get("/info")["application"]
|
20
30
|
end
|
21
31
|
|
22
32
|
# Returns the SSO URL for the given unique_id
|
@@ -89,22 +99,27 @@ module OneSky
|
|
89
99
|
def hash_to_params(hash)
|
90
100
|
hash.inject({}) { |o, (k,v)| o[k.to_s.gsub("_", "-").to_sym] = v; o }
|
91
101
|
end
|
92
|
-
|
102
|
+
|
103
|
+
def authorization_params
|
104
|
+
timestamp = Time.now.to_i.to_s
|
105
|
+
{:project => @name, :"api-key" => @api_key, :timestamp => timestamp, :"dev-hash" => Digest::MD5.hexdigest(timestamp + @api_secret)}
|
106
|
+
end
|
107
|
+
|
93
108
|
def get(path, params = {}, options = {:content_type => "text/plain; charset=UTF-8"})
|
94
|
-
params =
|
109
|
+
params = authorization_params.merge(params)
|
95
110
|
parse_response(RestClient.get([API_ROOT_URL, path].join, {:params => params}.merge(options)))
|
96
111
|
end
|
97
112
|
|
98
113
|
def post(path, params = {}, options = {:content_type => "text/plain; charset=UTF-8"})
|
99
|
-
params =
|
114
|
+
params = authorization_params.merge(params)
|
100
115
|
parse_response(RestClient.post([API_ROOT_URL, path].join, params.merge(options)))
|
101
116
|
end
|
102
117
|
|
103
118
|
def parse_response(response)
|
104
|
-
raise ApiHttpResponseError, "HTTP response status code: #{response.code.inspect}." unless response.code.eql?(200)
|
105
119
|
# Do not post-process response if it isn't JSON. (ie. Binary file returned from /output_mo.)
|
106
120
|
return response.body unless response.headers[:content_type] =~ /json/
|
107
121
|
response_hash = JSON.parse(response)
|
122
|
+
|
108
123
|
raise ApiError, response.body if response_hash.has_key?("response") and response_hash["response"] != "ok"
|
109
124
|
response_hash
|
110
125
|
end
|
data/lib/one_sky/version.rb
CHANGED
data/lib/one_sky.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'rest_client'
|
3
|
+
require 'digest/md5'
|
3
4
|
|
4
5
|
module OneSky
|
5
6
|
API_ROOT_URL = "https://api.oneskyapp.com/1"
|
6
7
|
|
7
8
|
autoload :Project, 'one_sky/project'
|
8
9
|
|
9
|
-
%w[
|
10
|
+
%w[ApiError].each { |e| const_set(e, Class.new(StandardError)) }
|
10
11
|
end
|
data/spec/project_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe "Project" do
|
|
17
17
|
|
18
18
|
it "raises an error when incorrect API credentials are passed." do
|
19
19
|
@project.api_secret = "wrong secret"
|
20
|
-
lambda { @project.details }.should raise_error
|
20
|
+
lambda { @project.details }.should raise_error RestClient::Exception
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "#details" do
|
@@ -26,9 +26,27 @@ describe "Project" do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
describe "#types" do
|
30
|
+
it "returns an array." do
|
31
|
+
types = @project.types
|
32
|
+
types.should be_an(Array)
|
33
|
+
types.size.should > 0
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
29
37
|
describe "#languages" do
|
30
38
|
it "returns an array." do
|
31
|
-
@project.languages
|
39
|
+
langs = @project.languages
|
40
|
+
langs.should be_an(Array)
|
41
|
+
langs.size.should > 0
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#info" do
|
46
|
+
it "returns a hash." do
|
47
|
+
info = @project.info
|
48
|
+
info.should be_an(Hash)
|
49
|
+
info.has_key?("name").should be_true
|
32
50
|
end
|
33
51
|
end
|
34
52
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Junjun Olympia
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-02-10 00:00:00 +08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|