plasso 1.0.1

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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/plasso.rb +4 -0
  3. data/lib/plasso/flexkit.rb +141 -0
  4. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5ec51e8005e3ccfa8fd8bd63dac189a35b089101
4
+ data.tar.gz: 6e67a58c8c1d1f7f2966aacb53fd649ce14bc56e
5
+ SHA512:
6
+ metadata.gz: 15b8f096c3ca8e802c40e19b1837bf23ee4adddf8fad7cf708a35ddf03bcf7d8684f40accfe2ecce8c4fc608032becb605f0420a3537ca663f010bc4ba11e98c
7
+ data.tar.gz: f302c7605d112b9dad0d4c0b1f03a3bdf6ea3db28688a497e54cdf4177166e746c6ea36ce4e89dc877d03bab6ec4728f921c205b62e14a1cd8c261fa48ab79e7
@@ -0,0 +1,4 @@
1
+ module Plasso
2
+ end
3
+
4
+ require 'plasso/flexkit'
@@ -0,0 +1,141 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'uri'
4
+
5
+ def send_request(method, path, data)
6
+ host = 'https://plasso.com'
7
+
8
+ uri = URI("#{host}#{path}")
9
+ http = Net::HTTP.new(uri.host, uri.port)
10
+ request = nil
11
+ if method == 'POST'
12
+ request = Net::HTTP::Post.new(uri.request_uri)
13
+ elsif method == 'DELETE'
14
+ request = Net::HTTP::Delete.new(uri.request_uri)
15
+ end
16
+
17
+ request.body = JSON.generate(data)
18
+ request['Content-Type'] = 'application/json'
19
+
20
+ http.request(request) do |response|
21
+ return JSON.parse(response.body)
22
+ end
23
+
24
+ end
25
+
26
+ GRAPHQL_GET_DATA = <<~HEREDOC
27
+ query getMember($token: String) {
28
+ member(token: $token) {
29
+ id,
30
+ name,
31
+ email,
32
+ ccType,
33
+ ccLast4,
34
+ shippingInfo {
35
+ name
36
+ address
37
+ city
38
+ state
39
+ zip
40
+ country
41
+ },
42
+ dataFields {
43
+ id,
44
+ value
45
+ },
46
+ plan {
47
+ alias
48
+ }
49
+ }
50
+ }
51
+ HEREDOC
52
+
53
+ module Plasso
54
+ module Flexkit
55
+ class Member
56
+ def initialize(public_key, token)
57
+ @public_key = public_key
58
+ @token = token
59
+ end
60
+
61
+ def update_settings(request)
62
+ request['token'] = @token
63
+ request['public_key'] = @public_key
64
+ send_request("POST", "/api/services/user?action=settings", request)
65
+ end
66
+
67
+ def update_credit_card(request)
68
+ request['token'] = @token
69
+ request['public_key'] = @public_key
70
+ send_request("POST", "/api/services/user?action=cc", request)
71
+ end
72
+
73
+ def delete
74
+ send_request("DELETE", "/api/service/user?action=cancel", {"public_key" => @public_key, "token" => @token})
75
+ end
76
+
77
+ def get_data
78
+ request = {
79
+ "query" => GRAPHQL_GET_DATA,
80
+ "variables" => {
81
+ "token" => @token
82
+ }
83
+ }
84
+
85
+ response = send_request("POST", "/graphql", request)
86
+
87
+ if response['errors']
88
+ raise response['errors'][0]['message']
89
+ end
90
+
91
+ member_data = {
92
+ "credit_card_last4" => response['data']['member']['ccLast4'],
93
+ "credit_card_type" => response['data']['member']['ccType'],
94
+ "email" => response['data']['member']['email'],
95
+ "id" => response['data']['member']['id'],
96
+ "name" => response['data']['member']['name'],
97
+ "plan" => response['data']['member']['plan']['alias']
98
+ }
99
+
100
+ if (response['data']['member']['shippingInfo'])
101
+ member_data['shipping_name'] = response['data']['member']['shippingInfo']['name']
102
+ member_data['shipping_address'] = response['data']['member']['shippingInfo']['address']
103
+ member_data['shipping_city'] = response['data']['member']['shippingInfo']['city']
104
+ member_data['shipping_state'] = response['data']['member']['shippingInfo']['state']
105
+ member_data['shipping_zip'] = response['data']['member']['shippingInfo']['zip']
106
+ member_data['shipping_country'] = response['data']['member']['shippingInfo']['country']
107
+ end
108
+
109
+ if (response['data']['member']['dataFields'])
110
+ member_data['data_fields'] = response['data']['member']['dataFields']
111
+ end
112
+
113
+ return member_data
114
+ end
115
+
116
+ def log_out()
117
+ send_request("POST", "/api/service/logout", {"public_key" => @public_key, "token" => @token});
118
+ end
119
+ end
120
+
121
+ def self.create_payment(request)
122
+ send_request("POST", "/api/payments", request)
123
+ end
124
+
125
+ def self.log_in(request)
126
+ response = send_request("POST", "/api/service/login", request)
127
+
128
+ return Member.new(request['public_key'], response['token'])
129
+ end
130
+
131
+ def self.create_subscription(request)
132
+ request['subscription_for'] = 'space'
133
+
134
+ response = send_request("POST", "/api/subscriptions", request)
135
+
136
+ return Member.new(request['public_key'], response['token'])
137
+ end
138
+
139
+ private_constant :Member
140
+ end
141
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: plasso
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michael Osuna
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This library includes access to all supported Plasso functionality
14
+ email: mike@plasso.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/plasso.rb
20
+ - lib/plasso/flexkit.rb
21
+ homepage: http://rubygems.org/gems/plasso
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.6.12
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Plasso ruby libraries
45
+ test_files: []