my_target_api 1.0.5 → 1.1.0

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: e53adbd2b5a083b0fb9e90646dac235545237336
4
- data.tar.gz: 88bfab044cf0b2214ff029443786e7dc4ad82f76
3
+ metadata.gz: 35b5e8e2f9e33078a2823459568b54d17097d849
4
+ data.tar.gz: 4569d9039f9193f3bf00a8d6a29e86bca3202238
5
5
  SHA512:
6
- metadata.gz: fc6883a6ba4ce7b7dacd71d54b0d74adca74b92db223a88e5d79b6e129e2fb8a0ef81f6a53c64da507660658e62014ba0c4ce603160b269bac82c243de750106
7
- data.tar.gz: 7a88cc9582adea5d6f358b166640fc62d2e391eda2b14e39e1ed460406e489c244c5b42ec8310c89cba4c9c50101efda9283c3b5e8d8a068e1f7a377c2cbe338
6
+ metadata.gz: d9e6bc0d5e187b837fdcbf9d41297bb94eef2bbd63cdc6c0cf3def44049e1923fb16142ad30742ac62e3e5f4198061de9dcae1741eb6bbfe64d413ee16b620aa
7
+ data.tar.gz: 0ae105819862e9b089fd8dfa04e164262fc565e0a6ad4c4d633e9963798a52b24ca79338760e39f162a17296f1224d50c8ad0bcc318118fab2355f7e48cdcb83
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```
10
- gem 'my_target_api', '~> 1.0.5'
10
+ gem 'my_target_api', '~> 1.1.0'
11
11
  ```
12
12
 
13
13
  Or install from command line:
@@ -60,6 +60,15 @@ picture = File.new('path/to/picture.jpg', 'rb')
60
60
  static_resource.create(file: picture, data: { width: 1200, height: 800 })
61
61
  ```
62
62
 
63
+ ### Raw data upload
64
+
65
+ ```ruby
66
+ search_phrases_resource = my_target_api.resource('search_phrases', v: 2)
67
+ phrases = "phrase\nfirst phrase\nsecond phrase\n"
68
+
69
+ search_phrases_resource.upload(phrases, name: 'search phrases list')
70
+ ```
71
+
63
72
  ## Exceptions
64
73
 
65
74
  ```ruby
@@ -10,7 +10,6 @@ class MyTargetApi
10
10
 
11
11
  autoload :ConnectionError, 'my_target_api/connection_error'
12
12
  autoload :RequestError, 'my_target_api/request_error'
13
- autoload :InterfaceError, 'my_target_api/using_error'
14
13
 
15
14
  def initialize(access_token, options = {})
16
15
  @access_token = access_token
@@ -36,6 +35,10 @@ class MyTargetApi
36
35
  request_object.delete(url, params.merge(access_token: access_token))
37
36
  end
38
37
 
38
+ def upload_request(url, content, params)
39
+ request_object.upload(url, content, params.merge(access_token: access_token))
40
+ end
41
+
39
42
  private
40
43
 
41
44
  attr_reader :access_token, :options
@@ -13,7 +13,7 @@ class MyTargetApi
13
13
 
14
14
  def get(url, params = {})
15
15
  response = with_exception_handling do
16
- RestClient.get(url, headers(params).merge(params: header_parameters(params)))
16
+ RestClient.get(url, headers(params).merge(query(params)))
17
17
  end
18
18
 
19
19
  process_response(response)
@@ -29,7 +29,15 @@ class MyTargetApi
29
29
 
30
30
  def delete(url, params = {})
31
31
  response = with_exception_handling do
32
- RestClient.delete(url, headers(params).merge(params: header_parameters(params)))
32
+ RestClient.delete(url, headers(params).merge(query(params)))
33
+ end
34
+
35
+ process_response(response)
36
+ end
37
+
38
+ def upload(url, content, params = {})
39
+ response = with_exception_handling do
40
+ RestClient.post(url, content, headers(params).merge(query(params)))
33
41
  end
34
42
 
35
43
  process_response(response)
@@ -62,6 +70,10 @@ class MyTargetApi
62
70
  result_params
63
71
  end
64
72
 
73
+ def query(params)
74
+ { params: header_parameters(params) }
75
+ end
76
+
65
77
  def headers(params)
66
78
  { Authorization: "Bearer #{params[:access_token]}" }
67
79
  end
@@ -39,6 +39,12 @@ class MyTargetApi
39
39
  end
40
40
  end
41
41
 
42
+ def upload(content, params = {})
43
+ with_prepared_params(params) do |prepared|
44
+ api.upload_request("#{path}.json", content, prepared)
45
+ end
46
+ end
47
+
42
48
  def resource(relative_path)
43
49
  MyTargetApi::Resource.new(api, "#{path}/#{relative_path}")
44
50
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  class MyTargetApi
4
4
 
5
- VERSION = '1.0.5'
5
+ VERSION = '1.1.0'
6
6
 
7
7
  end
@@ -39,6 +39,19 @@ describe MyTargetApi::Request do
39
39
  ).to eq([{ 'success' => true }])
40
40
  end
41
41
 
42
+ it 'uploads raw content' do
43
+ stub_request(:post, 'https://target.my.com/api/v2/search_phrases.json?name=list')
44
+ .to_return(body: '{"id": 123, "name": "list"}')
45
+
46
+ expect(
47
+ subject.upload(
48
+ 'https://target.my.com/api/v2/search_phrases.json',
49
+ "phrase\nfirst\nsecond",
50
+ name: 'list'
51
+ )
52
+ ).to eq('id' => 123, 'name' => 'list')
53
+ end
54
+
42
55
  it 'raises exception on bad statuses' do
43
56
  stub_request(:get, 'https://target.my.com/api/v1/wrong_path.json')
44
57
  .to_return(body: 'Unknown resource', status: 404)
@@ -13,38 +13,46 @@ describe MyTargetApi::Resource do
13
13
  it { expect(resource).to respond_to :read }
14
14
  it { expect(resource).to respond_to :update }
15
15
  it { expect(resource).to respond_to :delete }
16
+ it { expect(resource).to respond_to :upload }
16
17
  end
17
18
 
18
19
  describe '#create' do
19
- it 'request path to all objects' do
20
- expect(api).to receive(:post_request).with('api_path.json', {})
21
- resource.create
20
+ it 'index request path' do
21
+ expect(api).to receive(:post_request).with('api_path.json', param: 'param')
22
+ resource.create(param: 'param')
22
23
  end
23
24
  end
24
25
 
25
26
  describe '#read' do
26
- it 'request path to all objects' do
27
- expect(api).to receive(:get_request).with('api_path.json', {})
28
- resource.read
27
+ it 'index request path' do
28
+ expect(api).to receive(:get_request).with('api_path.json', param: 'param')
29
+ resource.read(param: 'param')
29
30
  end
30
31
 
31
- it 'request path to one object' do
32
- expect(api).to receive(:get_request).with('api_path/7.json', {})
33
- resource.read(id: 7)
32
+ it 'request path to a single object' do
33
+ expect(api).to receive(:get_request).with('api_path/7.json', param: 'param')
34
+ resource.read(id: 7, param: 'param')
34
35
  end
35
36
  end
36
37
 
37
38
  describe '#update' do
38
- it 'request path to all objects' do
39
- expect(api).to receive(:get_request).with('api_path.json', {})
40
- resource.read
39
+ it 'index request path' do
40
+ expect(api).to receive(:get_request).with('api_path.json', param: 'param')
41
+ resource.read(param: 'param')
41
42
  end
42
43
  end
43
44
 
44
45
  describe '#delete' do
45
- it 'request path to all objects' do
46
- expect(api).to receive(:delete_request).with('api_path/7.json', {})
47
- resource.delete(id: 7)
46
+ it 'request path to a single object' do
47
+ expect(api).to receive(:delete_request).with('api_path/7.json', param: 'param')
48
+ resource.delete(id: 7, param: 'param')
49
+ end
50
+ end
51
+
52
+ describe '#upload' do
53
+ it 'index request path' do
54
+ expect(api).to receive(:upload_request).with('api_path.json', 'content', param: 'param')
55
+ resource.upload('content', param: 'param')
48
56
  end
49
57
  end
50
58
 
@@ -12,4 +12,5 @@ describe MyTargetApi do
12
12
  it { should respond_to :get_request }
13
13
  it { should respond_to :post_request }
14
14
  it { should respond_to :delete_request }
15
+ it { should respond_to :upload_request }
15
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_target_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OneRetarget.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-19 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json