seoshop-api 0.0.5 → 0.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: 0905bbaa91678c04a25d2480c99f05fc3a31029d
4
- data.tar.gz: 6c69439808f4fef6efeb163ce7dc82575e0353eb
3
+ metadata.gz: 3cefc1453a78871c993ff68e3946754aa8a97dd0
4
+ data.tar.gz: af5617ab1bd6606543c6219dbcd9389a1c2f91a5
5
5
  SHA512:
6
- metadata.gz: 34b8939bb3ae94905e4aa035fe362a14710778cc1b1798d7740b542e34652103b200933c5cb9bd9f60dc0cb1df25f1d410350e16daae83486f4d82c5a26cf68e
7
- data.tar.gz: b02279a2057f41d8797830bf3b5c4833607404d0d45cf87a44377e606ae2b6837d5a06143b97aa1fba5831e699ebd8a86755949c10282ec4d07d16a13be837cb
6
+ metadata.gz: b73b2065d3667b1c2d103fbd54c3c0108e43c0d11a2b2bae9e85b3d8e0636bfa704269614f1914788a94d6d868e8327751bf4d454dd79d8f6b49002a98e398a8
7
+ data.tar.gz: 520642d15292a5319e08f4fbdd7c8a22b9f3de53110b8836b981216e1e5ad8e47952a6e22f63ca30aeb4c635a3018d7d11db59aa766983ca0c7e890dec55c9a7
data/.gitignore CHANGED
@@ -1,8 +1,6 @@
1
- <<<<<<< HEAD
2
1
  pkg
3
2
  .DS_Store
4
3
  .idea/
5
- =======
6
4
  *.gem
7
5
  *.rbc
8
6
  .bundle
@@ -20,4 +18,4 @@ spec/reports
20
18
  test/tmp
21
19
  test/version_tmp
22
20
  tmp
23
- >>>>>>> origin/master
21
+ vendor/
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2
4
+ - 2.3
5
+ deploy:
6
+ provider: rubygems
7
+ api_key:
8
+ secure: Ub9rAJHJeLuFmi6MO/TA71cL9zRWW++rXhACeho+KZGJfn9XGrQD6wVhQJtEUlag0M+LzgWeAiorPK66oSM2ZLNkmHyyajoh9uwv6J6G2IZ+sbC3NqvmEAWltvy1JU4ElZKY3aVRLAL/1CTtvrmS1Fjv5gPKizW3FrBTIFlXMVg=
9
+ gem: seoshop-api
10
+ on:
11
+ branch: master
12
+ repo: YotpoLtd/seoshop-api
data/Rakefile CHANGED
@@ -1 +1,3 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ task default: :build
@@ -155,8 +155,8 @@ module Seoshop
155
155
  conn.response :rashify
156
156
 
157
157
  # Setting request and response to use JSON/XML
158
- conn.request :oj
159
- conn.response :oj
158
+ conn.request :multi_json
159
+ conn.response :multi_json
160
160
 
161
161
  # Set to use instrumentals to get time logs
162
162
  conn.use :instrumentation
@@ -10,96 +10,27 @@ module Seoshop
10
10
  if env[:status] == 200
11
11
  body = env[:response].body.response || env[:response].body
12
12
  elsif env[:status] == 401
13
- raise Seoshop::ResponseParser::HTTPUnauthorized.new 'invalid Seoshop credentials'
13
+ raise HTTPUnauthorized.new 'invalid Seoshop credentials'
14
14
  elsif env[:status] == 403
15
- raise Seoshop::ResponseParser::HTTPForbidden.new env[:response].body.message
15
+ raise HTTPForbidden.new env[:response].body.message
16
16
  elsif env[:status] == 404
17
- raise Seoshop::ResponseParser::HTTPNotFound.new env[:response].body.message
17
+ raise HTTPNotFound.new env[:response].body.message
18
18
  elsif env[:status] == 429
19
19
  rate_limits = env[:response_headers]['X-RateLimit-Remaining'].split('/')
20
20
  rate_limits_reset = env[:response_headers]['X-RateLimit-Reset'].split('/')
21
21
  seconds = rate_limits_reset[0] if rate_limits[0] == '-1'
22
22
  seconds = rate_limits_reset[1] if rate_limits[1] == '-1'
23
23
  seconds = rate_limits_reset[2] if rate_limits[2] == '-1'
24
- raise Seoshop::ResponseParser::RateLimit.new "RateLimit reset in #{seconds} seconds"
24
+ raise RateLimit.new "RateLimit reset in #{seconds} seconds"
25
25
  elsif env[:response] && env[:response].body && env[:response].body.status
26
26
  body = env[:response].body.status
27
27
  end
28
28
  env[:body] = body
29
29
  end
30
30
  end
31
- end
32
-
33
- #
34
- # Response middleware that decodes the response body from JSON.
35
- #
36
- class ParseOj < FaradayMiddleware::ResponseMiddleware
37
- dependency do
38
- require 'oj' unless defined?(::Oj)
39
- end
40
-
41
- define_parser do |body|
42
- begin
43
- ::Oj.load(body, mode: :compat) unless body.strip.empty?
44
- rescue Oj::ParseError => e
45
- end
46
- end
47
- end
48
-
49
- # Request middleware that encodes the body as JSON.
50
- #
51
- # Processes only requests with matching Content-type or those without a type.
52
- # If a request doesn't have a type but has a body, it sets the Content-type
53
- # to JSON MIME-type.
54
- #
55
- # Doesn't try to encode bodies that already are in string form.
56
- class EncodeOj < Faraday::Middleware
57
- CONTENT_TYPE = 'Content-Type'.freeze
58
- MIME_TYPE = 'application/json'.freeze
59
-
60
- dependency do
61
- require 'oj' unless defined?(::Oj)
62
- end
63
-
64
- def call(env)
65
- match_content_type(env) do |data|
66
- env[:body] = encode data
67
- end
68
- @app.call env
69
- end
70
-
71
- def encode(data)
72
- ::Oj.dump data
73
- end
74
-
75
- def match_content_type(env)
76
- if process_request?(env)
77
- env[:request_headers][CONTENT_TYPE] ||= MIME_TYPE
78
- yield env[:body] unless env[:body].respond_to?(:to_str)
79
- end
80
- end
81
-
82
- def process_request?(env)
83
- type = request_type(env)
84
- has_body?(env) and (type.empty? or type == MIME_TYPE)
85
- end
86
-
87
- def has_body?(env)
88
- body = env[:body] and !(body.respond_to?(:to_str) and body.empty?)
89
- end
90
-
91
- def request_type(env)
92
- type = env[:request_headers][CONTENT_TYPE].to_s
93
- type = type.split(';', 2).first if type.index(';')
94
- type
95
- end
96
-
97
- class Seoshop::ResponseParser::RateLimit < Exception; end
98
- class Seoshop::ResponseParser::HTTPForbidden < Exception; end
99
- class Seoshop::ResponseParser::HTTPUnauthorized < Exception; end
100
- class Seoshop::ResponseParser::HTTPNotFound < Exception; end
31
+ class RateLimit < Exception; end
32
+ class HTTPForbidden < Exception; end
33
+ class HTTPUnauthorized < Exception; end
34
+ class HTTPNotFound < Exception; end
101
35
  end
102
36
  end
103
-
104
- Faraday.register_middleware :response, oj: Seoshop::ParseOj
105
- Faraday.register_middleware :request, oj: Seoshop::EncodeOj
@@ -1,3 +1,3 @@
1
1
  module Seoshop
2
- VERSION = '0.0.5'
2
+ VERSION = '0.1.0'
3
3
  end
data/seoshop-api.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'seoshop-api/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "seoshop-api"
8
8
  spec.version = Seoshop::VERSION
9
- spec.authors = ["Nimrod Popper"]
10
- spec.email = ["nimrod@yotpo.com"]
9
+ spec.authors = ["Nimrod Popper", "Vladislav Shub"]
10
+ spec.email = ["nimrod@yotpo.com", "vlad@yotpo.com"]
11
11
  spec.description = %q{Ruby wrapper for SEOshop API - written by Yotpo}
12
12
  spec.summary = %q{Ruby wrapper for SEOshop API - written by Yotpo}
13
13
  spec.homepage = "https://github.com/YotpoLtd/seoshop-api"
@@ -18,14 +18,14 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
21
+ spec.add_development_dependency "bundler", "~> 1.14"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
23
 
24
24
  spec.add_dependency 'oauth2'
25
25
  spec.add_dependency 'faraday'
26
26
  spec.add_dependency 'typhoeus'
27
- spec.add_dependency 'faraday_middleware', '~> 0.9.0'
27
+ spec.add_dependency 'faraday_middleware'
28
+ spec.add_dependency 'faraday_middleware-multi_json'
28
29
  spec.add_dependency 'rash'
29
- spec.add_dependency 'oj'
30
30
  spec.add_dependency 'activesupport'
31
31
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seoshop-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nimrod Popper
8
+ - Vladislav Shub
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-03-16 00:00:00.000000000 Z
12
+ date: 2017-04-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -16,28 +17,28 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
+ version: '1.14'
20
21
  type: :development
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '1.3'
27
+ version: '1.14'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: rake
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ">="
32
+ - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: '0'
34
+ version: '10.0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - ">="
39
+ - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: '0'
41
+ version: '10.0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: oauth2
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -84,18 +85,18 @@ dependencies:
84
85
  name: faraday_middleware
85
86
  requirement: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - "~>"
88
+ - - ">="
88
89
  - !ruby/object:Gem::Version
89
- version: 0.9.0
90
+ version: '0'
90
91
  type: :runtime
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - "~>"
95
+ - - ">="
95
96
  - !ruby/object:Gem::Version
96
- version: 0.9.0
97
+ version: '0'
97
98
  - !ruby/object:Gem::Dependency
98
- name: rash
99
+ name: faraday_middleware-multi_json
99
100
  requirement: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - ">="
@@ -109,7 +110,7 @@ dependencies:
109
110
  - !ruby/object:Gem::Version
110
111
  version: '0'
111
112
  - !ruby/object:Gem::Dependency
112
- name: oj
113
+ name: rash
113
114
  requirement: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="
@@ -139,11 +140,13 @@ dependencies:
139
140
  description: Ruby wrapper for SEOshop API - written by Yotpo
140
141
  email:
141
142
  - nimrod@yotpo.com
143
+ - vlad@yotpo.com
142
144
  executables: []
143
145
  extensions: []
144
146
  extra_rdoc_files: []
145
147
  files:
146
148
  - ".gitignore"
149
+ - ".travis.yml"
147
150
  - Gemfile
148
151
  - Gemfile.lock
149
152
  - LICENSE.txt
@@ -183,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
186
  version: '0'
184
187
  requirements: []
185
188
  rubyforge_project:
186
- rubygems_version: 2.5.1
189
+ rubygems_version: 2.6.8
187
190
  signing_key:
188
191
  specification_version: 4
189
192
  summary: Ruby wrapper for SEOshop API - written by Yotpo