ns_service_pack 0.1.6 → 0.1.7

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.
data/CHANGELOG CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  #==============History:
4
4
  #==0.1.7
5
+ Fix and release 0.1.7
6
+
5
7
 
6
8
  #==0.1.6
7
9
  * Fix README 文件中的忘加Ns::的bug
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.7
@@ -3,45 +3,48 @@ require 'rest_client'
3
3
 
4
4
  module Ns
5
5
  class Client
6
- #delegate :new, :get, :post, :to=>RestClient::Resource TODO ??
7
- def self.get(url = '', params = {})
8
- #params TODO
9
- request('get', url, params)
6
+ def self.request(action = 'get', url = '', data_params = {})
7
+ #TODO 网路异常处理 #use RestClient now
8
+ #get specific handle FIXME
9
+ if action == 'get'
10
+ ps = data_params[:data].dup
11
+ ps.delete(:id)
12
+ url = Util.params_query(url, ps)
13
+ end
14
+ Rails.logger.debug "====#{action} to #{url} with params: #{data_params.inspect}"
15
+ puts "====#{action} to #{url} with params: #{data_params.inspect}"
16
+ json_response = RestClient.send(action, url, data_params)
17
+ result = JSON.parse(json_response)
18
+ result
10
19
  end
11
-
12
- def self.post(url = '', params = {})
13
- request('post', url, params)
20
+
21
+ def self.config
22
+ ServiceConfig
14
23
  end
15
24
 
16
- def self.put(url = '', params = {})
17
- request('put', url, params)
25
+ def self.url(key = '', params = {})
26
+ config.service_url(key, params)
18
27
  end
19
-
20
- def self.delete()
21
- request('delete', url, params)
28
+ #service request
29
+ def self.service_request(service_key = '', params = {}, request_method = 'get')
30
+ request(request_method, url(service_key, params[:data]), params)
22
31
  end
23
-
24
- def self.request(action = 'get', url = '', data_params = {})
25
- #TODO 网路异常处理
26
- #use RestClient now
27
- json_response = RestClient.send(action, url, :data=>data_params)
28
- result = unpack(json_response)
29
- if result.ok?
30
- return result.data.symbolize_keys if result.data.is_a?(Hash)
31
- result.data
32
- else
33
- raise ResultError.new(result)
34
- end
32
+
33
+ #==service端统一从:data参数中接传来的额外请求数据
34
+ def self.get(key = '', params = {})
35
+ service_request(key, {:data=>params}, 'get')
36
+ end
37
+
38
+ def self.delete(key = '', params = {})
39
+ service_request(key, {:data=>params}, 'delete')
35
40
  end
36
41
 
37
- def self.ajax_request(action = 'get', url = '', data_params = {})
38
- #TODO 网路异常处理
39
- json_response = RestClient.send(action, url, :data=>data_params)
40
- #render :json=>json_response
42
+ def self.post(key = '', params = {})
43
+ service_request(key, {:data=>params}, 'post')
41
44
  end
42
45
 
43
- def self.unpack(json_response_str = nil)
44
- Result.new(JSON.parse(json_response_str))
46
+ def self.put(key = '', params = {})
47
+ service_request(key, {:data=>params}, 'put')
45
48
  end
46
49
  end
47
50
  end
@@ -133,13 +133,13 @@ module Ns
133
133
  end
134
134
 
135
135
  if mapping_hash.present?
136
- cond_str << " and "
136
+ cond_str << " and " unless cond_str.blank?
137
137
  cond_str << mapping_hash.map do |buz_key, db_key|
138
138
  "#{db_key} = :#{buz_key}"
139
139
  end.join(" and ")
140
140
  end
141
141
  unless erp_admin?(params) && mapping.keys.include?(:status)
142
- cond_str << " and " if cond_str.present?
142
+ cond_str << " and " unless cond_str.blank?
143
143
  cond_str << " #{mapping[:status]} != -1" #TODO FIXME -1 use
144
144
  end
145
145
 
@@ -225,6 +225,7 @@ module Ns
225
225
 
226
226
  #业务层到数据层字段参数转换并做一定值处理
227
227
  def db_hashize(params = {})
228
+ return {} if params.blank?
228
229
  new_params = params.symbolize_keys
229
230
  common_keys = new_params.keys & mapping.keys
230
231
  common_keys.inject({}) do |result, key|
@@ -26,5 +26,18 @@ module Ns
26
26
  end #/if
27
27
  @@services
28
28
  end #/def
29
- end
30
- end
29
+
30
+ def self.service_url(service_key = '', params = {}, force_sub = true)
31
+ #fixed a bug here, using dup to avoid modify the original templages
32
+ the_url = services[service_key.to_sym].to_s.dup rescue ''
33
+ if force_sub && params[:id]
34
+ the_url.sub!(':id', params[:id].to_s)
35
+ end
36
+ #TODO REMOVE THIS
37
+ if force_sub && params[:customer_id]
38
+ the_url.sub!(':customer_id', params[:customer_id].to_s)
39
+ end
40
+ block_given? ? yield(the_url) : the_url
41
+ end
42
+ end #class
43
+ end #module
@@ -3,12 +3,30 @@ require 'fileutils'
3
3
  module Ns
4
4
  module Util
5
5
  extend self
6
+
6
7
  def concat_url(prefix_url = '', url = '')
7
8
  prefix_url = prefix_url.to_s
8
9
  sep = (prefix_url[-1, 1] == '/' || url[0, 1] == '/') ? '' : '/'
9
10
  "#{prefix_url}#{sep}#{url}"
10
11
  end
11
-
12
+
13
+ def params_query(base_url = '', query_params = {})
14
+ query_str = query_params.respond_to?(:to_query) ? query_params.to_query : query_params.to_a.map{|a| a.join('=')}.join('&')
15
+ base_url = base_url.to_s
16
+ unless query_str.blank?
17
+ sep = if base_url[-1, 1] =~ /\?|&/
18
+ ''
19
+ else
20
+ if base_url.include?('?')
21
+ '&'
22
+ else
23
+ '?'
24
+ end
25
+ end
26
+ end
27
+ "#{base_url}#{sep}#{query_str}"
28
+ end
29
+
12
30
  #将一个hash和array写入data下的yaml结构中
13
31
  def yamlize(hash_or_array = {}, file_name = nil)
14
32
  return if hash_or_array.nil?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ns_service_pack"
8
- s.version = "0.1.6"
8
+ s.version = "0.1.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Caory, Shang, Geogeous"]
12
- s.date = "2011-12-07"
12
+ s.date = "2011-12-17"
13
13
  s.description = "abstract some common pattern to service pack"
14
14
  s.email = "cao7113@hotmail.com"
15
15
  s.executables = ["nsp"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ns_service_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-07 00:00:00.000000000Z
12
+ date: 2011-12-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &85246320 !ruby/object:Gem::Requirement
16
+ requirement: &82356530 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.6.7
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *85246320
24
+ version_requirements: *82356530
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thor
27
- requirement: &85246000 !ruby/object:Gem::Requirement
27
+ requirement: &82356120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.14.6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *85246000
35
+ version_requirements: *82356120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: shoulda
38
- requirement: &85245700 !ruby/object:Gem::Requirement
38
+ requirement: &82355630 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *85245700
46
+ version_requirements: *82355630
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &85245420 !ruby/object:Gem::Requirement
49
+ requirement: &82355350 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *85245420
57
+ version_requirements: *82355350
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &85245180 !ruby/object:Gem::Requirement
60
+ requirement: &82354930 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *85245180
68
+ version_requirements: *82354930
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &85244940 !ruby/object:Gem::Requirement
71
+ requirement: &82354540 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *85244940
79
+ version_requirements: *82354540
80
80
  description: abstract some common pattern to service pack
81
81
  email: cao7113@hotmail.com
82
82
  executables:
@@ -141,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  segments:
143
143
  - 0
144
- hash: -447924557
144
+ hash: 896815169
145
145
  required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  none: false
147
147
  requirements: