api4over 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 78dd7b5dbe8ea20726aed3077f9412d5a57d0650f63b76229ddbb80207c207b3
4
+ data.tar.gz: bf09872373848011882245d3410534925f4f0905ee1dfe780ab8e8043c5a3733
5
+ SHA512:
6
+ metadata.gz: 20a3a8aa820d867967d9f8cdfb84fa3478d912e9ffb709997f860b7de171607b5998b8c8eef2733ae193d8ea85f281187126c97ff21262f51dcad3eafd9a754b
7
+ data.tar.gz: c802820a70339e64cce364667b28fce4e5ce4ef20238750e1aa630d4c778b49944f8eb0db8fa91c9796da5e290d6a919e551a0d499e34e2a57680212c56110a6
@@ -0,0 +1,70 @@
1
+ require 'digest'
2
+ require 'openssl'
3
+
4
+ module Api4Over
5
+ class Client
6
+ require 'api4over/client/no_service_url_error'
7
+ require 'api4over/print_products'
8
+
9
+ def initialize(private_key:, public_key:, mode: 'test')
10
+ @api_key = public_key
11
+ @private_key = Digest::SHA256.hexdigest(private_key)
12
+ @signature = OpenSSL::HMAC.hexdigest('sha256', @private_key, "GET")
13
+ @mode = mode
14
+ end
15
+
16
+ def get_products(options={})
17
+ Api4Over::PrintProducts.new.retrieve_products(
18
+ path: "/printproducts/products",
19
+ parameters: build_parameters_for_product(options),
20
+ mode: @mode
21
+ )
22
+ end
23
+
24
+ def get_categories(options={})
25
+ Api4Over::PrintProducts.new.retrieve_categories(
26
+ path: "/printproducts/categories",
27
+ parameters: build_parameters_for_product(options),
28
+ mode: @mode
29
+ )
30
+ end
31
+
32
+ def get_option_groups(options={})
33
+ Api4Over::PrintProducts.new.retrieve_option_groups(
34
+ path: "/printproducts/optiongroups",
35
+ parameters: build_parameters_for_product(options),
36
+ mode: @mode
37
+ )
38
+ end
39
+
40
+ def get_product_feeds(options={})
41
+ Api4Over::PrintProducts.new.retrieve_product_feeds(
42
+ path: "/printproducts/productsfeed",
43
+ parameters: build_parameters_for_product(options),
44
+ mode: @mode
45
+ )
46
+ end
47
+
48
+ def get_quantity_discounts(options={})
49
+ return {"status"=>"error", "status_code"=>400, "status_text"=>"Bad Request", "current_content"=>"", "message"=>"Product UUID parameter is missing"} unless options[:product_uuid]
50
+ Api4Over::PrintProducts.new.retrieve_quantity_discounts(
51
+ path: "/printproducts/products/#{options[:product_uuid]}/quantitydiscounts",
52
+ parameters: build_parameters_for_product(options),
53
+ mode: @mode
54
+ )
55
+ end
56
+
57
+ private
58
+
59
+ def build_parameters_for_product(options={})
60
+ default_options = {
61
+ query:
62
+ {
63
+ signature: @signature,
64
+ apikey: @api_key
65
+ }.merge!(options)
66
+ }
67
+ default_options
68
+ end
69
+ end
70
+ end
@@ -0,0 +1 @@
1
+ class Api4Over::Client::NoServiceUrlError < StandardError; end
@@ -0,0 +1,41 @@
1
+ require 'httparty'
2
+ require 'digest'
3
+ require 'openssl'
4
+
5
+ module Api4Over
6
+ class PrintProducts
7
+
8
+ include HTTParty
9
+
10
+
11
+ def retrieve_products(path:, parameters: {}, mode: 'test')
12
+ self.class.base_uri (mode == 'test' ? 'https://sandbox-api.4over.com' : 'https://api.4over.com')
13
+ response = self.class.get(path, parameters)
14
+ response.parsed_response
15
+ end
16
+
17
+ def retrieve_categories(path:, parameters: {}, mode: 'test')
18
+ self.class.base_uri (mode == 'test' ? 'https://sandbox-api.4over.com' : 'https://api.4over.com')
19
+ response = self.class.get(path, parameters)
20
+ response.parsed_response
21
+ end
22
+
23
+ def retrieve_option_groups(path:, parameters: {}, mode: 'test')
24
+ self.class.base_uri (mode == 'test' ? 'https://sandbox-api.4over.com' : 'https://api.4over.com')
25
+ response = self.class.get(path, parameters)
26
+ response.parsed_response
27
+ end
28
+
29
+ def retrieve_product_feeds(path:, parameters: {}, mode: 'test')
30
+ self.class.base_uri (mode == 'test' ? 'https://sandbox-api.4over.com' : 'https://api.4over.com')
31
+ response = self.class.get(path, parameters)
32
+ response.parsed_response
33
+ end
34
+
35
+ def retrieve_quantity_discounts(path:, parameters: {}, mode: 'test')
36
+ self.class.base_uri (mode == 'test' ? 'https://sandbox-api.4over.com' : 'https://api.4over.com')
37
+ response = self.class.get(path, parameters)
38
+ response.parsed_response
39
+ end
40
+ end
41
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: api4over
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hamza Azhar
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.4
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.1.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 13.0.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 13.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.4.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.4.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: httparty
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.18.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.18.0
83
+ description: As North America’s leading trade printer, we at 4over pride ourselves
84
+ on providing our partners with world class quality, value and customer service.
85
+ We’ve developed the 4over API as an efficient and affordable way for you to provide
86
+ premium quality print products to your customers, saving you time and money.
87
+ email:
88
+ - hamzafastian@gmail.com
89
+ executables: []
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - lib/api4over.rb
94
+ - lib/api4over/client/no_service_url_error.rb
95
+ - lib/api4over/print_products.rb
96
+ homepage: https://github.com/hamza-azhar/api4over-client
97
+ licenses:
98
+ - Nonstandard
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubygems_version: 3.0.0
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: A Ruby client for 4OverAPI
119
+ test_files: []