moonrope-client 1.0.1 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c7216a0ad79a6258bf7651fee89505598dc1f8bb
4
- data.tar.gz: 43cc0f915fe8f138e920c5355cde34139e087964
3
+ metadata.gz: c1d837d5dba07f1d26178db09d1d19dca25463ed
4
+ data.tar.gz: bb8d38e1f9612a4093b391f75a05a2794f58c03d
5
5
  SHA512:
6
- metadata.gz: 9dbd34f6a160242b9239b30d0906a4917c9b1f5f8db87ffe78cdf3254a0099eccdbc10d1049b3a2c319f9ecdad10992a472e71f614193cf43de703f303c8db99
7
- data.tar.gz: 5253136be9578ea0dbf955ca969d6c0d54fce6eed050d7be5b1dd1fb3384357c87ee5876dc2244c0c3d4528c094e5e35d0d7b4aa462efa0b33091c0bea97a6ad
6
+ metadata.gz: 178d8c782f0c8693e05428b6c4a4ae024cc553d1303eeaad99ff32688d1ebdf01cb636617f137f04e626e0acc64b2ff759856d2d5ad3ff6c8e5ede89916e761d
7
+ data.tar.gz: 156bdd464baa75bbdb2d4dc9044066953e13fc358015c1fe41fa39d6c152db8b9d2217eb367c09cbcf996e5cb44069d94110fdd0f1393f3e8ff2613dbbc0cdfd
@@ -12,20 +12,20 @@ module MoonropeClient
12
12
  def initialize(host, options = {})
13
13
  @host, @options = host, options
14
14
  end
15
-
15
+
16
16
  #
17
17
  # @return [String] the endpoint hostname
18
18
  #
19
19
  attr_reader :host
20
-
20
+
21
21
  #
22
22
  # @return [String] the path prefix
23
23
  #
24
24
  def path_prefix
25
25
  @options[:path_prefix] || 'api'
26
26
  end
27
-
28
- #
27
+
28
+ #
29
29
  # @return [Boolean] whether or not SSL is enabled for requests or not
30
30
  #
31
31
  def ssl
@@ -33,26 +33,26 @@ module MoonropeClient
33
33
  end
34
34
 
35
35
  #
36
- # @return [Integer] the port to conncet to
36
+ # @return [Integer] the port to conncet to
37
37
  #
38
38
  def port
39
39
  @options[:port] || (ssl ? 443 : 80)
40
40
  end
41
-
42
- #
41
+
42
+ #
43
43
  # @return [Hash] return headers to be set on all requests to the API
44
44
  #
45
45
  def headers
46
46
  @options[:headers] || {}
47
47
  end
48
-
48
+
49
49
  #
50
50
  # @return [Integer] the version of the API to use
51
51
  #
52
52
  def version
53
53
  @options[:version] || 1
54
54
  end
55
-
55
+
56
56
  #
57
57
  # Make a request and return an appropriate request object.
58
58
  #
@@ -63,15 +63,19 @@ module MoonropeClient
63
63
  def request(controller, action, params = {})
64
64
  MoonropeClient::Request.new(self, controller, action, params).make
65
65
  end
66
-
66
+
67
+ def request!(controller, action, params = {})
68
+ MoonropeClient::Request.new(self, controller, action, params).make!
69
+ end
70
+
67
71
  def controller(name)
68
72
  MoonropeClient::Controller.new(self, name)
69
73
  end
70
-
74
+
71
75
  def method_missing(name, value = nil)
72
76
  value.nil? ? self.controller(name) : super
73
77
  end
74
-
78
+
75
79
  #
76
80
  # Make a request to the remote API server and return the raw output from
77
81
  # the request.
@@ -96,6 +100,6 @@ module MoonropeClient
96
100
  else raise Error, "Internal server error occurred"
97
101
  end
98
102
  end
99
-
103
+
100
104
  end
101
- end
105
+ end
@@ -1,20 +1,24 @@
1
1
  module MoonropeClient
2
2
  class Controller
3
-
3
+
4
4
  def initialize(connection, controller_name)
5
5
  @connection = connection
6
6
  @controller_name = controller_name
7
7
  end
8
-
8
+
9
9
  attr_reader :name
10
-
10
+
11
11
  def method_missing(name, params = {})
12
12
  request(name, params)
13
13
  end
14
-
14
+
15
15
  def request(action_name, params = {})
16
- @connection.request(@controller_name, action_name, params)
16
+ if action_name =~ /\A(.*)\!\z/
17
+ @connection.request!(@controller_name, $1, params)
18
+ else
19
+ @connection.request(@controller_name, action_name, params)
20
+ end
17
21
  end
18
-
22
+
19
23
  end
20
24
  end
@@ -1,6 +1,8 @@
1
+ require 'moonrope_client/request_error'
2
+
1
3
  module MoonropeClient
2
4
  class Request
3
-
5
+
4
6
  #
5
7
  # Initialize a new request
6
8
  #
@@ -15,21 +17,30 @@ module MoonropeClient
15
17
  @action = action.to_sym
16
18
  @params = params
17
19
  end
18
-
20
+
19
21
  attr_reader :params
20
-
22
+
21
23
  def make
22
24
  raw_data_to_response_object(make_request)
23
25
  end
24
-
26
+
27
+ def make!
28
+ result = raw_data_to_response_object(make_request)
29
+ if result.success?
30
+ result
31
+ else
32
+ raise MoonropeClient::RequestError.new(result), "Request was not successful. Got #{result.class}"
33
+ end
34
+ end
35
+
25
36
  private
26
-
37
+
27
38
  def make_request
28
39
  params = {:params => @params.to_json}
29
40
  path = "/#{@connection.path_prefix}/v#{@connection.version}/#{@controller}/#{@action}"
30
41
  JSON.parse(@connection.raw_request(path, params))
31
42
  end
32
-
43
+
33
44
  #
34
45
  # Convert rhe result of a request into an appropriate response object
35
46
  #
@@ -48,6 +59,6 @@ module MoonropeClient
48
59
  MoonropeClient::Response.new(self, data)
49
60
  end
50
61
  end
51
-
62
+
52
63
  end
53
64
  end
@@ -0,0 +1,8 @@
1
+ module MoonropeClient
2
+ class RequestError < StandardError
3
+ def initialize(result)
4
+ @result = result
5
+ end
6
+ attr_reader :result
7
+ end
8
+ end
@@ -1,9 +1,9 @@
1
1
  module MoonropeClient
2
2
  class Response
3
-
3
+
4
4
  #
5
5
  # Initialize a new response object
6
- #
6
+ #
7
7
  # @param request [MoonropeClient::Request]
8
8
  # @param data [Hash]
9
9
  #
@@ -11,7 +11,7 @@ module MoonropeClient
11
11
  @request = request
12
12
  @data = data
13
13
  end
14
-
14
+
15
15
  #
16
16
  # Is this a successful response?
17
17
  #
@@ -20,33 +20,33 @@ module MoonropeClient
20
20
  def success?
21
21
  false
22
22
  end
23
-
24
- #
23
+
24
+ #
25
25
  # @return [String] the status of the request returned by the server
26
26
  #
27
27
  def status
28
28
  @data['status']
29
29
  end
30
-
30
+
31
31
  #
32
32
  # @return [Hash] any flags returned by the server
33
33
  def flags
34
34
  @data['flags']
35
35
  end
36
-
36
+
37
37
  #
38
38
  # @return [Object] the data returned by the server
39
39
  #
40
40
  def data
41
41
  @data['data']
42
42
  end
43
-
43
+
44
44
  #
45
45
  # @return [Float] the time the request took at the server
46
46
  #
47
47
  def time
48
48
  @data['time']
49
49
  end
50
-
50
+
51
51
  end
52
52
  end
@@ -1,3 +1,3 @@
1
1
  module MoonropeClient
2
- VERSION = '1.0.1'
3
- end
2
+ VERSION = '1.0.2'
3
+ end
@@ -12,6 +12,3 @@ require 'moonrope_client/responses/parameter_error'
12
12
  require 'moonrope_client/responses/access_denied'
13
13
  require 'moonrope_client/responses/validation_error'
14
14
  require 'moonrope_client/responses/paginated_collection'
15
-
16
- module MoonropeClient
17
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moonrope-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-23 00:00:00.000000000 Z
11
+ date: 2015-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -63,6 +63,7 @@ files:
63
63
  - lib/moonrope_client/controller.rb
64
64
  - lib/moonrope_client/error.rb
65
65
  - lib/moonrope_client/request.rb
66
+ - lib/moonrope_client/request_error.rb
66
67
  - lib/moonrope_client/response.rb
67
68
  - lib/moonrope_client/responses/access_denied.rb
68
69
  - lib/moonrope_client/responses/paginated_collection.rb
@@ -90,9 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  version: '0'
91
92
  requirements: []
92
93
  rubyforge_project:
93
- rubygems_version: 2.2.2
94
+ rubygems_version: 2.4.5
94
95
  signing_key:
95
96
  specification_version: 4
96
97
  summary: A client library for the the Moonrope API server.
97
98
  test_files: []
98
- has_rdoc: