ovh-rest 0.0.1 → 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.
- checksums.yaml +7 -0
- data/README.md +107 -0
- data/Rakefile +9 -0
- data/lib/ovh.rb +0 -1
- data/lib/ovh/rest.rb +18 -7
- data/ovh-rest.gemspec +1 -5
- data/test/test_api_url.rb +15 -0
- data/test/test_helper.rb +3 -0
- metadata +14 -10
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 4bc0866dbac656dfdf22eef5798d5a766d094092
|
|
4
|
+
data.tar.gz: 392e592fcff25c5c6466465581c2911b2a2b170b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 797fd218c4791c34ade0995487b001e90bb8ceca720bae003097f4c077a3a6ea155efdaf0c3e49d0aa08ef2a4fb7083d9c7c254b3cdadb9019b56dac195bd3cf
|
|
7
|
+
data.tar.gz: 3f18825c1bbc9366249ac03e25575b39c5bbb822f47e1db7e0003f36c4b4386de12a21e3249a08849272f927cc8c3e5a6b8a8254e698be38bcf349e56b6e5bc2
|
data/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# OVH-REST
|
|
2
|
+
|
|
3
|
+
OVH-REST is a (really) tiny, unofficial helper library OVH management [API](https://api.ovh.com/console/), wrapping the authentication parts and simplifying interaction in Ruby programs.
|
|
4
|
+
|
|
5
|
+
You need an `appKey` and an `appSecret` to use it, which can be obtained [there](https://www.ovh.com/fr/cgi-bin/api/createApplication.cgi).
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
First, you need to generate a `consumerKey` which is grants access to specific methods and parts of the API.
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'ovh/rest'
|
|
13
|
+
|
|
14
|
+
access = {
|
|
15
|
+
"accessRules" => [
|
|
16
|
+
{ "method" => "GET", "path" => "/sms/*" },
|
|
17
|
+
{ "method" => "POST", "path" => "/sms/*" },
|
|
18
|
+
{ "method" => "PUT", "path" => "/sms/*" },
|
|
19
|
+
{ "method" => "DELETE", "path" => "/sms/*" },
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
OVH::REST.generate_consumer_key("your_appKey", access)
|
|
24
|
+
=> {
|
|
25
|
+
"validationUrl" => "https://www.ovh.com/fr/cgi-bin/api/requestCredential.cgi?credentialToken=XXXXXXXXXXXXXXXXXXXXXXX",
|
|
26
|
+
"consumerKey" => "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ",
|
|
27
|
+
"state" => "pendingValidation"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
You now have your `consumerKey`, which needs validation before use. Validation is done by following the `validationUrl` and entering your credentials.
|
|
33
|
+
|
|
34
|
+
Then you can use API features:
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
require 'ovh/rest'
|
|
38
|
+
|
|
39
|
+
ovh = OVH::REST.new(apiKey, appSecret, consumerKey)
|
|
40
|
+
|
|
41
|
+
# Get sms account status
|
|
42
|
+
result = ovh.get("/sms/sms-xx12345-1")
|
|
43
|
+
|
|
44
|
+
puts JSON.pretty_generate(result)
|
|
45
|
+
=>
|
|
46
|
+
{
|
|
47
|
+
"status": "enable",
|
|
48
|
+
"creditsLeft": 42,
|
|
49
|
+
"name": "sms-xx12345-1",
|
|
50
|
+
"userQuantityWithQuota": 0,
|
|
51
|
+
"description": "",
|
|
52
|
+
[...]
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Send sms
|
|
56
|
+
result = ovh.post("/sms/sms-xx12345-1/jobs", {
|
|
57
|
+
"charset" => "UTF-8",
|
|
58
|
+
"class" => "phoneDisplay",
|
|
59
|
+
"coding" => "7bit",
|
|
60
|
+
"priority" => "high",
|
|
61
|
+
"validityPeriod" => 2880
|
|
62
|
+
"message" => "Dude! Disk is CRITICAL!",
|
|
63
|
+
"receivers" => ["+12345678900", "+12009876543"],
|
|
64
|
+
"sender" => "+12424242424",
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
puts JSON.pretty_generate(result)
|
|
68
|
+
=>
|
|
69
|
+
{
|
|
70
|
+
"totalCreditsRemoved": 2,
|
|
71
|
+
"ids": [
|
|
72
|
+
12345,
|
|
73
|
+
12346
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
All methods and parameters are described on the API documentation
|
|
79
|
+
|
|
80
|
+
## Change API URL
|
|
81
|
+
|
|
82
|
+
It's possible to change the API url according to where your OVH account is located. To change the API url for generate_consumer_key use something like this:
|
|
83
|
+
|
|
84
|
+
```ruby
|
|
85
|
+
OVH::REST.generate_consumer_key("your_appKey", access, 'https://ca.api.ovh.com/1.0')
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Or, for calling other methods:
|
|
89
|
+
|
|
90
|
+
```ruby
|
|
91
|
+
ovh = OVH::REST.new(apiKey, appSecret, consumerKey, 'https://ca.api.ovh.com/1.0')
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Setup
|
|
95
|
+
|
|
96
|
+
Only tested with MRI >= 1.9.3
|
|
97
|
+
|
|
98
|
+
Dependencies: none
|
|
99
|
+
|
|
100
|
+
Install:
|
|
101
|
+
* git clone https://github.com/Fotolia/ovh-rest
|
|
102
|
+
OR
|
|
103
|
+
* gem install ovh-rest
|
|
104
|
+
|
|
105
|
+
## Links
|
|
106
|
+
|
|
107
|
+
Introduction, in french: http://www.ovh.com/fr/g934.premiers-pas-avec-l-api
|
data/Rakefile
ADDED
data/lib/ovh.rb
CHANGED
data/lib/ovh/rest.rb
CHANGED
|
@@ -9,22 +9,33 @@ module OVH
|
|
|
9
9
|
class RESTError < StandardError; end
|
|
10
10
|
|
|
11
11
|
class REST
|
|
12
|
-
|
|
12
|
+
DEFAULT_API_URL = "https://api.ovh.com/1.0"
|
|
13
|
+
|
|
14
|
+
attr_accessor :api_url
|
|
13
15
|
|
|
14
16
|
class << self
|
|
15
|
-
def generate_consumer_key(api_key, access_rules)
|
|
16
|
-
uri = URI.parse("#{
|
|
17
|
+
def generate_consumer_key(api_key, access_rules, api_url = nil)
|
|
18
|
+
uri = URI.parse("#{api_url || DEFAULT_API_URL}/auth/credential")
|
|
17
19
|
request = Net::HTTP::Post.new(uri.path, initheader = {"X-Ovh-Application" => api_key, "Content-type" => "application/json"})
|
|
18
20
|
request.body = access_rules.to_json
|
|
19
|
-
http =
|
|
21
|
+
http = build_http_object(uri.host, uri.port)
|
|
20
22
|
http.use_ssl = true
|
|
21
23
|
response = http.request(request)
|
|
22
24
|
JSON.parse(response.body)
|
|
23
25
|
end
|
|
26
|
+
|
|
27
|
+
def build_http_object(host, port)
|
|
28
|
+
if ENV['https_proxy']
|
|
29
|
+
proxy = URI.parse(ENV['https_proxy'])
|
|
30
|
+
Net::HTTP::Proxy(proxy.host, proxy.port).new(host, port)
|
|
31
|
+
else
|
|
32
|
+
Net::HTTP.new(host, port)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
24
35
|
end
|
|
25
36
|
|
|
26
|
-
def initialize(api_key, api_secret, consumer_key)
|
|
27
|
-
@api_url =
|
|
37
|
+
def initialize(api_key, api_secret, consumer_key, api_url = nil)
|
|
38
|
+
@api_url = api_url || DEFAULT_API_URL
|
|
28
39
|
@api_key, @api_secret, @consumer_key = api_key, api_secret, consumer_key
|
|
29
40
|
end
|
|
30
41
|
|
|
@@ -43,7 +54,7 @@ module OVH
|
|
|
43
54
|
request = Net::HTTP.const_get(method.capitalize).new(uri.path, initheader = headers)
|
|
44
55
|
request.body = body
|
|
45
56
|
|
|
46
|
-
http =
|
|
57
|
+
http = REST.build_http_object(uri.host, uri.port)
|
|
47
58
|
http.use_ssl = true
|
|
48
59
|
response = http.request(request)
|
|
49
60
|
result = JSON.parse(response.body)
|
data/ovh-rest.gemspec
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require 'ovh'
|
|
5
|
-
|
|
6
2
|
Gem::Specification.new do |spec|
|
|
7
3
|
spec.name = "ovh-rest"
|
|
8
|
-
spec.version =
|
|
4
|
+
spec.version = "0.0.3"
|
|
9
5
|
spec.authors = ["Jonathan Amiez"]
|
|
10
6
|
spec.email = ["jonathan.amiez@fotolia.com"]
|
|
11
7
|
spec.description = "OVH REST API interface"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class TestApiUrl < Test::Unit::TestCase
|
|
4
|
+
def test_default_api_url
|
|
5
|
+
ovh = OVH::REST.new('api_key', 'api_secret', 'consumer_key')
|
|
6
|
+
assert_equal ovh.api_url, 'https://api.ovh.com/1.0'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_api_url_change
|
|
10
|
+
ca_api = 'https://ca.api.ovh.com/1.0'
|
|
11
|
+
|
|
12
|
+
ovh = OVH::REST.new('api_key', 'api_secret', 'consumer_key', ca_api)
|
|
13
|
+
assert_equal ovh.api_url, ca_api
|
|
14
|
+
end
|
|
15
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ovh-rest
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.0.3
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Jonathan Amiez
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2014-06-09 00:00:00.000000000 Z
|
|
13
12
|
dependencies: []
|
|
14
13
|
description: OVH REST API interface
|
|
15
14
|
email:
|
|
@@ -18,32 +17,37 @@ executables: []
|
|
|
18
17
|
extensions: []
|
|
19
18
|
extra_rdoc_files: []
|
|
20
19
|
files:
|
|
20
|
+
- README.md
|
|
21
|
+
- Rakefile
|
|
21
22
|
- lib/ovh.rb
|
|
22
23
|
- lib/ovh/rest.rb
|
|
23
24
|
- ovh-rest.gemspec
|
|
25
|
+
- test/test_api_url.rb
|
|
26
|
+
- test/test_helper.rb
|
|
24
27
|
homepage: https://github.com/Fotolia/ovh-rest
|
|
25
28
|
licenses:
|
|
26
29
|
- MIT
|
|
30
|
+
metadata: {}
|
|
27
31
|
post_install_message:
|
|
28
32
|
rdoc_options: []
|
|
29
33
|
require_paths:
|
|
30
34
|
- lib
|
|
31
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
32
|
-
none: false
|
|
33
36
|
requirements:
|
|
34
|
-
- -
|
|
37
|
+
- - ">="
|
|
35
38
|
- !ruby/object:Gem::Version
|
|
36
39
|
version: '0'
|
|
37
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
-
none: false
|
|
39
41
|
requirements:
|
|
40
|
-
- -
|
|
42
|
+
- - ">="
|
|
41
43
|
- !ruby/object:Gem::Version
|
|
42
44
|
version: '0'
|
|
43
45
|
requirements: []
|
|
44
46
|
rubyforge_project:
|
|
45
|
-
rubygems_version:
|
|
47
|
+
rubygems_version: 2.2.0
|
|
46
48
|
signing_key:
|
|
47
|
-
specification_version:
|
|
49
|
+
specification_version: 4
|
|
48
50
|
summary: Manage OVH services from Ruby
|
|
49
|
-
test_files:
|
|
51
|
+
test_files:
|
|
52
|
+
- test/test_api_url.rb
|
|
53
|
+
- test/test_helper.rb
|