my_target_api 1.0.5 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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