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 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
@@ -0,0 +1,2 @@
1
+ require_relative 'scaleway-api/scaleway'
2
+ require_relative 'scaleway-api/railtie' if defined?(Rails)
@@ -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: []