heroix 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4a626b0bb6cc29165f374538446926680004929
4
- data.tar.gz: f8cd5cc204af787401cfb68eb7bfd9122c84c459
3
+ metadata.gz: c7631547c7d39fbec4cd974b8e582b6350b6b216
4
+ data.tar.gz: af1e343ba5e3d16cef171d0b652cd7d22baae4b2
5
5
  SHA512:
6
- metadata.gz: 62cc251d11d4b14ebcc1106bee0f8fef2b21e0e8b6275c22b70ff35101ed1ad0da99aff03b4b26d58fa4a0ec4d5ce9b9cb210dcc3d1ea30b91a61607660a045d
7
- data.tar.gz: dd5e41d029a3a7eefac97d83785a166fa4273cafeaf10d7126de3626d8b93ed20b0f6737f9ab372a6884e5bd9e113dcbb65fbc950a7548815dff0ea1840c969f
6
+ metadata.gz: b5b67c923fa0b726179f0f10c98889861548b106679cd1f9122a8b138b2d66b55434249fa0b7d002a3482094afd03eb3d444da6172210083d0ddb10d73829130
7
+ data.tar.gz: 1aa099c027230a26546a951734bff5f3d0244862b1eddca795e3cc2e8b3a63f1a31b4b90b822a482c942a5698ca1c9a8b32e0bae7fc74a7316652806f97625f7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- heroix (0.2.0)
4
+ heroix (0.2.1)
5
5
  rest-client (~> 1.6.1)
6
6
 
7
7
  GEM
data/heroix.gemspec CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.executables = []
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
data/lib/heroix.rb CHANGED
@@ -51,12 +51,16 @@ module Heroix
51
51
  build_resource :microsite_pages, :microsite_page
52
52
  end
53
53
 
54
+ def search(type, params)
55
+ build_resource("search/#{type}", type).index(params).fetch(type, [])
56
+ end
57
+
54
58
  private
55
59
 
56
- def build_resource(path, namespace)
60
+ def build_resource(path, type)
57
61
  Resource.new :url => url_for(path),
58
62
  :token => token,
59
- :namespace => namespace
63
+ :type => type
60
64
  end
61
65
  end
62
66
  end
@@ -1,17 +1,16 @@
1
1
  require 'rest_client'
2
- require 'cgi'
3
2
  require 'json'
4
3
 
5
4
  module Heroix
6
5
  Unauthorized = RestClient::Unauthorized
7
6
 
8
7
  class Resource
9
- attr_reader :url, :token, :namespace
8
+ attr_reader :url, :token, :type
10
9
 
11
10
  def initialize(params)
12
11
  @url = params[:url]
13
12
  @token = params[:token]
14
- @namespace = params[:namespace]
13
+ @type = params[:type]
15
14
  end
16
15
 
17
16
  def with_token(value)
@@ -19,12 +18,8 @@ module Heroix
19
18
  self
20
19
  end
21
20
 
22
- def resource
23
- @resource ||= JSON.parse RestClient.get(url)
24
- end
25
-
26
21
  def index(params = {})
27
- request(:get, url_with_params(params))
22
+ request(:get, url, :query => params)
28
23
  end
29
24
 
30
25
  def show(id)
@@ -32,11 +27,11 @@ module Heroix
32
27
  end
33
28
 
34
29
  def create(data)
35
- request(:post, url, data)
30
+ request(:post, url, :data => data)
36
31
  end
37
32
 
38
33
  def update(id, data)
39
- request(:put, url_for(id), data)
34
+ request(:put, url_for(id), :data => data)
40
35
  end
41
36
 
42
37
  def delete(id)
@@ -51,27 +46,19 @@ module Heroix
51
46
 
52
47
  private
53
48
 
54
- def url_with_params(params)
55
- if params.empty?
56
- url
57
- else
58
- "#{url}?#{query_string(params)}"
59
- end
60
- end
61
-
62
- def query_string(params)
63
- params
64
- .map { |key, value| "#{escape(key)}=#{escape(value)}" }
65
- .join('&')
66
- end
67
-
68
- def escape(value)
69
- CGI.escape(value.to_s)
49
+ def request(method, url, options = {})
50
+ handle RestClient::Request.execute(
51
+ :method => method,
52
+ :url => url,
53
+ :payload => prepare_data(options[:data]),
54
+ :headers => {
55
+ :authorization => "Token token=\"#{token}\"",
56
+ :content_type => :json, :params => options[:query]
57
+ }
58
+ )
70
59
  end
71
60
 
72
- def request(method, url, data = nil)
73
- response = RestClient.send(method, url, *request_args(data))
74
-
61
+ def handle(response)
75
62
  deprecation = response.headers[:x_deprecation]
76
63
  puts "[heroix] DEPRECATION WARNING #{deprecation}" if deprecation
77
64
 
@@ -80,22 +67,11 @@ module Heroix
80
67
 
81
68
  def parse_response(response)
82
69
  return {} if response.empty?
83
- JSON.parse response
84
- end
85
-
86
- def request_args(data)
87
- headers = { 'Authorization' => "Token token=\"#{token}\"" }
88
- args = []
89
-
90
- if data
91
- args << prepare_data(data)
92
- headers[:content_type] = :json
93
- end
94
- args << headers
70
+ JSON.parse(response)
95
71
  end
96
72
 
97
73
  def prepare_data(data)
98
- data = { namespace => data } if namespace
74
+ data = { type => data } if data && type
99
75
  data.to_json
100
76
  end
101
77
  end
@@ -1,3 +1,3 @@
1
1
  module Heroix
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heroix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Fu
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-12-18 00:00:00.000000000 Z
13
+ date: 2015-01-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -85,8 +85,7 @@ dependencies:
85
85
  description: Heroix global client
86
86
  email:
87
87
  - edh-dev@everydayhero.com.au
88
- executables:
89
- - ci
88
+ executables: []
90
89
  extensions: []
91
90
  extra_rdoc_files: []
92
91
  files: