dozens 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,96 @@
1
1
  require "dozens/version"
2
- require "dozens/api"
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
3
6
 
4
7
  module Dozens
5
- # Your code goes here...
8
+ class API
9
+ API_BASE = 'http://dozens.jp/api/'
10
+ ZONE_BASE = API_BASE + 'zone'
11
+ RECORD_BASE = API_BASE + 'record'
12
+
13
+ def initialize(dozens_id, api_key)
14
+ @dozens_id = dozens_id
15
+ @api_key = api_key
16
+ end
17
+ def authenticate
18
+ auth_token
19
+ end
20
+ def zones
21
+ get_with_auth ZONE_BASE + '.json'
22
+ end
23
+ def create_zone(params)
24
+ post_with_auth ZONE_BASE + '/create.json', params
25
+ end
26
+ def delete_zone(zone_id)
27
+ delete_with_auth ZONE_BASE + "/delete/#{zone_id}.json"
28
+ end
29
+ def records(zone_name)
30
+ get_with_auth RECORD_BASE + "/#{zone_name}.json"
31
+ end
32
+ def create_record(params)
33
+ post_with_auth RECORD_BASE + "/create.json", params
34
+ end
35
+ def update_record(record_id, params)
36
+ post_with_auth RECORD_BASE + "/update/#{record_id}.json", params
37
+ end
38
+ def delete_record(record_id)
39
+ delete_with_auth RECORD_BASE + "/delete/#{record_id}.json"
40
+ end
41
+
42
+ private
43
+ def get_with_headers(url, headers = {})
44
+ request :get, url, headers
45
+ end
46
+ def get_with_auth(url)
47
+ with_auth do |hdrs|
48
+ request :get, url, hdrs
49
+ end
50
+ end
51
+ def post_with_auth(url, params)
52
+ with_auth do |hdrs|
53
+ request :post, url, hdrs, params
54
+ end
55
+ end
56
+ def put_with_auth(url)
57
+ with_auth do |hdrs|
58
+ request :put, url, hdrs
59
+ end
60
+ end
61
+ def delete_with_auth(url)
62
+ with_auth do |hdrs|
63
+ request :delete, url, hdrs
64
+ end
65
+ end
66
+ def request(verb, url, headers = {}, params = {})
67
+ uri = URI.parse(url)
68
+ klass = eval "Net::HTTP::#{verb.capitalize}"
69
+ req = klass.new(uri.path)
70
+ headers.each do |key, value|
71
+ req[key] = value
72
+ end
73
+ if req.request_body_permitted? && !params.empty?
74
+ req.body = params.to_json.to_s
75
+ req['Content-Type'] = 'application/json'
76
+ end
77
+ resp = nil
78
+ Net::HTTP.start(uri.host, uri.port) do |http|
79
+ resp = http.request(req)
80
+ end
81
+ JSON.parse(resp.body)
82
+ end
83
+ def with_auth(org_headers = {}, &block)
84
+ block.call(org_headers.merge({'X-Auth-Token' => auth_token}))
85
+ end
86
+ def authorize_get(dozens_id, api_key)
87
+ resp = get_with_headers('http://dozens.jp/api/authorize.json',
88
+ 'X-Auth-User' => @dozens_id,
89
+ 'X-Auth-Key' => @api_key)
90
+ resp['auth_token']
91
+ end
92
+ def auth_token
93
+ @auth_token ||= authorize_get(@dozens_id, @api_key)
94
+ end
95
+ end
6
96
  end
@@ -0,0 +1,96 @@
1
+
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ module Dozens
8
+ class API
9
+ API_BASE = 'http://dozens.jp/api/'
10
+ ZONE_BASE = API_BASE + 'zone'
11
+ RECORD_BASE = API_BASE + 'record'
12
+
13
+ def initialize(dozens_id, api_key)
14
+ @dozens_id = dozens_id
15
+ @api_key = api_key
16
+ end
17
+ def authenticate
18
+ auth_token
19
+ end
20
+ def zones
21
+ get_with_auth ZONE_BASE + '.json'
22
+ end
23
+ def create_zone(params)
24
+ post_with_auth ZONE_BASE + '/create.json', params
25
+ end
26
+ def delete_zone(zone_id)
27
+ delete_with_auth ZONE_BASE + "/delete/#{zone_id}.json"
28
+ end
29
+ def records(zone_name)
30
+ get_with_auth RECORD_BASE + "/#{zone_name}.json"
31
+ end
32
+ def create_record(params)
33
+ post_with_auth RECORD_BASE + "/create.json", params
34
+ end
35
+ def update_record(record_id, params)
36
+ post_with_auth RECORD_BASE + "/update/#{record_id}.json", params
37
+ end
38
+ def delete_record(record_id)
39
+ delete_with_auth RECORD_BASE + "/delete/#{record_id}.json"
40
+ end
41
+
42
+ private
43
+ def get_with_headers(url, headers = {})
44
+ request :get, url, headers
45
+ end
46
+ def get_with_auth(url)
47
+ with_auth do |hdrs|
48
+ request :get, url, hdrs
49
+ end
50
+ end
51
+ def post_with_auth(url, params)
52
+ with_auth do |hdrs|
53
+ request :post, url, hdrs, params
54
+ end
55
+ end
56
+ def put_with_auth(url)
57
+ with_auth do |hdrs|
58
+ request :put, url, hdrs
59
+ end
60
+ end
61
+ def delete_with_auth(url)
62
+ with_auth do |hdrs|
63
+ request :delete, url, hdrs
64
+ end
65
+ end
66
+ def request(verb, url, headers = {}, params = {})
67
+ uri = URI.parse(url)
68
+ klass = eval "Net::HTTP::#{verb.capitalize}"
69
+ req = klass.new(uri.path)
70
+ headers.each do |key, value|
71
+ req[key] = value
72
+ end
73
+ if req.request_body_permitted? && !params.empty?
74
+ req.body = params.to_json.to_s
75
+ req['Content-Type'] = 'application/json'
76
+ end
77
+ resp = nil
78
+ Net::HTTP.start(uri.host, uri.port) do |http|
79
+ resp = http.request(req)
80
+ end
81
+ JSON.parse(resp.body)
82
+ end
83
+ def with_auth(org_headers = {}, &block)
84
+ block.call(org_headers.merge({'X-Auth-Token' => auth_token}))
85
+ end
86
+ def authorize_get(dozens_id, api_key)
87
+ resp = get_with_headers('http://dozens.jp/api/authorize.json',
88
+ 'X-Auth-User' => @dozens_id,
89
+ 'X-Auth-Key' => @api_key)
90
+ resp['auth_token']
91
+ end
92
+ def auth_token
93
+ @auth_token ||= authorize_get(@dozens_id, @api_key)
94
+ end
95
+ end
96
+ end
@@ -1,3 +1,3 @@
1
1
  module Dozens
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: dozens
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - CHIKURA Shinsaku
@@ -29,6 +29,7 @@ files:
29
29
  - Rakefile
30
30
  - dozens.gemspec
31
31
  - lib/dozens.rb
32
+ - lib/dozens/api.rb
32
33
  - lib/dozens/version.rb
33
34
  has_rdoc: true
34
35
  homepage: ""