semcon 0.0.1 → 0.0.3

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/semcon/basic.rb +27 -0
  4. data/lib/semcon.rb +61 -19
  5. metadata +11 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3980361cb218919f5d7b87ffbbe03ee325c5d4e807f5da14ec474e65f120faf
4
- data.tar.gz: 987a4b6112b196eb4409ea67c7589aef6d24efb12002ba8050105d3181bb62da
3
+ metadata.gz: 19abdab65b654717fba4f442e5163344e7653856b7bf846ba088ff6c15d53814
4
+ data.tar.gz: 90bc4e2f15ea7330ce7b3781ed49eb8c4bef7be02b36c2e64eb96cfe510b204c
5
5
  SHA512:
6
- metadata.gz: dcf9ab7da19da4f1e7ca478f39c145b2cc95ca1ce9c84f3263c9b011da0e900df1c9852a5fd7fd7c977eddb4aefb04b65ac86488ac269618def615264ba5e949
7
- data.tar.gz: 416a13437f6f51d3385bb15b9a2cad25c97845b55070b5239c408fe4dbccd8e5f3a73bf22fe741316aba1af7a5f59cddd6457bae98c995bbc8945743dd5aa3ef
6
+ metadata.gz: 34fed12639aa8aa47c84e29e4cbdfeb8eea85b5dadc6fa29ba4141976e4532284dcf30273d1d8a539913b01d4728d278d498453c8480665e8c6a4f282faa6e5a
7
+ data.tar.gz: ddb772fcdbd1e4ee40b3f743f213b5be85c2cf5c9ca335471a5e9cedea4f8e9f2a95a902e961e8706f58fdbc6eb7ac6ab33122075f5d894061c5ee0e2ed1184a
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.3
data/lib/semcon/basic.rb CHANGED
@@ -37,4 +37,31 @@ class Semcon
37
37
  return [result_url, ""]
38
38
  end
39
39
  end
40
+
41
+ # OAuth functions ---------------------------
42
+ def self.oauth_headers(token)
43
+ { 'Accept' => '*/*',
44
+ 'Content-Type' => 'application/json',
45
+ 'Authorization' => 'Bearer ' + token.to_s
46
+ }
47
+ end
48
+
49
+ def self.oauth_token(url, key, secret)
50
+ auth_url = url.to_s + "/oauth/token"
51
+ response_nil = false
52
+ begin
53
+ response = HTTParty.post(auth_url,
54
+ headers: { 'Content-Type' => 'application/json' },
55
+ body: { client_id: key,
56
+ client_secret: secret,
57
+ grant_type: "client_credentials" }.to_json )
58
+ rescue => e
59
+ return [nil, e.message.to_s]
60
+ end
61
+ if !response_nil && !response.body.nil? && response.code == 200
62
+ return [response.parsed_response["access_token"].to_s, ""]
63
+ else
64
+ return ["", response.code.to_s]
65
+ end
66
+ end
40
67
  end
data/lib/semcon.rb CHANGED
@@ -7,14 +7,21 @@ require 'semcon/basic'
7
7
 
8
8
  class Semcon
9
9
  def self.write(payload, target, options)
10
- record_dri = Oydid.hash(Oydid.canonical({"content": payload, "meta": {}}))
11
- # puts "Record DRI: " + record_dri.to_s
10
+ write_payload = {"data": payload, "meta": {}}
11
+ if !options[:meta].nil?
12
+ write_payload[:meta] = options[:meta]
13
+ end
14
+ record_dri = Oydid.hash(Oydid.canonical(write_payload))
15
+
16
+ puts "Payload (semconlib)"
17
+ puts write_payload.to_json
18
+ puts "DRI (semconlib): " + record_dri.to_s
19
+
12
20
  target_url, err_msg = host_from_did(target, "DecentralizedWebNode", options)
13
21
  if target_url.nil? || err_msg != ""
22
+ puts "Error: " + err_msg.to_s
14
23
  return [nil, err_msg]
15
24
  end
16
- # puts "Target URL: " + target_url.to_s
17
-
18
25
  content = [
19
26
  {
20
27
  "id": "#data",
@@ -25,39 +32,74 @@ class Semcon
25
32
  options[:location] = target_url
26
33
  options[:doc_location] = target_url
27
34
  options[:log_location] = target_url
28
- did, didDocument, revoc_log, l1, l2, r1, privateKey, revocationKey, did_old, log_old, msg = Oydid.generate_base(content, "", "create", options)
35
+ # did, didDocument, revoc_log, l1, l2, r1, privateKey, revocationKey, did_old, log_old, msg = Oydid.generate_base(content, "", "create", options)
36
+ did_doc, did_key, did_log, msg = Oydid.generate_base(content, "", "create", options)
37
+ did = did_doc[:did]
38
+ didDocument = did_doc[:didDocument]
39
+ did_old = did_doc[:did_old]
40
+ revoc_log = did_log[:revoc_log]
41
+ l1 = did_log[:l1]
42
+ l2 = did_log[:l2]
43
+ r1 = did_log[:r1]
44
+ log_old = did_log[:log_old]
45
+
29
46
  semcon_object = {}
30
- semcon_object["data"] = {"content": payload, "meta": {}}
47
+ semcon_object["data"] = write_payload
31
48
  semcon_object["did-document"] = didDocument
32
49
  semcon_object["did-log"] = [l1, l2]
33
50
  # puts "Write Object"
34
51
  # puts JSON.pretty_generate(semcon_object)
35
52
 
36
- retVal = HTTParty.post(target_url + "/api/data",
37
- headers: { 'Content-Type' => 'application/json' },
38
- body: semcon_object.to_json )
53
+ if options[:token].to_s == ""
54
+ retVal = HTTParty.post(target_url + "/api/data",
55
+ headers: { 'Content-Type' => 'application/json' },
56
+ body: semcon_object.to_json )
57
+ else
58
+ retVal = HTTParty.post(target_url + "/api/data",
59
+ headers: { 'Content-Type' => 'application/json',
60
+ 'Authorization' => 'Bearer ' + options[:token].to_s },
61
+ body: semcon_object.to_json )
62
+ end
39
63
 
40
64
  # puts "Response from dc-base:"
41
65
  # puts JSON.pretty_generate(retVal.parsed_response)
42
66
 
43
67
  err_msg = ""
44
- did = retVal.parsed_response["did"].to_s rescue nil
45
- if did.nil?
46
- err_msg = retVal.parsed_response["error"] rescue nil
68
+ did = ""
69
+ if retVal.code != 200
70
+ err_msg = retVal.parsed_response["error"] rescue ""
71
+ if err_msg == ""
72
+ err_msg = "error " + retVal.code.to_s
73
+ end
74
+ else
75
+ did = retVal.parsed_response["did"].to_s rescue nil
76
+ if did.nil?
77
+ err_msg = retVal.parsed_response["error"] rescue nil
78
+ end
47
79
  end
48
80
  return [did, err_msg]
49
81
  end
50
82
 
51
- def self.read(target, options)
52
- target_url, err_msg = host_from_did(target, "data", options)
53
- if target_url.nil? || err_msg != ""
54
- return [nil, err_msg]
55
- end
83
+ def self.read(target_url, options)
56
84
  dc_did = target_url.dup.split("?").first
57
85
  host_url, err_msg = host_from_did(dc_did, "DecentralizedWebNode", options)
58
86
  target_url = host_url.to_s + "/api/data?" + target_url.dup.split("?").last
59
- retVal = HTTParty.get(target_url)
60
- result = retVal.parsed_response
87
+ if options[:key_pwd].to_s != ""
88
+ options[:token] = Oydid.token_from_challenge(host_url, options[:key_pwd]) rescue ""
89
+ end
90
+ if options[:token].to_s == ""
91
+ retVal = HTTParty.get(target_url)
92
+ else
93
+ retVal = HTTParty.get(target_url,
94
+ headers: { 'Authorization' => 'Bearer ' + options[:token].to_s })
95
+ end
96
+ err_msg = ""
97
+ if retVal.code == 200
98
+ result = retVal.parsed_response
99
+ else
100
+ result = nil
101
+ err_msg = retVal.response.message
102
+ end
61
103
 
62
104
  return [result, err_msg]
63
105
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semcon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Fabianek
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-06-24 00:00:00.000000000 Z
10
+ date: 2026-08-19 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: httparty
@@ -16,28 +15,28 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 0.20.0
18
+ version: '0.21'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 0.20.0
25
+ version: '0.21'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: oydid
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: 0.4.2
32
+ version: 0.5.6
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: 0.4.2
39
+ version: 0.5.6
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rspec
43
42
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +52,6 @@ dependencies:
53
52
  - !ruby/object:Gem::Version
54
53
  version: '3.10'
55
54
  description: This gem provides the basic methods for managing Semantic Containers.
56
- email:
57
55
  executables: []
58
56
  extensions: []
59
57
  extra_rdoc_files: []
@@ -74,7 +72,6 @@ metadata:
74
72
  bug_tracker_uri: https://github.com/ownyourdata/semcon/issues
75
73
  homepage_uri: http://github.com/ownyourdata/semcon
76
74
  source_code_uri: http://github.com/ownyourdata/semcon/tree/main/ruby-gem
77
- post_install_message:
78
75
  rdoc_options: []
79
76
  require_paths:
80
77
  - lib
@@ -82,17 +79,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
79
  requirements:
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
- version: 2.5.7
82
+ version: 2.6.9
86
83
  required_rubygems_version: !ruby/object:Gem::Requirement
87
84
  requirements:
88
85
  - - ">="
89
86
  - !ruby/object:Gem::Version
90
87
  version: '0'
91
88
  requirements: []
92
- rubygems_version: 3.0.9
93
- signing_key:
89
+ rubygems_version: 4.0.15
94
90
  specification_version: 4
95
91
  summary: Semantic Container handling in Ruby.
96
92
  test_files:
97
- - spec/spec_helper.rb
98
93
  - spec/semcon_spec.rb
94
+ - spec/spec_helper.rb