packages feed

gopro-plus 0.3.1.1 → 0.4.0.0

raw patch · 3 files changed

+75/−13 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ GoPro.Plus.Media: SidecarFile :: Int -> String -> String -> String -> String -> SidecarFile
+ GoPro.Plus.Media: [_file_head] :: File -> String
+ GoPro.Plus.Media: [_file_transforms] :: File -> Maybe [String]
+ GoPro.Plus.Media: [_sidecar_fps] :: SidecarFile -> Int
+ GoPro.Plus.Media: [_sidecar_head] :: SidecarFile -> String
+ GoPro.Plus.Media: [_sidecar_label] :: SidecarFile -> String
+ GoPro.Plus.Media: [_sidecar_type] :: SidecarFile -> String
+ GoPro.Plus.Media: [_sidecar_url] :: SidecarFile -> String
+ GoPro.Plus.Media: [_sprite_heads] :: Sprite -> [String]
+ GoPro.Plus.Media: [_var_head] :: Variation -> String
+ GoPro.Plus.Media: [_var_transforms] :: Variation -> Maybe [String]
+ GoPro.Plus.Media: class HasMediaLabel c
+ GoPro.Plus.Media: class HasMediaType c
+ GoPro.Plus.Media: class HasMediaURL c
+ GoPro.Plus.Media: data SidecarFile
+ GoPro.Plus.Media: file_head :: Lens' File String
+ GoPro.Plus.Media: file_transforms :: Lens' File (Maybe [String])
+ GoPro.Plus.Media: instance Data.Aeson.Types.FromJSON.FromJSON GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GHC.Generics.Generic GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GHC.Show.Show GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaLabel GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaLabel GoPro.Plus.Media.Variation
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaType GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaType GoPro.Plus.Media.Variation
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaURL GoPro.Plus.Media.File
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaURL GoPro.Plus.Media.SidecarFile
+ GoPro.Plus.Media: instance GoPro.Plus.Media.HasMediaURL GoPro.Plus.Media.Variation
+ GoPro.Plus.Media: media_label :: HasMediaLabel c => Lens' c String
+ GoPro.Plus.Media: media_type :: HasMediaType c => Lens' c String
+ GoPro.Plus.Media: media_url :: HasMediaURL c => Lens' c String
+ GoPro.Plus.Media: sidecar_fps :: Lens' SidecarFile Int
+ GoPro.Plus.Media: sidecar_head :: Lens' SidecarFile String
+ GoPro.Plus.Media: sidecar_label :: Lens' SidecarFile String
+ GoPro.Plus.Media: sidecar_type :: Lens' SidecarFile String
+ GoPro.Plus.Media: sidecar_url :: Lens' SidecarFile String
+ GoPro.Plus.Media: sprite_heads :: Lens' Sprite [String]
+ GoPro.Plus.Media: var_head :: Lens' Variation String
+ GoPro.Plus.Media: var_transforms :: Lens' Variation (Maybe [String])
- GoPro.Plus.Media: File :: String -> Int -> Int -> Int -> Int -> String -> File
+ GoPro.Plus.Media: File :: String -> Int -> Int -> Int -> Int -> Maybe [String] -> String -> String -> File
- GoPro.Plus.Media: FileStuff :: [File] -> [Variation] -> [Sprite] -> [Value] -> FileStuff
+ GoPro.Plus.Media: FileStuff :: [File] -> [Variation] -> [Sprite] -> [SidecarFile] -> FileStuff
- GoPro.Plus.Media: Sprite :: Double -> SpriteFrame -> Int -> Int -> String -> [String] -> Sprite
+ GoPro.Plus.Media: Sprite :: Double -> SpriteFrame -> Int -> Int -> String -> [String] -> [String] -> Sprite
- GoPro.Plus.Media: Variation :: Int -> Int -> String -> String -> String -> String -> Variation
+ GoPro.Plus.Media: Variation :: Int -> Int -> String -> String -> Maybe [String] -> String -> String -> String -> Variation
- GoPro.Plus.Media: [_sidecar_files] :: FileStuff -> [Value]
+ GoPro.Plus.Media: [_sidecar_files] :: FileStuff -> [SidecarFile]
- GoPro.Plus.Media: sidecar_files :: Lens' FileStuff [Value]
+ GoPro.Plus.Media: sidecar_files :: Lens' FileStuff [SidecarFile]

Files

gopro-plus.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 1b17e91a409617284416087aef77c7dfc75822817835c9a0faeae5f3a9b8709b+-- hash: c4a43a2cafe660b7470ec32c0dfa673a4c94724aaed4a35b1b1a10ae30f0cf46  name:           gopro-plus-version:        0.3.1.1+version:        0.4.0.0 synopsis:       GoPro Plus Client API. description:    Please see the README on GitHub at <https://github.com/dustin/gopro-plus#readme> category:       Web
src/GoPro/Plus/Media.hs view
@@ -26,13 +26,15 @@   medium_ready_to_view, medium_source_duration, medium_type,   medium_token, medium_width, medium_height,   Listing(..), media, pages,+  HasMediaURL(..), HasMediaLabel(..), HasMediaType(..),   File(..), file_camera_position, file_height, file_width,-  file_item_number, file_orientation, file_url,+  file_item_number, file_orientation, file_head, file_url, file_transforms,   Variation(..), var_height, var_width, var_label, var_quality,-  var_type, var_url,+  var_type, var_transforms, var_head, var_url,   SpriteFrame(..), frame_count, frame_height, frame_width,   Sprite(..), sprite_fps, sprite_frame, sprite_height, sprite_width,-  sprite_type, sprite_urls,+  sprite_type, sprite_heads, sprite_urls,+  SidecarFile(..), sidecar_fps, sidecar_label, sidecar_type, sidecar_head, sidecar_url,   FileStuff(..), files, variations, sprites, sidecar_files,   FileInfo(..), fileStuff, filename,   Error(..), error_reason, error_code, error_description, error_id,@@ -194,36 +196,54 @@           then dig (n + 1) m'           else pure m' +class HasMediaURL c where+  media_url :: Lens' c String +class HasMediaLabel c where+  media_label :: Lens' c String++class HasMediaType c where+  media_type :: Lens' c String+ data File = File     { _file_camera_position :: String     , _file_height          :: Int     , _file_width           :: Int     , _file_item_number     :: Int     , _file_orientation     :: Int+    , _file_transforms      :: Maybe [String]+    , _file_head            :: String     , _file_url             :: String     }     deriving (Generic, Show)  makeLenses  ''File +instance HasMediaURL File where media_url = file_url+ instance FromJSON File where   parseJSON = genericParseJSON defaultOptions {     fieldLabelModifier = dropPrefix "_file_"     }  data Variation = Variation-    { _var_height  :: Int-    , _var_width   :: Int-    , _var_label   :: String-    , _var_quality :: String-    , _var_type    :: String-    , _var_url     :: String+    { _var_height     :: Int+    , _var_width      :: Int+    , _var_label      :: String+    , _var_quality    :: String+    , _var_transforms :: Maybe [String]+    , _var_type       :: String+    , _var_head       :: String+    , _var_url        :: String     }     deriving (Generic, Show)  makeLenses ''Variation +instance HasMediaURL Variation where media_url = var_url+instance HasMediaLabel Variation where media_label = var_label+instance HasMediaType Variation where media_type = var_type+ instance FromJSON Variation where   parseJSON = genericParseJSON defaultOptions {   fieldLabelModifier = dropPrefix "_var_"@@ -249,6 +269,7 @@     , _sprite_height :: Int     , _sprite_width  :: Int     , _sprite_type   :: String+    , _sprite_heads  :: [String]     , _sprite_urls   :: [String]     }     deriving (Generic, Show)@@ -260,11 +281,30 @@     fieldLabelModifier = dropPrefix "_sprite_"   } +data SidecarFile = SidecarFile+  { _sidecar_fps   :: Int+  , _sidecar_label :: String+  , _sidecar_type  :: String+  , _sidecar_head  :: String+  , _sidecar_url   :: String+  } deriving (Generic, Show)++makeLenses ''SidecarFile++instance HasMediaURL SidecarFile where media_url = sidecar_url+instance HasMediaLabel SidecarFile where media_label = sidecar_label+instance HasMediaType SidecarFile where media_type = sidecar_type++instance FromJSON SidecarFile where+  parseJSON = genericParseJSON defaultOptions {+    fieldLabelModifier = dropPrefix "_sidecar_"+  }+ data FileStuff = FileStuff     { _files         :: [File]     , _variations    :: [Variation]     , _sprites       :: [Sprite]-    , _sidecar_files :: [Value]+    , _sidecar_files :: [SidecarFile]     }     deriving (Generic, Show) 
test/Spec.hs view
@@ -26,9 +26,31 @@   assertEqual (show l) [Video, Photo] (l ^.. _Just . media . folded . medium_type)   assertEqual (show l) ["62NzWRrpPXm7o", "EDavpqr4GVe8O"] (l ^.. _Just . media . folded . medium_id) +testFileInfo :: Assertion+testFileInfo = do+  fi <- J.decode <$> BL.readFile "test/mediaex.json" :: IO (Maybe FileInfo)+  assertEqual (show fi) (Just "G0000004.JPG") (fi ^? _Just . filename)+  let Just fs = fi ^? _Just . fileStuff+  assertEqual (show fs) ["http://a/", "http://aprime/"] (fs ^.. files . folded . media_url)+  assertEqual (show fs) ["http://b/"] (fs ^.. sidecar_files . folded . media_url)+  assertEqual (show fs) ["http://d/", "http://e/", "http://f/"] (fs ^.. variations . folded . media_url)++  assertEqual (show fs) ["ziplabel", "timelapse_video", "high_res_proxy_mp4", "mp4_low"] (+    mconcat [fs ^.. sidecar_files . folded . media_label, fs ^.. variations . folded . media_label])++  assertEqual (show fs) ["zip", "mp4", "mp4", "mp4"] (+    mconcat [fs ^.. sidecar_files . folded . media_type, fs ^.. variations . folded . media_type])++  assertEqual (show fs) [["antishake", "horizon"],+                         ["proshake", "verizon"]] (fs ^.. variations . folded . var_transforms . _Just)++  assertEqual (show fs) "intoalightpost" (fs ^. files . folded . file_transforms . folded . folded)++ tests :: [TestTree] tests = [-    testCase "Parsing" testSearchParser+    testCase "Parsing" testSearchParser,+    testCase "FileInfo" testFileInfo     ]  main :: IO ()