scaleway-api 0.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/lib/scaleway-api.rb +2 -0
- data/lib/scaleway-api/railtie.rb +15 -0
- data/lib/scaleway-api/scaleway.rb +78 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 422e943f1433b16bd056ca91511bc812c187f93e
|
4
|
+
data.tar.gz: 64644a8cac11bac67af3f17d009ac80202c9544e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 81fca1a810ea0bd2ea103c44e0ed4b7c441b34352480ef7cea475b15147695fb1b5ae802fa65c0c75968128cebace25d9944fb921227c1120a72ffa6fa6baa5c
|
7
|
+
data.tar.gz: 6b35cb1832d35a178f0b30e348067f8a62f9cf96f346ce3e6755dd442af614f275565d131438bcb1e896ec5ea804850e53712ce430d0b29965f2165a6f1c3999
|
data/lib/scaleway-api.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Scaleway
|
4
|
+
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
initializer "scaleway_api.configure" do |app|
|
7
|
+
Scaleway.configure = if File.exist? './config/scaleway_api.yml'
|
8
|
+
YAML.load_file('./config/scaleway_api.yml')
|
9
|
+
else
|
10
|
+
{}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Scaleway
|
5
|
+
|
6
|
+
@@opts = {}
|
7
|
+
|
8
|
+
def self.configure(opts)
|
9
|
+
@@opts = opts
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.method_missing(sym, *args, &blk)
|
13
|
+
CallHandler.new(@@opts, sym)
|
14
|
+
end
|
15
|
+
|
16
|
+
class CallHandler
|
17
|
+
|
18
|
+
def initialize(opts, res_name)
|
19
|
+
@token = opts[:token]
|
20
|
+
@uri = "https://cp-#{opts[:region]}.scaleway.com/#{res_name}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def list
|
24
|
+
send_request Net::HTTP::Get.new(URI(@uri))
|
25
|
+
end
|
26
|
+
|
27
|
+
def get(key)
|
28
|
+
@uri += "/#{key}"
|
29
|
+
send_request Net::HTTP::Get.new(URI(@uri))
|
30
|
+
end
|
31
|
+
|
32
|
+
def create(opts)
|
33
|
+
req = Net::HTTP::Post.new(URI(@uri))
|
34
|
+
req.body = opts.to_json
|
35
|
+
send_request req
|
36
|
+
end
|
37
|
+
|
38
|
+
def update(key, opts)
|
39
|
+
@uri += "/#{key}"
|
40
|
+
req = Net::HTTP::Put.new(URI(@uri))
|
41
|
+
req.body = opts.to_json
|
42
|
+
send_request req
|
43
|
+
end
|
44
|
+
|
45
|
+
def delete(key)
|
46
|
+
@uri += "/#{key}"
|
47
|
+
send_request Net::HTTP::Delete.new(URI(@uri))
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def send_request(req)
|
53
|
+
puts @uri
|
54
|
+
uri = URI(@uri)
|
55
|
+
req['X-Auth-Token'] = @token
|
56
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
57
|
+
return parse_response(http.request(req))
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def parse_response(res)
|
62
|
+
case res
|
63
|
+
when Net::HTTPBadRequest, Net::HTTPUnauthorized,
|
64
|
+
Net::HTTPPaymentRequired, Net::HTTPForbidden,
|
65
|
+
Net::HTTPNotFound
|
66
|
+
false
|
67
|
+
else
|
68
|
+
if res.body != ''
|
69
|
+
JSON.parse(res.body)
|
70
|
+
else
|
71
|
+
true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scaleway-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jérémy SEBAN
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: An easy API to play with Scaleway API
|
14
|
+
email: jseban@francechain.fr
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/scaleway-api.rb
|
20
|
+
- lib/scaleway-api/railtie.rb
|
21
|
+
- lib/scaleway-api/scaleway.rb
|
22
|
+
homepage: https://github.com/FranceChain-Solutions/scaleway-api-gem
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.3'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.5.2
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: A Gem to use the ScaleWay API
|
46
|
+
test_files: []
|