mores_marvel 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6b1215cbbacd7538805935b32f1798e0b13c2316
4
+ data.tar.gz: 2381438dc747df997a19fe469ea84d392208184e
5
+ SHA512:
6
+ metadata.gz: 2753ec524b3fa9cd2704903bd62c31cf811e380f28839e98fab3d2752f0a7b0301390b0c65ffae046f135ab5e84ce5b8bb5981cf0e9dc652459a3aa4bb6e780e
7
+ data.tar.gz: 1a6aecc6d777050820a21191dd40f5803be08c0ed176df302e5bd04c2a7dddce4b6c1bfcf68c7e7a598273f01d614b3b2e7b24796c399cd7c176e4fffd488984
@@ -0,0 +1,35 @@
1
+ require 'rest_client'
2
+ require 'digest/md5'
3
+ require 'json'
4
+ require_relative 'resource'
5
+
6
+ module MoresMarvel
7
+ class Client
8
+ include MoresMarvel::Resource
9
+
10
+ class ServiceClientError < StandardError; end
11
+ def initialize config
12
+ @public_key = config[:public_key]
13
+ @private_key = config[:private_key]
14
+ @base_uri = config[:base_uri]
15
+ end
16
+
17
+ def get_resource(resource, filters = {})
18
+ api_end_point = "#{@base_uri}#{resource}"
19
+ url_params = filters.empty? ? security_hash : security_hash.merge(filters)
20
+ restructure_response RestClient.get(api_end_point, { params: url_params })
21
+ end
22
+
23
+ private
24
+ def security_hash
25
+ timestamp = Time.now.to_i.to_s
26
+ oauth_hash = Digest::MD5.hexdigest(timestamp+@private_key+@public_key)
27
+ { ts: timestamp, apikey: @public_key, hash: oauth_hash }
28
+ end
29
+
30
+ def restructure_response raw_data
31
+ response = JSON.parse(raw_data)
32
+ { code: response['code'], status: response['status'], data: response['data'] }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'client'
2
+
3
+ module MoresMarvel
4
+ MODELS = %w(characters creators comics events series stories).freeze
5
+ module Resource
6
+ # will be removed soon.
7
+ def get_characters
8
+ get_resource('/v1/public/characters')
9
+ end
10
+ # will be removed soon.
11
+ def get_character id
12
+ get_resource("/v1/public/characters/#{id}")
13
+ end
14
+
15
+ def fetch_all(model, filters = {})
16
+ get_resource("/v1/public/#{model}", filters) if MODELS.include?(model)
17
+ end
18
+
19
+ def fetch_by_id(model, id, filters = {})
20
+ get_resource("/v1/public/#{model}/#{id}", filters) if MODELS.include?(model)
21
+ end
22
+
23
+ def fetch_filtered_by(model_1, id, model_2, filters = {})
24
+ if MODELS.include?(model_1) && MODELS.include?(model_2) && !(model_1.eql?model_2)
25
+ get_resource("/v1/public/#{model_1}/#{id}/#{model_2}", filters)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module MoresMarvel
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,10 @@
1
+ require "mores_marvel/version"
2
+ require_relative 'mores_marvel/client'
3
+
4
+ module MoresMarvel
5
+ class << self
6
+ def new config
7
+ @client ||= MoresMarvel::Client.new config
8
+ end
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mores_marvel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Manoj more
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-05-20 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: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
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.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: Use this to play arround with Marvel resources
56
+ email:
57
+ - lettertomanojmore@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/mores_marvel.rb
63
+ - lib/mores_marvel/client.rb
64
+ - lib/mores_marvel/resource.rb
65
+ - lib/mores_marvel/version.rb
66
+ homepage: https://github.com/ManojmoreS/mores_marvel
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.4.5.1
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Ruby gem for Marvel API
90
+ test_files: []