@@ -5,6 +5,7 @@ class OnePassword < Resolver
5
5
OnePasswordNotAbleToAuthenticate = Class . new ( StandardError )
6
6
OnePasswordBinaryNotFound = Class . new ( StandardError )
7
7
OnePasswordInvalidResponse = Class . new ( StandardError )
8
+ OnePasswordInvalidVersion = Class . new ( StandardError )
8
9
9
10
array_resolver
10
11
@@ -49,8 +50,9 @@ def login_item(data)
49
50
50
51
def op_get_item ( item , vault )
51
52
validate_op_installed?
52
- item = %x(op get item --vault='#{ vault } ' '#{ item } ' 2>&1)
53
- item if validate_response? ( item )
53
+
54
+ get_item ( item , vault , get_version )
55
+
54
56
end
55
57
56
58
def create_struct ( title , vault )
@@ -69,7 +71,13 @@ def get_password(title, vault)
69
71
end
70
72
71
73
def get_secure_note ( title , vault )
72
- create_struct ( title , vault ) . details . notesPlain
74
+ version = get_version
75
+ if version . start_with? ( "1" )
76
+ return create_struct ( title , vault ) . details . notesPlain
77
+ end
78
+ if version . start_with? ( "2" )
79
+ create_struct ( title , vault ) . fields . first . value
80
+ end
73
81
end
74
82
75
83
def get_items ( params )
@@ -80,6 +88,21 @@ def get_items(params)
80
88
return get_secure_note ( params [ 'title' ] , params [ 'vault' ] )
81
89
end
82
90
end
91
+
92
+ def get_version
93
+ %x(op --version) . strip
94
+ end
95
+
96
+ def get_item ( item , vault , version )
97
+ case version
98
+ when version . start_with? ( "1" )
99
+ %x(op get item --vault='#{ vault } ' '#{ item } ' 2>&1)
100
+ when version . start_with? ( "2" )
101
+ %x(op item get --vault='#{ vault } ' '#{ item } ' --format json 2>&1)
102
+ else
103
+ raise OnePasswordInvalidVersion , "Unsupported version of 1Password: #{ version } "
104
+ end
105
+ end
83
106
end
84
107
end
85
108
end
0 commit comments