About RAPI
Welcome to the RAPI project. The RAPI gem is an FFI wrapper for the Remote API [RAPI], providing an intuitive Ruby interface for interacting with mobile devices connected via ActiveSync. RAPI is an excellent tool for Windows Mobile developers in need of general automation, or better yet, rolling their own integration test suite in Ruby.
How to Install RAPI
gem install rapi
How to Use RAPI
require 'rapi'
# Create a new RAPI session
RAPI.connect
# Enumerate some files/directories
# Inspect files with the usual suspects (#size, #mtime, #atime, #ctime, etc)
some_file = RAPI.glob('\SDMMCDisk\*').first
some_file.mtime #=> 2012-02-14 13:50:47 -0600
# Move/delete/copy/download/upload
RAPI.copy(some_file.path, File.join(some_file.path, '.backup'))
RAPI.move(some_file.name, '\SDMMCDisk\some_other_file_name')
RAPI.download(some_file.name, 'C:\Users\Charles\Desktop\local_copy')
RAPI.upload('C:\Users\Charles\Desktop\local_copy', '\SDMMCDisk\some_other_file_name', true) # overwrite existing
RAPI.delete(some_file.name)
# Most of the ::File interface is implemented
temp_file = File.join(RAPI.tmp, "temp.txt")
RAPI.open(temp_file, "a+b") do |f|
# A bunch of random use cases:
f.pos = 0
while buffer=f.read(10)
print buffer
end
f.pos = f.size / 2
f << "Hello, world!"
f.truncate(10)
end
# Registry access (similar to Win32::Registry)
RAPI::Registry::HKEY_CURRENT_USER.open("Software") do |key|
key.each_value do |subkey, type, data|
puts [subkey, type, data].inspect
end
end
# Create a process
RAPI.exec "explorer.exe"
# Disconnect
RAPI.disconnect
Contributing
These things would be awesome to have:
- Librapi support (for *nix support)
- RAPI2 support
- IRAPIStream for streaming CeRapiInvoke
Copyright
Copyright (c) 2011 Charles Strahan. See LICENSE.txt for further details.