@@ -5,8 +5,8 @@ defmodule Diff.Storage.GCS do
55
66 @ gs_xml_url "https://storage.googleapis.com"
77
8- def get_diff ( package , from_version , to_version , diff_id ) do
9- with { :ok , hash } <- combined_checksum ( package , from_version , to_version ) ,
8+ def get_diff ( package , from_version , to_version , diff_id , opts \\ [ ] ) do
9+ with { :ok , hash } <- combined_checksum ( package , from_version , to_version , opts ) ,
1010 url = url ( diff_key ( package , from_version , to_version , hash , diff_id ) ) ,
1111 { :ok , 200 , _headers , body } <-
1212 Diff.HTTP . retry ( "gs" , fn -> Diff.HTTP . get ( url , headers ( ) ) end ) do
@@ -25,8 +25,8 @@ defmodule Diff.Storage.GCS do
2525 end
2626 end
2727
28- def put_diff ( package , from_version , to_version , diff_id , diff_data ) do
29- with { :ok , hash } <- combined_checksum ( package , from_version , to_version ) ,
28+ def put_diff ( package , from_version , to_version , diff_id , diff_data , opts \\ [ ] ) do
29+ with { :ok , hash } <- combined_checksum ( package , from_version , to_version , opts ) ,
3030 url = url ( diff_key ( package , from_version , to_version , hash , diff_id ) ) ,
3131 { :ok , 200 , _headers , _body } <-
3232 Diff.HTTP . retry ( "gs" , fn -> Diff.HTTP . put ( url , headers ( ) , diff_data ) end ) do
@@ -42,10 +42,10 @@ defmodule Diff.Storage.GCS do
4242 end
4343 end
4444
45- def list_diffs ( package , from_version , to_version ) do
46- case get_metadata ( package , from_version , to_version ) do
45+ def list_diffs ( package , from_version , to_version , opts \\ [ ] ) do
46+ case get_metadata ( package , from_version , to_version , opts ) do
4747 { :ok , % { total_diffs: total_diffs } } ->
48- diff_ids = 0 .. ( total_diffs - 1 ) |> Enum . map ( & "diff- #{ & 1 } " )
48+ diff_ids = diff_ids ( total_diffs )
4949 { :ok , diff_ids }
5050
5151 { :error , :not_found } ->
@@ -56,8 +56,8 @@ defmodule Diff.Storage.GCS do
5656 end
5757 end
5858
59- def get_metadata ( package , from_version , to_version ) do
60- with { :ok , hash } <- combined_checksum ( package , from_version , to_version ) ,
59+ def get_metadata ( package , from_version , to_version , opts \\ [ ] ) do
60+ with { :ok , hash } <- combined_checksum ( package , from_version , to_version , opts ) ,
6161 url = url ( metadata_key ( package , from_version , to_version , hash ) ) ,
6262 { :ok , 200 , _headers , body } <-
6363 Diff.HTTP . retry ( "gs" , fn -> Diff.HTTP . get ( url , headers ( ) ) end ) do
@@ -79,8 +79,8 @@ defmodule Diff.Storage.GCS do
7979 end
8080 end
8181
82- def put_metadata ( package , from_version , to_version , metadata ) do
83- with { :ok , hash } <- combined_checksum ( package , from_version , to_version ) ,
82+ def put_metadata ( package , from_version , to_version , metadata , opts \\ [ ] ) do
83+ with { :ok , hash } <- combined_checksum ( package , from_version , to_version , opts ) ,
8484 url = url ( metadata_key ( package , from_version , to_version , hash ) ) ,
8585 { :ok , json } <- Jason . encode ( metadata ) ,
8686 { :ok , 200 , _headers , _body } <-
@@ -106,12 +106,18 @@ defmodule Diff.Storage.GCS do
106106 [ { "authorization" , "#{ token . type } #{ token . token } " } ]
107107 end
108108
109- def combined_checksum ( package , from , to ) do
109+ def combined_checksum ( package , from , to , opts \\ [ ] ) do
110110 with { :ok , checksums } <- Diff.Hex . get_checksums ( package , [ from , to ] ) do
111- { :ok , :erlang . phash2 ( { Application . get_env ( :diff , :cache_version ) , checksums } ) }
111+ { :ok , :erlang . phash2 ( Diff.Storage . cache_key ( checksums , opts ) ) }
112112 end
113113 end
114114
115+ defp diff_ids ( 0 ) , do: [ ]
116+
117+ defp diff_ids ( total_diffs ) do
118+ 0 .. ( total_diffs - 1 ) |> Enum . map ( & "diff-#{ & 1 } " )
119+ end
120+
115121 defp diff_key ( package , from_version , to_version , hash , diff_id ) do
116122 "diffs/#{ package } -#{ from_version } -#{ to_version } -#{ hash } -#{ diff_id } .json"
117123 end
0 commit comments